Статични методи и $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();
?>