PHP - bu sınıfın bir örneğini döndürür bir işlev çağırarak bir sınıf başlatmak?

2 Cevap php
class foo(){

   function bar()
   {
     $classInstance = $this->createClassInstance($params);
     $result = $classInstance->getSomething();
   }

   function createClassInstance($params)
   {
     require 'path/to/class.php';
     $myClass = new Class;
     $myClass->acceptParams($params['1']);
     $myClass->acceptMoreParams($params['2']);
     .... lots more params
     return $myClass;
   }

}

Ben bir sınıf nesnesi döndüren bir yöntem çağırarak yeni bir sınıf başlatmak miyim? Söz sınıf parametrelerin çok var ve ben) (bar içinde bunu birden çok kez aramak gerekir bu yüzden bu şekilde yapmak için kıvrımlara olacağını düşündüm, ama ben o çalışma alamayan ve iyi + mümkün olup olmadığını kontrol etmek istiyorum İnanç?

2 Cevap

O fabrika sınıfı denir (Factory OO Design Pattern).

PHP içinde nasıl yapılması gerektiğini: http://www.php.net/manual/en/language.oop5.patterns.php

Senin tarif ettiğin ne düşünüyorsun Fabrika desen, ama sadece bir kurucu yaptığınız gibi sınıf değişkenleri ayarlamak için parametreleri kullanılarak, neden sadece kullanmak değil mi?

Edit:

Eğer çoğunlukla aynı parametreleri kullanarak eğer ah, o zaman kesinlikle Fabrika deseni istiyorum. Sadece sınıfının bir örneğini döndürür ve dönen konum sınıfın türüne içine koymak için bir statik işlevini kullanın:

class MyClass
{
    public static function factory($params)
    {
        $myClass = new MyClass;
        $myClass->acceptParams($params['1']);
        $myClass->acceptMoreParams($params['2']);
        //.... lots more params
        return $myClass;
    }
}

class foo(){

   function bar()
   {
     $classInstance = MyClass::factory(param1, param2);
   }
}