الدرس الثامن - Object-Oriented PHP) Static Class Members+The instanceof Keyword + Autoloading) | مايندز | علم ينتفع به
الأتصال بنا 61109-264-012

السبت، 11 يناير 2014

الدرس الثامن - Object-Oriented PHP) Static Class Members+The instanceof Keyword + Autoloading)


 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

الكلمة المفتاحية instanceof
 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 :

إرسال تعليق