2016-02-23 2 views
0

Я сделал несколько примеров кода, чтобы объяснить мой вопрос:PHP: Класс Расширяет

class Core { 
    public $test = null; 
    public function __construct(){ 
     $this->test = "hi"; 
    } 
} 

$data = new Core; 

class Extension extends Core { 
    public function __construct(){ 
     $this->test = "hello"; 
    } 
} 

$data->ext = new Extension; 

echo $data->test . "<br />"; 
echo $data->ext->test; 

, который выводит как:

hi
hello

Мой вопрос трудно объяснить, но я просто интересно, если там был способ переписать переменную $ test в родительском классе в дочернем классе так:

echo $this->test; будет выводить «привет», поскольку он изменился в дочернем классе.

Есть ли способ сделать это или может ребенок не получить доступ/изменить родительские переменные?

+0

Тогда 'static' переменная должна работать для вас – codisfy

+0

Не могли бы вы объяснить, как это сделать, или, возможно, ссылки на то, что я мог бы смотреть на? Thank-you @codeHeart или это будет просто public public $ test = null; '? – KDOT

+1

http://php.net/manual/en/language.oop5.static.php, второй пример должен помочь вам – codisfy

ответ

1

Используйте static недвижимость для вашего прецедента.

Проверить здесь http://php.net/manual/en/language.oop5.static.php, второй пример должен помочь вам

+0

Быстрый вопрос, руководство не объясняет, могут ли быть изменены статические переменные, потому что я получаю сообщение об ошибке при попытке изменить его: https : //gyazo.com/a86a281c7615f782cd2a47828ea24097 – KDOT

+1

Да, путь доступа к переменной также различен, вам нужно использовать 'Classname :: $ variableName' вместо' $ instance-> variableName', проверьте пример использования. – codisfy

+0

Что можно изменить? 'self :: test =" hi ";' возвращает ошибку: Синтаксическая ошибка FATAL ERROR, неожиданный '=' в строке номер 6:/ – KDOT

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