我读了一本关于OOP PHP的书,无法理解作者的意思:
class Registry {
/**
* Array of objects
*/
private $objects;
public function createAndStoreObject($object, $key) {
require_once($object.'.class.php');
$this->objects[$key] = new $object($this);
}
}
1)$ this-> objects [$ key] - 我们保存私有类数组值。 2)new $ object($ this) - 我不明白我们在哪里取对象$ object(如果这个数组)和$ this意思是什么意思?
答案 0 :(得分:2)
$class = 'Foo';
$foo = new $class;
与
相同$foo = new Foo;
这解释了new $object
的作用。虽然它实例化了$object
的新实例,但它正在将$this
传递给对象的构造函数。即它将对Registry
对象的引用传递给正在构造的对象。
答案 1 :(得分:0)
$ this引用范围内的当前对象,因此在您的情况下是Registry类,因此您可以使用$ this-> objects
调用类范围内的$ object变量答案 2 :(得分:0)
这是Registry Design Pattern的示例,它创建与Factory Design Pattern类似的对象。在此模式中,类只是创建您想要使用的对象,而不必知道它创建的对象类型。在您的示例中,createAndStoreObject
函数使用变量类名创建类的新实例。
例如,如果$object = 'Foo'
,则与:
require_once('Foo'.'.class.php');
$this->objects[$key] = new Foo($this);
传递给构造函数的$this
的含义是创建的所有对象都可以访问Registry对象