2012-05-29 2 views
0

Я хочу знать, возможно ли, чтобы расширенный класс имел набор var и использовался из базового класса?php class extends

например:

class me 
{ 
    public $hello = array(); 

    protected function setter($me) 
    { 
     $this->hello[] = $me; 
    } 
} 

class foo extends me 
{ 
    public function __construct() 
    { 
     $this->setter('foo'); 
    } 
} 

class yoo extends me 
{ 
    public function __construct() 
    { 
     parent::setter('yoo'); 
    } 
} 

$me = new me(); 
$foo = new foo(); 
$yoo = new yoo(); 

print_r($me->hello); 

массив распечатана является массив() ничего установлено.

+0

Кажется, что вы пытаетесь сделать здесь, не задано var в базовом классе, а задайте var для экземпляра базового класса. *** класс *** 'me' может быть базой для классов' foo' и 'yoo', но объект *** ***' $ me' не является основой чего-либо. – Okonomiyaki3000

ответ

1

Да, вы можете сделать это, сделав $hellostatic:

public static $hello = array(); 

При этом, вам придется отказаться от $this от $this->hello[] = $me; и заменить его self как hello не будет больше быть уникальным текущий экземпляр объекта:

self::$hello[] = $me; 
+0

Прохладный, и все, что я делаю, это get get, который возвращает self :: $ hello; –

+0

Это правильно, но имейте в виду, что теперь будет только один $ hello для всех экземпляров 'me' и всех его подклассов. – Okonomiyaki3000

0

Вы использовали

parent::setter('yoo'); 

Но в родительском классе меня эта функция не определена как статическая. Поэтому вы не можете использовать :: для вызова нестатической функции.

Смежные вопросы