在方法内创建对象的实例

时间:2014-03-15 20:07:04

标签: php

我读了一本关于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意思是什么意思?

3 个答案:

答案 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对象