Sobes.tech
Junior

Тартиби калидии self ва this дар PHP чӣ фарқ дорад?

sobes.tech AI

Ҷавоб аз AI

$this сілтеме жасайды объектінің ағымдағы мысалына. self сілтеме жасайды ағымдағы сыныпқа (статикалық контекстте немесе әдістер ішінде статикалық мүшелерге қол жеткізу үшін).

$this:

  • Нақты сынып мысалының қасиеттері мен әдістеріне қол жеткізу үшін пайдаланылады.
  • Статикалық емес әдістер ішінде қолданылады.
class MyClass {
    public $instanceProperty = 'Сәлем';

    public function getInstanceProperty() {
        // Ағымдағы мысалдың қасиетіне қол жеткізу
        return $this->instanceProperty;
    }
}

self:

  • Сыныптың статикалық қасиеттері мен әдістеріне қол жеткізу үшін пайдаланылады.
  • Статикалық және статикалық емес әдістер ішінде қолданылады.
class MyClass {
    public static $staticProperty = 'Әлем';

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