在OOP中,有时你会看到类似这样的:快速OOP的问题 - PHP
$memberID = $system->members->memberID();
我想知道和它在哪里->members->...
是如何运作的部分完全糊涂了?
例如,假设我有一个叫做$systems
的类,那么在它运行成员类后我怎么能把它放在->members->
之后呢?
我只知道如何相处的这行做一些事情:
$system = new system();
$memberID = $system->memberID();
但我想知道如何做到这一点:
$system = new system();
$memberID = $system->members->memberID();
谢谢!
- UPDATE - 这是一个小小的更新,感谢所有帮助过我的人!你们真的把我指向正确的方向,其实我对自己的问题有一个很好的答案! :)感谢编辑这个问题的版主,我很抱歉我不熟悉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上搜索时总是会出现在这里!
什么是downvote? – markus 2011-05-07 18:39:35
做错了什么? – Galen 2011-05-07 18:39:55
@Galen,的确如此! – markus 2011-05-07 18:40:56