Intereting Posts

PHP Частный доступ переменной от ребенка

поэтому я пытаюсь решить проблему, которая у меня возникает при разработке классов PHP. Я создал базовый класс и назначил частные переменные. У меня есть дочерние классы, расширяющие этот базовый класс, которые делают ссылку и изменяются этими частными переменными через функции базового класса. Вот пример, имейте в виду, я все еще смущен различием между private и protected методами / переменными (дайте мне знать, если я ошибаюсь!):

base.class.php

 <?php class Base { private $test; public function __construct(){ require('sub.class.php'); $sub = new Sub; echo($this->getTest()); } public function getTest(){ return $this->test; } protected function setTest($value){ $this->test = $value; } } ?> 

sub.class.php

 <?php class Sub extends Base { public function __construct(){ parent::setTest('hello!'); } } ?> 

Поэтому я ожидаю, что результат будет hello! напечатан на экране – вместо этого ничего нет. Может быть, фундаментальное непонимание классов с моей стороны, или, может быть, я просто делаю что-то неправильно. Любое руководство очень ценится! Благодарю.

РЕДАКТИРОВАТЬ:

Спасибо всем, кто внес свой ответ – я думаю, несмотря на отличные решения, что детские классы на самом деле не то, что мне нужно – кажется, что классы делегатов могут быть более полезными на данный момент, так как мне действительно не нужно ссылаться на базу функции из других классов.

Должно быть так:

base.class.php:

 class Base { private $test; public function __construct() { echo $this->getTest(); } public function getTest() { return $this->test; } protected function setTest($value) { $this->test = $value; } } 

sub.class.php:

 class Sub extends Base { public function __construct() { parent::setTest('hello!'); // Or, $this->setTest('hello!'); parent::__construct(); } } 

основной код:

 require 'base.class.php'; require 'sub.class.php'; $sub = new Sub; // Will print: hello!