Sobes.tech
Junior

Koja je razlika između ključnih reči self i this u PHP?

sobes.tech АИ

Одговор од АИ

$this се odnosi na trenutni primer objekta. self se odnosi na trenutnu klasu (u statičkom kontekstu ili unutar metoda za pristup statičkim članovima).

$this:

  • Koristi se za pristup svojstvima i metodama konkretnog primera klase.
  • Primjenjuje se unutar nestatičkih metoda.
class MyClass {
    public $instanceProperty = 'Zdravo';

    public function getInstanceProperty() {
        // Pristup svojstvu trenutnog primera
        return $this->instanceProperty;
    }
}

self:

  • Koristi se za pristup statičkim svojstvima i metodama klase.
  • Primjenjuje se unutar statičkih i nestatičkih metoda.
class MyClass {
    public static $staticProperty = 'Svet';

    public static function getStaticProperty() {
        // Pristup statičkom svojstvu
        return self::$staticProperty;
    }

    public function accessStaticFromInstance() {
        // Pristup statičkom svojstvu iz nestatičke metode
        return self::$staticProperty;
    }
}

Primer zajedničke upotrebe $this i self:

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

    public function __construct() {
        // Korišćenje self za povećanje statičkog brojača
        self::$count++;
        // Korišćenje $this za postavljanje svojstva instance
        $this->instanceId = self::$count;
    }

    public static function getCount() {
        // Korišćenje self za dobijanje statičkog svojstva
        return self::$count;
    }

    public function getInstanceId() {
        // Korišćenje $this za dobijanje svojstva instance
        return $this->instanceId;
    }
}