PHP ООП шпаргалка

Модификаторы доступа в ООП

  • 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