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