الكلمة المفتاحية $this
جزء من قسم Object Oriented Programming في رحلة PHP على Coddy — الدرس 4 من 91.
تشير الكلمة المفتاحية $this إلى المثيل الحالي للفئة داخل أساليبها. وهي تتيح لك الوصول إلى خصائص الكائن الحالي وتعديلها.
إليك مثال على فئة (class) تحتوي على دوال (methods) تستخدم $this:
<?php
class Car {
public $color;
public $model;
public function honk() {
echo "Beep beep!\n";
}
public function describe() {
echo "I am a " . $this->color . " " . $this->model . "\n";
}
}تُستخدم الكلمة الأساسية $this داخل الأساليب للإشارة إلى الكائن الذي استدعى الأسلوب.
أنشئ كائن سيارة وقم بتعيين الخصائص:
$myCar = new Car();
$myCar->color = "Red";
$myCar->model = "Sedan";الآن قم باستدعاء الدوال:
$myCar->honk();
$myCar->describe();المخرجات:
Beep beep!
I am a Red Sedanعندما تستدعي $myCar->describe()، يقوم PHP تلقائيًا بتعيين $this ليشير إلى $myCar. هذه هي الطريقة التي تعرف بها الدالة (method) أي خصائص كائن يجب الوصول إليها.
إذا كان لديك كائن سيارة آخر:
$otherCar = new Car();
$otherCar->color = "Blue";
$otherCar->model = "SUV";
$otherCar->describe(); // أنا سيارة SUV زرقاءنقطة رئيسية: $this يشير دائماً إلى الكائن المحدد الذي استدعى الطريقة (method). يحصل كل كائن على سياقه الخاص عند تشغيل الطريقة.
التحدي
سهلأكمل فئة Car في car.php عن طريق إضافة دالة تسمى displayInfo تستخدم الكلمة المفتاحية $this لطباعة سنة السيارة، والشركة المصنعة، والطراز بالتنسيق التالي:
"This car is a [year] [make] [model]"
car.php: يحتوي على تعريف فئةCarحيث ستضيف دالةdisplayInfodriver.php: ملف التنفيذ الرئيسي الذي يستورد ويستخدم فئةCar(مغلق)
ورقة مرجعية
تشير الكلمة المفتاحية $this إلى النسخة الحالية من الفئة (class) داخل دوالها، مما يسمح لك بالوصول إلى خصائص الكائن الحالي وتعديلها.
استخدام $this داخل الفئة:
<?php
class Car {
public $color;
public $model;
public function describe() {
echo "I am a " . $this->color . " " . $this->model . "\n";
}
}إنشاء كائن واستدعاء الدوال:
$myCar = new Car();
$myCar->color = "Red";
$myCar->model = "Sedan";
$myCar->describe(); // I am a Red Sedanعندما تقوم باستدعاء $myCar->describe()، يقوم PHP تلقائيًا بتعيين $this للإشارة إلى $myCar. يحصل كل كائن على سياقه الخاص عند تشغيل الدالة، لذا فإن $this تشير دائمًا إلى الكائن المحدد الذي قام باستدعاء الدالة.
جرّب بنفسك
<?php
require_once 'car.php';
$myCar = new Car();
$myCar->year = 2020;
$myCar->make = "Toyota";
$myCar->model = "Corolla";
$myCar->displayInfo();
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Object Oriented Programming
1أساسيات OOP
الملفات الخارجيةمقدمة في OOPClasses مقابل Objectsالكلمة المفتاحية $thisالـ Methodsالـ Propertiesالمنشئ (__construct)الهادم (__destruct)مراجعة - آلة حاسبة بسيطة4الوراثة
الوراثة الأساسيةالكلمة المفتاحية parent::إعادة تعريف الدوال (Method Overriding)الكلمة المفتاحية finalالأصناف المجردة (Abstract Classes)مراجعة - هيكلية الموظفين7التغليف (Encapsulation)
العام، المحمي، الخاص (Public, Protected, Private)نظرة متعمقة على معدلات الوصولدوال Getters و Settersإخفاء المعلوماتميزة Constructor Promotion (8.0)مراجعة - نظام سجلات الطلاب10مفاهيم البرمجة كائنية التوجه المتقدمة
التركيب مقابل الوراثةحقن التبعيةالأصناف المجهولةالتعدادات (PHP 8.1)الألياف (PHP 8.1)تعمق في استنساخ الكائناتالمولدات والمكررات13أنماط التصميم - الجزء الثاني
نمط الأمرنمط المحولنمط المزيننمط طريقة القالبنمط الحالةنمط التركيبنمط المستودع2مساحات الأسماء والتحميل التلقائي
مقدمة إلى مساحات الأسماءالكلمة المفتاحية useمعيار التحميل التلقائي PSR-4أداة التحميل التلقائي Composerملخص - مشروع منظم5الواجهات والعقود
مقدمة إلى الواجهاتتنفيذ الواجهاتتنفيذ واجهات متعددةالواجهة مقابل الـ Abstract Classالـ Type Hinting مع الواجهاتملخص - حاسبة الأشكال8الميثودات السحرية (Magic Methods)
مقدمة في الميثودات السحرية__toString و __debugInfo__get, __set, __isset, __unset__call و __callStatic__clone واستنساخ الكائنات__serialize و __unserializeمراجعة - Custom Collection3خصائص الكلاس
خصائص الـ Instance مقابل الخصائص الساكنة (Static)الثوابت في الكلاساتالدوال والخصائص الساكنة (Static)الخصائص الخاصة (Private) والمحمية (Protected)خصائص للقراءة فقط (Readonly) في PHP 8.1مراجعة - مدير الحساب البنكي6تعدد الأشكال (Polymorphism)
مراجعة إعادة تعريف الدوال (Method Overriding)تعدد الأشكال عبر الـ Interfacesتلميح النوع (Type Hinting) وأنواع الاتحاد (Union Types)الربط الاستاتيكي المتأخر (Late Static Binding)ملخص - معالج الدفع (Payment Processor)