Sobes.tech
Junior

Aký je rozdiel medzi kľúčovými slovami self a this v PHP?

sobes.tech AI

Odpoveď od AI

$this odkazuje na aktuálny inštanciu objektu. self odkazuje na aktuálnu triedu (v statickom kontexte alebo vo vnútri metód na prístup k statickým členom).

$this:

  • Používa sa na prístup k vlastnostiam a metódam konkrétneho inštancie triedy.
  • Aplikujú sa vo vnútri nestatických metód.
class MyClass {
    public $instanceProperty = 'Ahoj';

    public function getInstanceProperty() {
        // Prístup k vlastnosti aktuálnej inštancie
        return $this->instanceProperty;
    }
}

self:

  • Používa sa na prístup k statickým vlastnostiam a metódam triedy.
  • Aplikujú sa vo vnútri statických a nestatických metód.
class MyClass {
    public static $staticProperty = 'Svet';

    public static function getStaticProperty() {
        // Prístup k statickej vlastnosti
        return self::$staticProperty;
    }

    public function accessStaticFromInstance() {
        // Prístup k statickej vlastnosti z nestatickej metódy
        return self::$staticProperty;
    }
}

Príklad spoločného použitia $this a self:

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

    public function __construct() {
        // Použitie self na zvýšenie statického čítača
        self::$count++;
        // Použitie $this na nastavenie vlastnosti inštancie
        $this->instanceId = self::$count;
    }

    public static function getCount() {
        // Použitie self na získanie statickej vlastnosti
        return self::$count;
    }

    public function getInstanceId() {
        // Použitie $this na získanie vlastnosti inštancie
        return $this->instanceId;
    }
}