Как я могу защитить свойство класса от расширения классов в PHP? - PullRequest
0 голосов
/ 08 мая 2011

Можно ли сделать что-то вроде этого:

class foo {
    private $private = 'A';
}

class bar extends foo {
    echo $this->private;
}

bar returns null...

Мне бы очень хотелось, чтобы переменная $ private не была доступна дочерним классам, но я не уверен, что это даже возможнопросто основанный на парадигме классовой разработки.

Частные свойства НЕ предоставляют нужную мне функциональность.

Я понимаю, что это не точный код PHP, но это простопример;)

Ответы [ 2 ]

2 голосов
/ 08 мая 2011

Вот как это уже работает.См. Документацию :

. Видимость свойства или метода может быть определена путем добавления префикса объявления к ключевым словам public, protected или private.Члены класса, объявленные публичными, могут быть доступны везде.Члены, объявленные защищенными, могут быть доступны только внутри самого класса и унаследованных и родительских классов. Члены, объявленные как частные, могут быть доступны только классу, который определяет член .

См. Пример здесь: http://codepad.org/Yz4yjDft

Личные свойства НЕ предоставляют нужную мне функцию.

Мнекажется, это именно то, что вы хотите.Если нет, пожалуйста, уточните.

0 голосов
/ 08 мая 2011
class foo {
    protected $private = 'A';
}

class bar extends foo {
    function __construct() {
        echo $this->private;
    }
}
 new bar();

// will echo 'A' 

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

EDIT:

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

...