__construct
هي دالة Method تقوم بتعريفها في الكلاس لتحديد وظائف معينة تتم مباشرة عند استدعاء الكلاس ( إنشاء كائن يعمل عن طريق الكلاس ) .. يعني سيتم استدعاء هذه الدالة ( في حال وجودها ) عند الكود التالي:
كود PHP:
$x = new className();
ولهذا، يمكن استخدام هذه الدالة لإتمام التجهيزات اللازمة قبل عمل الكلاس ( عملية Initialization ) ..
__construct هي من نتاج التطويرات التي حدثت في PHP5 ، في حال لم يوجد __construct سيبحث المعالج عن دالة باسم الكلاس نفسه ( على الطريقة القديمة لبرمجة الكائنات في PHP ) ..
__destruct
يتم استدعاء هذه الدالة أيضاً بانتهاء تنفيذ الكلاس ، عن طريق حذف المرجع الخاص بالكلاس ، أو أي أمر يعمل على إنهاء عمل الكائن الذي يعتمد على الكلاس ..
__autoload
هذه الدالة تساعدنا على تضمين ملفات الكلاسات عند استدعائها .. فعندما يتم طلب كلاس معين عن طريق:
كود PHP:
$x = new className();
سيتم البحث عن هذه الدالة ، فإن كانت معرفة ، سيتم تمرير اسم الكلاس لها في الباراميتر الأول ، لذلك يمكننا تضمين ملف الكلاس عندما يتم طلبه في السكربت بصورة تلقائية بواسطة Autoload :
كود PHP:
function __autoload($classname) {
require_once './classes/'. $classname .'.php';
}
مجرد مثال ^ ..
static
المتغيرات التي تكون static في الكلاس ، لا يمكن الوصول إليها عن طريق المتغيرات المرجعية للكلاس ..
مثلاً: لنفرض أن لديك متغير في الكلاس هكذا:
كود PHP:
static $var = 'hello';
لا يمكنك استدعاء الكلاس وطباعته هكذا:
كود PHP:
$x = new className();
echo $x->var;
يمكن فقط هكذا:
كود PHP:
echo className::$var;
أما الدوال المعرفة بـ static ، مثل :
كود PHP:
static function myFunc() {
}
فيمكن استخدامها هكذا:
كود PHP:
$x = new className();
$x->myFunc();
لكن لاحظ أنه لا يمكن استخدام المتغير this$ داخل الدالة الـ Static ..
public
المتغير أو الفنكشن المعرفة على أنها public ، يمكن الوصول إليها من داخل الكلاس نفسه ، أو أي كلاس يعتمد عليه ( Extend ) ، أو حتى من خارج الكلاس ..
إذا لم تقم بتعيين حالة الفنكشن ، ستعتبر public افتراضياً ..

وفي PHP6 ، كلمة var التي اختفت من PHP5 ستعود مشيرة إلى public لتفادي المشاكل البرمجية مع السكربتات القديمة ..
protected
الفنكشنز أو المتغيرات المعرفة على أنها protected يمكن الوصول إليها عن طريق الكلاس نفسه ، أو عن طريق الكلاسات التي تعتمد أو ترث الكلاس .. ( Extend ) .. في حين لا يمكن الوصول إليها من خارج الكلاس ..
private
لا يمكن الوصول إلى هذه المتغيرات أو الدوال إلا من داخل الكلاس نفسه ، فلا يمكن الوصول من الكلاسات الأخرى التي تورّث الكلاس أو من خارج الكلاس ..
protected و private تستخدم عادة في تثبيت بعض المتغيرات بحيث لا تكون قابلة للتعديل عن طريق المبرمج أثناء استخدامه للكلاس ، حتى يعمل بالشكل المطلوب .. خوفاً من العبث ..
هذا ما لدي الآن .. وللأسف سأذهب الآن ، إذا عدت ولم أجد ردوداً أخرى تكمل الشرح سأكمله بنفسي بإذن الله تعالى ..
شكراً لتساؤلاتك

.. واعذرني على التقصير وعلى ما فات مني ..
تحياتي، أشرف السمهوري