Модификаторы доступа в ООП
- public — позволяет иметь доступ к свойствам и методам из любого места (глобальная область)
- protected — доступ к родительскому и наследуемому классу (область класса наследника)
- private — доступ только из класса, в котором объявлен сам элемент (область самого класса)
class Room { //свойства public $color = 'red'; private $lamp = true; public function getColor() { // для обращения к свойству внутри класса используют $this echo $this->color; } } $object = new Room(); // создаём объект echo $object->color; // выводим свойства класса $object->getColor(); // выводим метод класса
static (статические свойства и методы)
class Room { public static $color = 'красный'; public static function setColor($col) { // для того, чтоб обратиться к статическому св-ву или методу внутри класса // необходимо использовать ключевое слово "self" self::$color = $col; } } // Не нужно создавать объект, чтобы обратиться к статическому свойству echo Room::$color; // Не нужно создавать объект, чтоб обратиться к статическому методу Room::setColor('Внутри дома тоже, но на Марсе!'); $myRoom = new Room(); echo $myRoom::$color; $myRoom::setColor('новое значение');
Для обращения к обычным свойствам внутри класса используется
$this
, к статическимself
Магические методы
class Room { public function __construct() { echo 'Объект создан'; } // __invoke выполняется, когда к объекту обращаются, как к функции. public function __invoke() { echo 'Объект был вызван как функция'; } // __toString выполняется, когда к объекту обращаются, как к строке. public function __toString() { return 'Объект был вызван как строка'; } } $myRoom = new Room(); // вызывается метод __construct $myRoom(); // вызывается метод __invoke echo $myRoom; // вызывается метод __toString