PHP классы расширяются - PullRequest
       12

PHP классы расширяются

2 голосов
/ 24 апреля 2010

У меня есть два класса, которые работают отдельно от другого, но они расширяют один и тот же класс. Можно ли заставить их работать один и тот же экземпляр расширенного класса. Я хочу, чтобы конструктор расширенного класса запускался только один раз.

Я знаю, что это неправильно, но что-то вроде этого:

<?php
$oApp = new app;
class a extends $oApp {}
class b extends $oApp {}

Ответы [ 2 ]

2 голосов
/ 24 апреля 2010

Ах, в этом случае я думаю, что вы захотите передать класс в качестве параметра для двух других классов:

/**
 * 
 */
class abParent{
    /**
     * @var app
     */
    protected $app;
    /**
     *
     * @param app $app
     */
    public function __construct(app &$app){
        $this->app = &$app;
    }
}

class a extends abParent{}
class b extends abParent{}


$app = new app();
$a = new a($app);
$b = new b($app);

var_dump($a, $b);
0 голосов
/ 24 апреля 2010

То, что вы хотите, это:

<?php
$oApp = new app;
class a extends app{}
class b extends app{}

Если у вас есть __constructor s в дочерних классах, убедитесь, что они вызывают parent::__constructor, иначе они, вероятно, не будут работать должным образом.

...