Рубрики
Уроки PHP

Уроки PHP. Область видимости членов класса

Видимость (доступность) переменной (свойства) или метода класса может быть определена путем добавления одного из префиксов 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

?> 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *