Как я могу защитить свойство класса от расширения классов в 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' 

Вам просто нужно выполнить обработку внутри функции, вы не можете иметь эхо только внутри вашего класса.

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

Защищенный позволит вам использовать переменную только в классах потомков. если это то, что вы ищете

Другие вопросы по тегам