Как я могу защитить свойство класса от расширения классов в PHP?
Можно ли сделать что-то вроде этого:
class foo {
private $private = 'A';
}
class bar extends foo {
echo $this->private;
}
bar returns null...
Мне бы очень понравилось, если бы переменная $ private не была доступна дочерним классам, но я не уверен, что это возможно даже на основе парадигмы классовой разработки.
Частные свойства НЕ предоставляют функциональность, которую я ищу.
Я понимаю, что это не точный код PHP, но это всего лишь пример;)
2 ответа
Вот как это уже работает. Смотрите документацию:
Видимость свойства или метода может быть определена путем добавления префикса объявления к ключевым словам public, protected или private. Члены класса, объявленные публичными, могут быть доступны везде. Члены, объявленные защищенными, могут быть доступны только внутри самого класса и унаследованных и родительских классов. Члены, объявленные как частные, могут быть доступны только классу, который определяет член.
Смотрите пример здесь: http://codepad.org/Yz4yjDft
Частные свойства НЕ предоставляют функциональность, которую я ищу.
Мне кажется, это именно то, что вы хотите. Если нет, пожалуйста, уточните.
class foo {
protected $private = 'A';
}
class bar extends foo {
function __construct() {
echo $this->private;
}
}
new bar();
// will echo 'A'
Вам просто нужно выполнить обработку внутри функции, вы не можете иметь эхо только внутри вашего класса.
РЕДАКТИРОВАТЬ:
Защищенный позволит вам использовать переменную только в классах потомков. если это то, что вы ищете