Документация PHP


Конструкторы и деструкторы

::

Классы и объекты (PHP 5)

PHP Manual


Область видимости

Область видимости свойства или метода может быть определена путем использования следующих ключевых слов в объявлении: public, protected или private. Доступ к свойствам и методам классам, объявленным как public (общедоступный), может происходить из любого места. Модификатор protected (защищенный) позволяет иметь доступ наследуемым и родительским классам (а, также классу, в котором определен сам член класса). Модификатор private (закрытый) ограничивает область видимости так, что только класс, где объявлен сам элемент, имеет к нему доступ.

Область видимости свойств

Свойства класса должны быть определены через модификаторы public, private, или protected.

Пример #1 Объявление свойства класса

<?php
/**
 * Определение MyClass
 */
class MyClass
{
    public 
$public 'Общий';
    protected 
$protected 'Защищенный';
    private 
$private 'Закрытый';

    function 
printHello()
    {
        echo 
$this->public;
        echo 
$this->protected;
        echo 
$this->private;
    }
}

$obj = new MyClass();
echo 
$obj->public// Работает
echo $obj->protected// Неисправимая ошибка
echo $obj->private// Неисправимая ошибка
$obj->printHello(); // Выводит Общий, Защищенный и Закрытый


/**
 * Определение MyClass2
 */
class MyClass2 extends MyClass
{
    
// Мы можем переопределить public и protected методы, но не private
    
protected $protected 'Защищенный2';

    function 
printHello()
    {
        echo 
$this->public;
        echo 
$this->protected;
        echo 
$this->private;
    }
}

$obj2 = new MyClass2();
echo 
$obj2->public// Работает
echo $obj2->private// Неопределен
echo $obj2->protected// Неисправимая ошибка
$obj2->printHello(); // Выводит Общий, Защищенный2 и Закрытый

?>

Замечание: Метод объявления переменной через ключевое слово var, принятый в PHP 4, до сих пор поддерживается в целях совместимости (как синоним ключевого слова public). В версиях PHP 5 ниже 5.1.3 такое использование выводит предупреждение E_STRICT.

Область видимости метода

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

Пример #2 Объявление метода

<?php
/**
 * Определение MyClass
 */
class MyClass
{
    
// Объявление общедоступного конструктора
    
public function __construct() { }

    
// Объявление общедоступного метода
    
public function MyPublic() { }

    
// Объявление защищенного метода
    
protected function MyProtected() { }

    
// Объявление закрытого метода
    
private function MyPrivate() { }

    
// Это общедоступный метод
    
function Foo()
    {
        
$this->MyPublic();
        
$this->MyProtected();
        
$this->MyPrivate();
    }
}

$myclass = new MyClass;
$myclass->MyPublic(); // Работает
$myclass->MyProtected(); // Неисправимая ошибка
$myclass->MyPrivate(); // Неисправимая ошибка
$myclass->Foo(); // Работает общий, защищенный и закрытый


/**
 * Определение MyClass2
 */
class MyClass2 extends MyClass
{
    
// Это общедоступный метод
    
function Foo2()
    {
        
$this->MyPublic();
        
$this->MyProtected();
        
$this->MyPrivate(); // Неисправимая ошибка
    
}
}

$myclass2 = new MyClass2;
$myclass2->MyPublic(); // Работает
$myclass2->Foo2(); // Работает общий и защищенный, закрытый не работает

class Bar 
{
    public function 
test() {
        
$this->testPrivate();
        
$this->testPublic();
    }

    public function 
testPublic() {
        echo 
"Bar::testPublic\n";
    }
    
    private function 
testPrivate() {
        echo 
"Bar::testPrivate\n";
    }
}

class 
Foo extends Bar 
{
    public function 
testPublic() {
        echo 
"Foo::testPublic\n";
    }
    
    private function 
testPrivate() {
        echo 
"Foo::testPrivate\n";
    }
}

$myFoo = new foo();
$myFoo->test(); // Bar::testPrivate 
                // Foo::testPublic
?>


Конструкторы и деструкторы

::

Классы и объекты (PHP 5)

PHP Manual

SAPE все усложнил?

MainLink - простая и прибыльная продажа ссылок!

Последние поступления:

Стишки пирожки про Олега⁠⁠

Размещена 20 июня 2024 года

Олег купил презервативы
Проник в семидесятый год
И подарил их папе с мамой
Такой нелепый суицид

читать далее…

Размещена 10 августа 2020 года

Я по ТВ видел, что через 10 лет мы будем жить лучше, чем в Германии...
Я не понял, что это они с Германией сделать хотят?!

читать далее…

ТехЗадание на Землю

Размещена 14 марта 2018 года

Пpоект Genesis (из коpпоpативной пеpеписки)

читать далее…

Шпаргалка по работе с Vim

Размещена 05 декабря 2017 года

Vim довольно мощный редактор, но работа с ним не всегда наглядна.
Например если нужно отредактировать какой-то файл например при помощи crontab, без знания специфики работы с viv никак.

читать далее…

Ошибка: Error: Cannot find a valid baseurl for repo

Размещена 13 сентабря 2017 года

Если возникает ошибка на centos 5 вида
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
Eg. Invalid release/

читать далее…