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;
}
}