Avatar ·

متى تستخدم `self` ومتى تستخدم `$this` في PHP؟ نفهم نطاق الرؤية

مرحباً بالجميع! بدأت تعلم البرمجة كائنية التوجه (OOP) في PHP وأخلط باستمرار بين متى يجب استخدام `self` ومتى `$this`. يبدو أن كلاهما يشير إلى خصائص وطرق الكلاس، لكن هناك فرق واضح لا أستطيع استيعابه. إليكم مثال بسيط يربكني. لدي كلاس مع ثابت (constant) وخاصية عادية: ```php class Car { const WHEELS = 4; public $color = 'red'; public function showInfo() { echo "العجلات: " . self::WHEELS . "\n"; echo "اللون: " . $this->color . "\n"; } } $car = new Car(); $car->showInfo(); ``` لماذا أكتب `self::WHEELS` للثابت و `$this->color` للخاصية؟ ماذا سيحدث إذا حاولت كتابة `self::$color` أو `$this::WHEELS`؟ هل يعمل هذا في الوراثة؟ مثلاً، إذا أنشأت كلاساً فرعياً وأعدت تعريف الثابت أو الخاصية، كيف يجب أن أتعامل معها بشكل صحيح؟ لقد قرأت عن الطرق والخصائص الثابتة (static methods and properties)، لكني ما زلت أشعر أنني لم أفهم المنطق تماماً. أرجو التوضيح.