簡體   English   中英

在方法內創建對象的實例

[英]Create an instance of an object inside a method

我讀了一本關於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意思是什么意思?

$class = 'Foo';
$foo   = new $class;

是相同的

$foo = new Foo;

這解釋了new $object作用。 雖然它實例化了$object的新實例,但它將$this傳遞給對象的構造函數。 即它將對Registry對象的引用傳遞給正在構造的對象。

$ this指的是范圍內的當前對象,所以在你的情況下是Registry類,所以你可以通過使用$ this->對象來調用你類范圍內的$ object變量

它是Registry Design Pattern的示例,它創建與Factory Design Pattern類似的對象。 在此模式中,類只是創建您想要使用的對象,而不必知道它創建的對象類型。 在您的示例中, createAndStoreObject函數使用變量類名創建類的新實例。

例如,如果$object = 'Foo' ,那么就是:

   require_once('Foo'.'.class.php');
   $this->objects[$key] = new Foo($this);

傳遞給構造函數的$this的含義是創建的所有對象都可以訪問Registry對象

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM