Инстанцирование дочерних классов от родительского класса (PHP)

Используйте вывод типов везде и всюду, где это возможно.

Редактировать:

Вот ссылка на запись в блоге, которую я написал несколько месяцев назад о том, почему я так себя чувствую.

http://blogs.msdn.com/jaredpar/archive/2008/09/09/when-to-use-type-inference.aspx

8
задан Austin Hyde 29 June 2009 в 19:47
поделиться

2 ответа

Если вы можете выполнить обновление до PHP 5.3 ( выпущен 30 июня 2009 г. ), ознакомьтесь с поздним статическим связыванием , которое может предоставить решение:

abstract class ParentObj {
    public function __construct(){}
    public static function factory(){

        //use php5.3 late static binding features:
        $class=get_called_class();
        return new $class;
    }
}


class ChildObj extends ParentObj{

    function foo(){
       echo "Hello world\n";
    }

}


$child=ChildObj::factory();
$child->foo();
12
ответ дан 5 December 2019 в 15:25
поделиться

По моему скромному мнению, то, что вы пытаетесь сделать, не имеет смысла.

Заводской шаблон будет работать следующим образом:

abstract class Human {}

class Child extends Human {}
class Fool  extends Human {}

class HumanFactory
{
    public static function get($token)
    {
        switch ($token)
        {
            case 'Kid' : return new Child();
            case 'King': return new Fool();
            default    : throw new Exception('Not supported');
        }
    }
}

$child = HumanFactory::get('Kid');
-1
ответ дан 5 December 2019 в 15:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: