#php
#php
Вопрос:
Я не хочу делать свойства class example доступными только для его дочерних элементов, но я хочу, чтобы дочерние элементы могли изменять их отдельно от начальной __конструкции. Вот как у меня все настроено на данный момент. Могу ли я сделать это лучшим способом?
class example{
private $x
protected function __construct($x){
setX($x);
}
private function setX($x){
$this->x = $x;
}
protected function getX{
return $this->x;
}
}
Комментарии:
1. Не уверен, что понимаю, вы хотите, чтобы подкласс получал доступ к значению свойства, но не мог их устанавливать, за исключением конструктора? Если это так, то это лучший способ (хотя вы, вероятно, хотите, чтобы ваш конструктор был общедоступным, верно?) — путем переопределения метода конструктора.
2. Я хочу, чтобы мой конструктор был доступен только через подклассы, и в этом случае установка его как общедоступного была бы доступна для thing.
Ответ №1:
Правильно ли я понимаю, что вы хотите, чтобы $ x был доступен для чтения (но не редактировался) только его дочерними элементами?
Тогда да, ваше определение класса выглядит нормально (хотя и с синтаксическими ошибками).
Дочерние элементы не могут получить доступ к закрытым элементам, только к защищенным (и общедоступным, durhur).
Ответ №2:
Вы имеете в виду, что хотите использовать этот метод получения / установки вне функции, вот так?
$a = new Example(5);
$a->setX(25);
echo $a->getX();
Если да, вам нужно присвоить им двум общедоступные функции:
class Example{
private $x
protected function __construct($x){
setX($x);
}
public function setX($x){
$this->x = $x;
}
public function getX{
return $this->x;
}
}
PS.: Хорошей практикой является использование заглавных букв в именах ваших классов.
Комментарии:
1. Я хочу, чтобы средства получения / установки использовались только внутри подклассов, так что не будет ли защищен путем перехода?