Sobes.tech
Junior

Ինչ է տարբերությունը PHP-ում self և this բանալի բառերի միջև?

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