Частные и защищенные элементы класса

В 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();
?>

Февраль 24, 2008 — Рубрика: PHP
Метки: ,