Object-Oriented PHP الدرس الثامن
Static Class Members+The instanceof Keyword + Autoloading
السلام عليكم ورحمة الله وبركاته
مرحبا بكم في مدونة مايندز في الدرس الثمن والاخير من اساسيات البرمجة الموجهة.
Static Class Members:
في بعض الأحيان نحتاج لإنشاء Properties & Methods لا يتم إستدعاءها عن طريق object محدد ومع ذلك نحتاج لوجودها ضمن الـ object المعني .افترض انك تكون في كلاس يعد الضيوف الذين يدخلون لصفحة او صفحات في موقع محدد المتغير الذي يحمل عدد الزوار يصبح صفر عند ابتداء نموذج من ذلك الكلاس وهذا الامر غير مرغوب لذلك عليك وضع هذه الخاصية كـ static
<?php
class Visitor{
private static $visitors = 0;
function __construct(){
self::$visitors++;
}
static function getVisitors(){
return self::$visitors;
}
}
// Instantiate the Visitor class.
$visits = new Visitor();
echo Visitor::getVisitors()."<br />";
// Instantiate another Visitor class.
$visits2 = new Visitor();
echo Visitor::getVisitors()."<br />";
?>
results:
1
2
لأن الخاصية $visitors أعلنت كـ static فإن أي تغيير في قيمتها ينتقل لكل الـobject المنشأء من نفس الكلاس.
الـ static Properties and Methods يمكن ان نستخدم للتعامل معها الكلمة self او اسم الكلاس بدلا من استخدام $this
تنبيه: لا يمكنك استخدام $this للتعامل من داخل الكلاس مع خاصية اعلنت كـ static
The instanceof Keyword
تم استخدام instanceof في الـ PHP 5 وبها تستطيع ان تحدد ما إذا كان الـ Object المحدد هو نسخة من كلاس محدد أم لا او هو نسخة من كلاس جزئي من هذا الكلاس او انه يحتوي دالة او interface من الكلاس قيد الاختبار
$manager = new Employee();
if ($manager instanceof Employee) echo "Yes";
تنبيه: اسم الكلاس هنا لا يتم وضعه في علامات تنصيص بل يكون حر كما في المثال وإذا ما وضعت التنصيص ترجع رسالة خطأ
وهذه الكلمة .
instanceof مفيدة عند العمل مع عدة كلاسات في نفس الوقت.
Autoloading Objects:
هذه الخاصية مفيدة في تكوين مكتبة من الكلاسات بصورة مرتبه لأن الكتبة كلما زاد عدد ملفاتها اصبح من الصعب استدعائها فاوجدت هذه الدالة لتسهيل عملية استدعاء ملفات المكتبات الكبيرة في البرامج(يمكن استخدامها مع التطبيقات الصغيرة أيضا :) ) بدلا من العمل بهذا الشكل.
require_once("classes/Books.class.php");
require_once("classes/Employees.class.php");
require_once("classes/Events.class.php");
require_once("classes/Patrons.class.php");
وفرت PHP5 نفس الميزة بإستخدام الدالة __autoload() لتقوم بالمهمة كالتالي.
function __autoload($class) {
require_once("classes/$class.class.php");
}
لكن يجب ان تعمل هذه الدالة في أي صفحة تحتاج فيها إلى استدعاء كلاسات من المكتبة
Summary:
وختاما قد شمل هذا الكورس
- object-oriented programming fundamentals
- لمحة من PHP’s basic object-oriented features
- مع توضيح ما استطعنا من التحسينات والاضافات التي تبنتها PHP 5
بقي بعض الدوال المساعدة والتي تهم كل من أراد ان يطور نفسه في البرمجة الموجهة مع بي اتش بي وهذه للإطلاع (صفحتين ) عليك الاطلاع عليها بدقة..
والسلام عليكم ورحمة الله
0 comments :
إرسال تعليق