Печать
Категория: Уроки PHP
Просмотров: 1222

Видимость (доступность) переменной (свойства) или метода класса может быть определена путем добавления одного из префиксов public, protected или private.

Члены объявление как public доступны отовсюду: из самого класса, в котором делается объявление члена, из классов-наследников, вне классов.

Члены объявление как protected доступны из самого класса, в котором делается объявление члена, и классов-наследников.

Члены объявление как private доступны исключительно из самого класса, в котором делается объявление члена.

Переменные, используемые классом, будем называть членами класса.

Итак. Члены класса могут быть объявлены как public (публичный), protected (защищенный) или private (частный).

<?php
class MyClass
{
    public $public = 'Public';
    protected $protected = 'Protected';
    private $private = 'Private';

    function printHello()
    {
        echo $this->public,'<br/>';
        echo $this->protected,'<br/>';
        echo $this->private,'<br/>';
    }
}

$obj = new MyClass();
echo $obj->public,'<br/>'; // Работает
//echo $obj->protected; // Выдаст сообщение Fatal Error
//echo $obj->private; // Выдаст сообщение Fatal Error
$obj->printHello(); // Выведет значение всех переменных
echo "----------------</br>";

class MyClass2 extends MyClass
{
    // Можно переопределить переменные public и protected method, но не private
    protected $protected = 'Protected2';

    function printHello()
    {
        echo $this->public,'<br/>';
        echo $this->protected,'<br/>';
        //echo $this->private,'<br/>'; // Выдаст сообщение Undefined property
    }
}

$obj2 = new MyClass2();
echo $obj2->public,'<br/>'; // Works
//echo $obj2->private; // Выдаст сообщение Undefined property
//echo $obj2->protected; // Выдаст сообщение Fatal Error
$obj2->printHello(); // Shows Public, Protected2, Undefined

?>