PHP 5 about PHP 5 старт PHP 5 установка PHP 5 синтаксис PHP 5 змінні PHP 5 echo і print PHP 5 типи даних PHP 5 strings PHP 5 константи PHP 5 оператори PHP 5 if...else...elseif PHP 5 switch PHP 5 цикл while PHP 5 for і foreach PHP 5 функції PHP 5 масиви PHP 5 сортування масивів PHP 5 superglobals PHP 5 форми input PHP 5 форми обробка PHP 5 форми - обов'язкові поля PHP 5 форми - перевірка електронної пошти і URL РНР 5 форми заповнення PHP 5 багатовимірні масиви PHP 5 час і дата PHP 5 include PHP 5 файли обробка PHP 5 файли Open/Read/Close PHP 5 файли створення / запис PHP 5 файли завантаження PHP MySQL бази даних PHP MySQL Підключення PHP MySQL Створення бази даних PHP MySQL Створення таблиці PHP MySQL вставка даних PHP MySQL Отримання ідентифікатора останнього доданого запису PHP MySQL вставка кількох записів PHP MySQL Підготовлені вирази PHP MySQL відображення даних з таблиці PHP MySQL Видалення даних PHP MySQL оновлення даних PHP MySQL обмежити вибірку даних PHP регулярні вирази 1 PHP регулярні вирази 2 PHP регулярні вирази 3 PHP регулярні вирази 4 PHP ООП PHP ООП class PHP ООП модифікатори доступу PHP ООП extends PHP ООП статичні методи і властивості, константи PHP ООП abstract PHP ООП interface PHP альтернативний синтаксис керуючих конструкцій

PHP ООП модифікатори доступу


За допомогою спеціальних модифікаторів можна задати область видимості для властивостей і методів класу. У PHP є три таких модифікатора:

    public   поля і методи, оголошеним з даними модифікатором, можна звертатися з зовнішнього коду і з будь-якої частини програми

    protected   поля і методи з даними модифікатором доступні з поточного класу, а також з класів-спадкоємців

    private   поля і методи з даним модифікатором доступні тільки з поточного класу

Розглянемо на прикладі. Наприклад, у нас є наступний клас:

<?php

class User
{
    public $publicA = "public";
    private $privateA = "private";
    protected $protectedA = "protected";

    private function getPrivateMethod()
    {
        echo "private method <br />";
        echo "$this->privateA <br />";
        echo "$this->protectedA <br />";
        echo "$this->publicA <br />";
    }

    protected function getProtectedMethod()
    {
        echo "protected method <br />";
    }

    public function getPublicMethod()
    {
        echo "public method <br />";
        $this->getPrivateMethod();
    }
}

?>

Клас визначає три властивості і три методи з різними модифікаторами доступу. З будь-якого методу цього класу ми можемо звернутися до будь-якого методу і будь-якої властивості.

Тепер створимо клас, похідний від класу User:

class Customer extends User
{
    public function getCustomerMethod()
    {
        //echo $this->privateA; // неможна, так як privateA - private в батьківському класі
        echo $this->protectedA;
        echo $this->publicA; 
        //$this->getPrivateMethod(); // неможна, так як private в батьківському класі
        $this->getProtectedMethod();
        $this->getPublicMethod();
    }
}

Класу-спадкоємцю доступні всі властивості і методи з модифікаторами public і protected , але недоступні методи і властивості з модифікатором private .

Тепер розглянемо використання класу User в зовнішньому коді:

$user = new User;
// $user->getPrivateMethod(); // недоступно, так як private
// $user->getProtectedMethod(); // недоступно, так як protected
$user->getPublicMethod(); 
// echo $user->privateA; // недоступно, так як private
// echo $user->protectedA; // недоступно, так як protected
echo $user->publicA;

При використанні об'єктів даного класу нам доступні тільки public методи і властивості, а властивості і методи з модифікаторами private і protected не доступні.


Наш партнер:
beta test mp3 playlist downloader