الكلمة المفتاحية $this
جزء من قسم البرمجة كائنية التوجه في رحلة PHP على Coddy. الدرس 4 من 91.
تشير الكلمة المفتاحية $this إلى النسخة الحالية من class داخل طرقها. وتتيح لك الوصول إلى خصائص الكائن الحالي وتعديلها.
إليك مثالًا على class تحتوي على method باستخدام $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 دائمًا إلى الكائن المحدد الذي استدعى الأسلوب. يحصل كل كائن على سياقه الخاص عند تشغيل الأسلوب.
التحدي
سهلأكمل الفئة Car في car.php بإضافة method تُسمى displayInfo وتستخدم الكلمة المفتاحية $this لطباعة سنة السيارة وصنعتها وطرازها بالتنسيق format:
"This car is a [year] [make] [model]"
car.php: يحتوي على تعريف الفئةCarحيث ستضيف methoddisplayInfodriver.php: ملف التنفيذ الرئيسي الذي يستورد الفئةCarويستخدمها (مقفل)
جرّب بنفسك
<?php
require_once 'car.php';
$myCar = new Car();
$myCar->year = 2020;
$myCar->make = "Toyota";
$myCar->model = "Corolla";
$myCar->displayInfo();
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس البرمجة كائنية التوجه
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)تدرّب بنفسك: مترجم PHP عبر الإنترنت