在 OOP 中,有时你会看到类似这样的东西:
$memberID = $system->members->memberID();
我想知道 ->members->...
这部分是如何工作的?
例如,假设我有一个名为 $systems
的类,那么如何在它之后放置 ->members->
来运行成员类(class)?
我只知道如何按照以下方式做一些事情:
$system = new system();
$memberID = $system->memberID();
但我想知道如何做到这一点:
$system = new system();
$memberID = $system->members->memberID();
谢谢!
-- 更新-- 这是一个小更新,感谢所有帮助我的人!你们确实为我指明了正确的方向,实际上我对自己的问题有很好的答案! :) 感谢编辑此问题的版主,很抱歉我不熟悉 bbcode 语法。
我想要一些东西来自动创建新类,例如调用 ->members-> 将使用 __get() 自动包含,而不必手动放入诸如“new members()”之类的东西。我解释起来有点困难,但我希望你能了解它的基础知识。
无论如何,这是我使用的代码:
<? class system {
public function __get($name){
$file = 'lib/'.$name;
if(file_exists($file)){
require_once($file);
$classname = $name;
$this->$name = new $classname($this);
return $this->$name;
}else{
die('Class '.$name.' could not be loaded (tried to load class-file '.$file.')');
}
}
} ?>
现在,如果我要执行以下操作:
$system = new system();
$system->members->functionHere();
它会自动创建成员类的新实例并需要 lib 文件夹中的文件。
如果这违反了规则,那么我深表歉意。我只是想将此发布给在 Google 搜索时遇到此问题的任何人,因为我知道在使用 Google 搜索时我总是会登陆这里!
最佳答案
$system
变量包含一个对象,该对象具有名为 $members
的属性,该对象本身包含一个具有属性 $memberID
的对象/p>
$system = new system();
$system->members = new Members(); // or whatever it must be
$system->members->memberId();
关于php - 快速 OOP 问题 - PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5923148/