PHP __get и переменные частного класса - PullRequest
9 голосов
/ 12 ноября 2008

Если предположить, что у вас есть абстрактный базовый класс foo с определенным __get(), и дочерний класс bar, который наследуется от foo с закрытой переменной $var, будет ли вызван родительский __get() при попытке получить доступ к личному $var извне класса?

Ответы [ 2 ]

10 голосов
/ 12 ноября 2008

Да.

<?php
    abstract class foo
    {
        public function __get($var)
        {
            echo "Parent (Foo) __get() called for $var\n";
        }
    }

   class bar extends foo
   {
        private $var;
        public function __construct()
        {
            $this->var = "25\n";
        }

        public function getVar()
        {
            return $this->var;
        }
    }

    $obj = new bar();
    echo $obj->var;
    echo $obj->getVar();
?>

выход:

$ php test.php

Parent (Foo) __get () для var

25

4 голосов
/ 12 ноября 2008

Да. __get() и __set()__call() в этом отношении) вызываются при обращении к элементу данных, который не виден для текущего выполнения.

В этом случае $var является закрытым, поэтому публичный доступ к нему вызовет хук __get().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...