Статические методы и $this в ООП в PHP
Внутри статических методов недоступен $this.
Это происходит из-за того, что статические методы
могут вызываться вне контекста объекта,
просто обращаясь к имени класса.
В обычных методах доступны как статические, так и обычные свойства и методы.
Давайте посмотрим на примерах. Пример на обычный метод:
<?php
class Test
{
public static $staticProperty = 'static';
public $usualProperty = 'usual';
public function method()
{
echo self::$staticProperty; // выведет 'static'
echo $this->usualProperty; // выведет 'usual'
}
}
$test = new Test;
$test->method();
?>
Пример на статический метод:
<?php
class Test
{
public static $staticProperty = 'static';
public $usualProperty = 'usual';
public static function method()
{
echo self::$staticProperty; // выведет 'static'
echo $this->usualProperty; // выдаст ошибку
}
}
$test = new Test;
$test::method();
?>