#7. 4 php Управление доступом к свойствам и методам класса

В PHP существует три модификатора доступа к свойствам и методам класса:

  • public -- нет ограничений на доступ.
  • private -- доступ разрешен только изнутри класса
  • protected -- доступ разрешен только изнутри класса и всех его потомков

По умолчанию все свойства и методы объявлены как public. Рекомендуется всегда явно указывать модификатор доступа для всех свойств и методов.

Поскольку свойство name класса Animal объявлено как private, доступ к нему из кода за пределами класса будет заблокирован. Ниже приведен пример попытки доступа к приватному свойству name.

<?php
    class Animal
    {
        private $name;

        public function set_name($text) 
        {
            $this->name = $text;
        }
      
        public function get_name()
        {
            return $this->name;
        }
    }
    
    $lion = new Animal;
    $lion->set_name("Бонифаций");
    
    echo "Имя нового льва: ", $lion->name, ".";
?>

При выполнении данного кода будет выведено следующее сообщение об ошибке:

Fatal error: Cannot access private property Animal::$name in test.php on line 19

Наряду с приватными свойствами можно объявить и приватные методы класса, например, метод get_name может быть объявлен как приватный:

<?php
    class Animal
    {
        private $name;

        public function set_name($text) 
        {
            $this->name = $text;
        }
      
        private function get_name()
        {
            return $this->name;
        }
    }
    
    $lion = new Animal;
    $lion->set_name("Бонифаций");
    
    echo "Имя нового льва: ", $lion->get_name(), ".";
?>

Fatal error: Call to private method Animal::get_name() from context '' in test.php on line 19

При использовании ключевого слова protected свойства и методы класса будут доступны изнутри данного класса, а также из всех классов, порожденных на основе данного. Порождение классов и наследование свойств и методов будет описано в следующих разделах данной главы.