Модификаторы доступа (Инкапсуляция)

Есть три модификатора доступа:

  • public — создаёт свойства и методы, которые доступны в любом месте кода;
  • protected — создаёт свойства и методы, доступные в пределах текущего и наследуемых классов;
  • private — создаёт свойства и методы, доступные только в пределах текущего класса.
// создание класса
class CustomClass
{
    public $public = 'Public class';
    protected $protected = 'Protected class';
    private $private = 'Private class';
}

// вывод свойств класса
$custom = new CustomClass();
echo $custom->public;    // Public class
echo $custom->protected; // Ошибка, нет доступа к свойству (Fatal error: Cannot access protected property)
echo $custom->private;   // Ошибка, нет доступа к свойству (Fatal error: Cannot access private property)

Данный механизм, который позволяет ограничить доступ свойств и методов для других объектов, называется инкапсуляция.

Если надо вывести свойства с модификатором protected или private, то для этого надо создать отдельный метод.

class CustomClass
{
    public $public = 'Public class';
    protected $protected = 'Protected class';
    private $private = 'Private class';
	
    public function getProtected()
    {
        return $this->protected;
    }
	
    public function getPrivate()
    {
        return $this->private;
    }
}

// вывод свойств класса
$custom = new CustomClass();
echo $custom->getProtected(); // Protected class
echo $custom->getPrivate();   // Private class