Частные и защищенные элементы класса
В PHP5 введены частные (private) и защищенные (protected) переменные-элементы класса (member variables), что позволяет определять область их видимости.
Пример:
Защищенные (protected) переменные-элементы класса доступны методам (methods) класса, в котором они объявлены, и методам производного от него класса. Частные (private) элементы класса доступны только методам класса, в котором они объявлены.
class MyClass {
private $Hello = "Hello, World!\n";
protected $Bar = "Hello, Foo!\n";
protected $Foo = "Hello, Bar!\n";
function printHello() {
print "MyClass::printHello() " . $this->Hello;
print «MyClass::printHello() » . $this->Bar;
print «MyClass::printHello() » . $this->Foo;
}
}
class MyClass2 extends MyClass {
protected $Foo;
function printHello() {
MyClass::printHello(); /* Выведет значение */
print «MyClass2::printHello() » . $this->Hello; /* Ничего не выведет */
print «MyClass2::printHello() » . $this->Bar; /* Не выведет значение (переменная не определена)*/
print «MyClass2::printHello() » . $this->Foo; /* Выведет значение */
}
}
$obj = new MyClass(); print $obj->Hello; /* Ничего не выведет */
print $obj->Bar; /* Ничего не выведет */
print $obj->Foo; /* Ничего не выведет */
$obj->printHello(); /* Выведет значение */
$obj = new MyClass2();
print $obj->Hello; /* Ничего не выведет */
print $obj->Bar; /* Ничего не выведет */
print $obj->Foo; /* Ничего не выведет */
$obj->printHello();
?>
