Назад к вопросам
Junior
122
questionbank

В чем разница между ключевыми словами self и this в PHP?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

$this ссылается на текущий экземпляр объекта. self ссылается на текущий класс (в статическом контексте или внутри методов для доступа к статическим членам).

$this:

  • Используется для доступа к свойствам и методам конкретного экземпляра класса.
  • Применяется внутри нестатических методов.
class MyClass {
    public $instanceProperty = 'Hello';

    public function getInstanceProperty() {
        // Доступ к свойству текущего экземпляра
        return $this->instanceProperty;
    }
}

self:

  • Используется для доступа к статическим свойствам и методам класса.
  • Применяется внутри статических и нестатических методов.
class MyClass {
    public static $staticProperty = 'World';

    public static function getStaticProperty() {
        // Доступ к статическому свойству
        return self::$staticProperty;
    }

    public function accessStaticFromInstance() {
        // Доступ к статическому свойству из нестатического метода
        return self::$staticProperty;
    }
}

Пример использования $this и self вместе:

class Example {
    public $instanceId;
    private static $count = 0;

    public function __construct() {
        // Использование self для увеличения статического счетчика
        self::$count++;
        // Использование $this для установки свойства экземпляра
        $this->instanceId = self::$count;
    }

    public static function getCount() {
        // Использование self для получения статического свойства
        return self::$count;
    }

    public function getInstanceId() {
        // Использование $this для получения свойства экземпляра
        return $this->instanceId;
    }
}