Sobes.tech
Junior

Mi a különbség a self és this kulcsszavak között PHP-ben?

sobes.tech MI

Válasz az MI-től

$this a jelenlegi példányra utaló hivatkozás. self a jelenlegi osztályra utal (statikus kontextusban vagy metódusokon belül a statikus tagok eléréséhez).

$this:

  • Egy adott példány tulajdonságaihoz és metódusaihoz való hozzáférésre használják.
  • Nem statikus metódusokon belül alkalmazzák.
class MyClass {
    public $instanceProperty = 'Helló';

    public function getInstanceProperty() {
        // Hozzáférés a jelenlegi példány tulajdonságához
        return $this->instanceProperty;
    }
}

self:

  • A osztály statikus tulajdonságaihoz és metódusaihoz való hozzáférésre használják.
  • Statikus és nem statikus metódusokon belül alkalmazzák.
class MyClass {
    public static $staticProperty = 'Világ';

    public static function getStaticProperty() {
        // Hozzáférés a statikus tulajdonsághoz
        return self::$staticProperty;
    }

    public function accessStaticFromInstance() {
        // Hozzáférés a statikus tulajdonsághoz nem statikus módból
        return self::$staticProperty;
    }
}

A $this és self együttes használatának példája:

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

    public function __construct() {
        // A statikus számláló növelése self segítségével
        self::$count++;
        // A példány tulajdonságának beállítása $this segítségével
        $this->instanceId = self::$count;
    }

    public static function getCount() {
        // A statikus tulajdonság lekérése self segítségével
        return self::$count;
    }

    public function getInstanceId() {
        // A példány tulajdonságának lekérése $this segítségével
        return $this->instanceId;
    }
}