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