Sc®ipt
02-02-2011, 03:19 AM
بسم الله الرحمن الرحيم
http://upload.wikimedia.org/wikipedia/ar/thumb/8/85/%D8%B4%D8%B9%D8%A7%D8%B1_PHP.png/200px-%D8%B4%D8%B9%D8%A7%D8%B1_PHP.png
السلام عليكم و رحمة الله و بركاته ,, تحدثنا في الدرس السابق عن الأصناف و الكائنات و كيفية انشائهم و التعامل معهم و كيفية التعامل مع الخواص و العمليات التابعة لنفس الصنف ,, و قد قمنا بكتابة صنف يقوم بالعمليات الحسابية الأربعة و قمنا بتطبيق ما سبق من الأفكار على هذا الصنف و بإمكانكم الإطلاع على الدرس الماضي و الدروس السابقة في الدورة عبر الفهرس التالي :
[دورة php - الدرس الأول] - تحضير البرامج و كتابة اول برنامج (http://al79n.com/vb/showthread.php?t=60153)
[دورة php - الدرس الثاني] - المتغيرات و طريقة تعريفها و انواعها و التعامل معها (http://al79n.com/vb/showthread.php?t=60224)
[دورة php - الدرس الثالث] - الجزء الأول : الطباعة المدمجة و تنسيق الصفحات لعرضها (http://al79n.com/vb/showthread.php?t=60243)
[دورة php - الدرس الرابـع] - الجزء الثاني : طباعة المتغيرات في النصوص و بعض الدوال (http://al79n.com/vb/showthread.php?t=60264)
[دورة php - الدرس الخامس] - الثوابت و متغيرات النظام و دوال لا يستغني عنها اي مبرمج (http://al79n.com/vb/showthread.php?t=60306)
[دورة php - الدرس السادس] - الجزء الأول : النماذج و كيفية تصميمها و فوائدها (http://al79n.com/vb/showthread.php?t=60500)
[دورة php - الدرس السابع] - الجزء الثاني : معالجة بيانات النماذج و برمجتها (http://www.al79n.com/vb/showthread.php?t=60629)
[دورة php - الدرس الثامن] - الجزء الثالث : تطبيق عملي للنماذج - اتصل بن (http://www.al79n.com/vb/showthread.php?t=60739)
[دورة php - الدرس التاسع] - الجزء الأول : الجمل الشرطية : if وانواعها (http://www.al79n.com/vb/showthread.php?t=60763)
[دورة php - الدرس العاشر] - الجزء الثاني : الجمل الشرطية : جملة switch (http://www.al79n.com/vb/showthread.php?t=60792)
[دورة php - الدرس الحادي عشر] - الجزء الأول : جمل التكرار و الدوران : for + while (http://www.al79n.com/vb/showthread.php?t=60922)
[دورة php - الدرس الثاني عشر] - الجزء الثاني : تكملة جمل التكرار و تطبيقات عليها (http://www.al79n.com/vb/showthread.php?t=61245)
[دورة php - الدرس الثالث عشر] - الجزء الأول : المصفوفات الرقمية و تعريفها (http://www.al79n.com/vb/showthread.php?t=62112)
[دورة php - الدرس الرابع عشر] - الجزء الثاني : المصفوفات الحرفية و المركبة و تعريفها (http://www.al79n.com/vb/showthread.php?t=64223)
[دورة php - الدرس الخامس عشر] - الجزء الثالث : دوال المصفوفات (http://www.al79n.com/vb/showthread.php?t=64324)
[دورة php - الدرس السادس عشر] - اعادة استخدام الكود و ادراج الملفات (http://www.al79n.com/vb/showthread.php?t=64366)
[دورة php - الدرس السابع عشر] - انشاء و برمجة الدوال functions (http://www.al79n.com/vb/showthread.php?t=64389)
[دورة php - الدرس الثامن عشر] - مقدمة الى البرمجة الموجهة للكائنات (http://www.al79n.com/vb/showthread.php?t=64454)
[دورة php - الدرس التاسع عشر] - انشاء الأصناف classes و الكائنات objects (http://www.al79n.com/vb/showthread.php?t=64462)
و في درس اليوم بإذن الله سوف نتحدث عن موضوعين اساسيين في البرمجة الموجهة للكائنات و هي تعتبر صميم البرمجة الموجهة للكائنات و الموضوع الأول هو دالة بناء الصنف (constructor) و الموضوع الآخر و هو خصوصية الصنف و التحكم بمجال رؤية الصنف ,, و نبدأ على بركة الله ...
دالة بناء الصنف Constructor
دالة بناء الصنف هي دالة مثل باقي دوال التي يتم كتابتها داخل الصنف و لكنها لها مميزات و الميزة الأولى انها تقوم بتنفيذ نفسها تلقائيا بمجرد انشاء كائن من الصنف و الميزة الثانية لها اننا نستطيع اعطاء القيم الإبتدائية لخواص الصنف داخل هذه الدالة الآن سوف نكتب صنف جديد و نرى ما المقصود بهذا الكلام لاحظ المثال التالي :
<?php
class Car {
var $car_color;
var $car_num;
function Car($name){
echo "car ".$name." running now<br/>";
}
}
$obj1 = new Car("BMW");
$obj2 = new Car("OPEL");
?>
في البداية قمنا بإنشاء صنف اسميناه Car ثم قمنا بتعريف خاصيتين للصنف ثم كتبنا الدالة :
function Car($name){
echo "car ".$name." running now<br/>";
}
هذه الدالة تابعة للصنف و هي تستقبل مدخل واحد وهو name$ و داخل الدالة يتم طباعة المدخل الذي تم استقباله لكن ما هو الغريب في هذه الدالة ؟؟ ,, لاحظ يا عزيزي ان اسم الدالة هو Car اي بنفس اسم الصنف و هذه هي دالة البناء و يتم تنفيذها بمجرد انشاء كائن من الصنف Car كما سنلاحظ تاليا ,, اذا القاعدة في كتابة دالة البناء هي انها تكون بنفس اسم الصنف وهي حساسة لحالة الأحرف الصغيرة و الكبيرة ,, الآن لاحظ السطرين التاليين :
$obj1 = new Car("BMW");
$obj2 = new Car("OPEL");
هنا قمنا بإنشاء كائنين من الصنف Car و كل كائن منهم اخذ قيمة كما عرفنا في دالة البناء و هنا عندما تنفذ هذا الكود سوف تلاحظ ان دالة البناء تقوم بتنفيذ نفسها تلقائيا بمجرد انشاء كائن من الصنف Car و ذلك بدون برمجة دالة طباعة قيم و انما دالة البناء هي التي تقوم بطباعة القيم بمجرد انشاء الكائن
و ذكرنا ان دالة البناء تستخدم لإعطاء قيم اولية لخصائص الصنف , فمثلا لو اردنا كتابة صنف لإجراء عملية جمع و ايجاد المعدل لعلامات فإننا بالتأكيد بحاجة الى متغيرات داخل الصنف لتخزين قيمة المجموع و قيمة المعدل و يجب ان تكون قيمهم صفر لكي تكون النتائج صحيحة و نستطيع بتنفيذ هذه العملية من خلال دالة البناء لاحظ المثال التالي :
<?php
class calculateAvg {
var $sum;
var $avg;
function calculateAvg(){
$this->sum = 0;
$this->avg = 0;
}
function getSum($m1,$m2,$m3){
$this->sum = $m1 + $m2 + $m3;
return $this->sum;
}
function getAvg($s){
$this->avg = $s / 3;
return $this->avg;
}
}
$obj1 = new calculateAvg();
$sumation = $obj1->getSum(70,75,80);
$av = $obj1->getAvg($sumation);
echo "avg =".$av;
?>
في داخل الصنف قمنا بتعريف المتغير sum$ و المتغير avg$ و هذه المتغيرات هي التي ستحمل قيمة مجموع العلامات و المعدل لذلك يجب ان تكون قيمتها الإبتدائية صفر ,, و ثم قمنا بكتابة دالة البناء و في داخلها كتبنا :
$this->sum = 0;
$this->avg = 0;
و هذا يعني اعطي القيمة صفر للخاصية sum$ و الخاصية avg$ التابعة لهذا الصنف و هذا الكلام يعني قم بتصفير القيم لهذه الخواص بمجرد انشاء كائن من هذا الصنف و باقي العمليات هي عمليات جمع للقيم و ارجاع للكائن و حساب المعدل و ارجاعه للكائن ثم طباعة الناتج ..
الخصوصية و مجال الرؤية للأصناف visibility
من العنوان يتضح لنا انه عبارة عن مبدأ من مبادئ البرمجة الموجهة للكائنات ,, فعلى سبيل المثال انا و المسجل في الجامعة ليس لدينا نفس الصلاحيات في نظام الجامعة الإلكتروني فأنا ليس مصرح لي إلا برؤية علاماتي فقط لكن المسجل بإمكانه رؤية علامات جميع الطلاب و هكذا ,,,
قبل الدخول في مبدأ الخصوصية يجب ان نذكر ان لغة ال php لها عدة اصدارات و منها PHP3 و PHP4 و PHP5 و قريبا PHP6 و في كل اصدار من اصدارات هذه اللغة كانت هناك تعديلات و تحسينات , وهنا اريد ان اذكركم بأنني قلت لكم في الدرس السابق اننا عند تعريف خصائص الصنف يجب ان تكتب كلمة var و عند تعريف عملية خاصة للصنف فإننا نكتب كلمة function قبل اسم العملية ,, و هذه الأمور تعمل تماما مع الإصدار PHP4 لكن الآن اتى الإصدار PHP5 و قد اصبح هناك تحديثات على هذه الأمور و اصبح لدينا مبدأ الخصوصية ليكتمل مبدأ البرمجة الموجهة للكائنات من خلال ال (public , private , protected) و التي سنتعرف عليها الآن ...
هناك 3 مستويات للتحكم بحماية الصنف او الوصول لبيانات الصنف و هي المستوى العام public و في هذا المستوى اذا كانت الخصائص و الدوال معرفة على انها عامة فإن كل الكائنات من هذا الصنف تستطيع الوصول لبيانات هذه الخصائص و التعديل عليها و التحكم بالدوال , و المستوى الثاني و هو ال private و هو المستوى الخاص و هنا لا يستطيع اي كائن من الصنف ان يصل لبيانات الصنف من خارج الصنف و استعمال هذه البيانات المعرفة على انها private مقتصر على الدوال المعرفة داخل الصنف و المستوى الثالث و هو المستوى المحمي protected و هو نوع خاص يستخدم بالحماية عند استخدام الوراثة في الأصناف و سنتحدث عنه في الدرس القادم ...
الكلام مبهم نوعا ما لكن لاحظ معي المثال التالي لكي تفهم المقصود من كلامي :
<?php
class security {
public $x;
public function edit_value($y){
$this->x = $y;
}
}
$obj = new security;
$obj->x = 6;
echo $obj->x;
?>
لاحظ ان هذا الصنف بسيط لكن لاحظ اننا قمنا بالإستغناء عن الكلمة var و استبدالها بالكلمة public و هنا نعني ان القيمة x تستطيع الكائنات الوصول اليها مباشرة و التعديل على قيمتها كما تلاحظ في السطرين الأخيرين فقد قمنا بإعطاء قيمة الخاصية x و تساوي 6 ثم قمنا بطباعة قيمة الكائن و لاحظ ايضا اننا نستطيع كتابة الكلمة public قبل اسماء الدوال لكي نجعل الكائنات التي خارج الصنف بالوصل الى بياناتها و استخدامها
الآن سنغير الكلمة public في المثال السابق الى private لكي يصبح الكود كالتالي :
<?php
class security {
private $x;
public function edit_value($y){
$this->x = $y;
}
}
$obj = new security;
$obj->x = 6;
echo $obj->x;
?>
تلاحظ ان المتغير x اصبح private و هذا يعني ان الكائنات التي خارج الصنف لا تستطيع الإستخدام المباشر لهذه الخاصية و استخدامها مقتصر على الدوال التي بداخل الصنف لأنها خاصة داخل الصنف فقط و لا يستطيع اي كائن استخدامها مباشرة لذلك قم بتنفيذ الكود السابق و سوف ترى انه لن يطبع اي قيمة لأن الكائن obj$ لا يستطيع التعديل على قيمة الخاصية x$ لأنها معرفة private و لكن يستطيع التعديل على القيمة بطريقة غير مباشرة و هي استخدام دالة من دوال الصنف للتعديل لأن الدوال التي بداخل الصنف لديها الصلاحيات بتعديل قيم ال private لأنها على مستوى الصنف فقط و هذا الكلام ايضا على الدوال داخل الصنف فأي دالة من الممكن ان تكون public و نستطيع الوصول لها و استخدامها من خارج الصنف او ان تكون private و في هذه الحالة لا نستطيع الوصول لها و استخدامها من خارج الصنف و استخدامها يكون فقط من قبل الدوال الأخرى داخل الصنف
قبل ان انهي الدرس ان اذكر بأن دالة البناء هي دالة من نوع خاص و يجب في تعريفها ان تكون public لأنها تنفذ تلقائيا عند انشاء الكائن و اننا كتبناها private فإن برنامجنا سيتعطل بالكامل
الى هنا احبتي اصل معكم الى نهاية درس اليوم و سنتحدث في الدرس القادم عن التعامل مع الملفات في php و كيفية تخزينها و الكتابة عليها و انشائها و القرائة منها ثم سنعود الى البرمجة الموجهة للكائنات و الأصناف
و لكم مني اجمل تحية
اخوكم : زيد مراد
http://upload.wikimedia.org/wikipedia/ar/thumb/8/85/%D8%B4%D8%B9%D8%A7%D8%B1_PHP.png/200px-%D8%B4%D8%B9%D8%A7%D8%B1_PHP.png
السلام عليكم و رحمة الله و بركاته ,, تحدثنا في الدرس السابق عن الأصناف و الكائنات و كيفية انشائهم و التعامل معهم و كيفية التعامل مع الخواص و العمليات التابعة لنفس الصنف ,, و قد قمنا بكتابة صنف يقوم بالعمليات الحسابية الأربعة و قمنا بتطبيق ما سبق من الأفكار على هذا الصنف و بإمكانكم الإطلاع على الدرس الماضي و الدروس السابقة في الدورة عبر الفهرس التالي :
[دورة php - الدرس الأول] - تحضير البرامج و كتابة اول برنامج (http://al79n.com/vb/showthread.php?t=60153)
[دورة php - الدرس الثاني] - المتغيرات و طريقة تعريفها و انواعها و التعامل معها (http://al79n.com/vb/showthread.php?t=60224)
[دورة php - الدرس الثالث] - الجزء الأول : الطباعة المدمجة و تنسيق الصفحات لعرضها (http://al79n.com/vb/showthread.php?t=60243)
[دورة php - الدرس الرابـع] - الجزء الثاني : طباعة المتغيرات في النصوص و بعض الدوال (http://al79n.com/vb/showthread.php?t=60264)
[دورة php - الدرس الخامس] - الثوابت و متغيرات النظام و دوال لا يستغني عنها اي مبرمج (http://al79n.com/vb/showthread.php?t=60306)
[دورة php - الدرس السادس] - الجزء الأول : النماذج و كيفية تصميمها و فوائدها (http://al79n.com/vb/showthread.php?t=60500)
[دورة php - الدرس السابع] - الجزء الثاني : معالجة بيانات النماذج و برمجتها (http://www.al79n.com/vb/showthread.php?t=60629)
[دورة php - الدرس الثامن] - الجزء الثالث : تطبيق عملي للنماذج - اتصل بن (http://www.al79n.com/vb/showthread.php?t=60739)
[دورة php - الدرس التاسع] - الجزء الأول : الجمل الشرطية : if وانواعها (http://www.al79n.com/vb/showthread.php?t=60763)
[دورة php - الدرس العاشر] - الجزء الثاني : الجمل الشرطية : جملة switch (http://www.al79n.com/vb/showthread.php?t=60792)
[دورة php - الدرس الحادي عشر] - الجزء الأول : جمل التكرار و الدوران : for + while (http://www.al79n.com/vb/showthread.php?t=60922)
[دورة php - الدرس الثاني عشر] - الجزء الثاني : تكملة جمل التكرار و تطبيقات عليها (http://www.al79n.com/vb/showthread.php?t=61245)
[دورة php - الدرس الثالث عشر] - الجزء الأول : المصفوفات الرقمية و تعريفها (http://www.al79n.com/vb/showthread.php?t=62112)
[دورة php - الدرس الرابع عشر] - الجزء الثاني : المصفوفات الحرفية و المركبة و تعريفها (http://www.al79n.com/vb/showthread.php?t=64223)
[دورة php - الدرس الخامس عشر] - الجزء الثالث : دوال المصفوفات (http://www.al79n.com/vb/showthread.php?t=64324)
[دورة php - الدرس السادس عشر] - اعادة استخدام الكود و ادراج الملفات (http://www.al79n.com/vb/showthread.php?t=64366)
[دورة php - الدرس السابع عشر] - انشاء و برمجة الدوال functions (http://www.al79n.com/vb/showthread.php?t=64389)
[دورة php - الدرس الثامن عشر] - مقدمة الى البرمجة الموجهة للكائنات (http://www.al79n.com/vb/showthread.php?t=64454)
[دورة php - الدرس التاسع عشر] - انشاء الأصناف classes و الكائنات objects (http://www.al79n.com/vb/showthread.php?t=64462)
و في درس اليوم بإذن الله سوف نتحدث عن موضوعين اساسيين في البرمجة الموجهة للكائنات و هي تعتبر صميم البرمجة الموجهة للكائنات و الموضوع الأول هو دالة بناء الصنف (constructor) و الموضوع الآخر و هو خصوصية الصنف و التحكم بمجال رؤية الصنف ,, و نبدأ على بركة الله ...
دالة بناء الصنف Constructor
دالة بناء الصنف هي دالة مثل باقي دوال التي يتم كتابتها داخل الصنف و لكنها لها مميزات و الميزة الأولى انها تقوم بتنفيذ نفسها تلقائيا بمجرد انشاء كائن من الصنف و الميزة الثانية لها اننا نستطيع اعطاء القيم الإبتدائية لخواص الصنف داخل هذه الدالة الآن سوف نكتب صنف جديد و نرى ما المقصود بهذا الكلام لاحظ المثال التالي :
<?php
class Car {
var $car_color;
var $car_num;
function Car($name){
echo "car ".$name." running now<br/>";
}
}
$obj1 = new Car("BMW");
$obj2 = new Car("OPEL");
?>
في البداية قمنا بإنشاء صنف اسميناه Car ثم قمنا بتعريف خاصيتين للصنف ثم كتبنا الدالة :
function Car($name){
echo "car ".$name." running now<br/>";
}
هذه الدالة تابعة للصنف و هي تستقبل مدخل واحد وهو name$ و داخل الدالة يتم طباعة المدخل الذي تم استقباله لكن ما هو الغريب في هذه الدالة ؟؟ ,, لاحظ يا عزيزي ان اسم الدالة هو Car اي بنفس اسم الصنف و هذه هي دالة البناء و يتم تنفيذها بمجرد انشاء كائن من الصنف Car كما سنلاحظ تاليا ,, اذا القاعدة في كتابة دالة البناء هي انها تكون بنفس اسم الصنف وهي حساسة لحالة الأحرف الصغيرة و الكبيرة ,, الآن لاحظ السطرين التاليين :
$obj1 = new Car("BMW");
$obj2 = new Car("OPEL");
هنا قمنا بإنشاء كائنين من الصنف Car و كل كائن منهم اخذ قيمة كما عرفنا في دالة البناء و هنا عندما تنفذ هذا الكود سوف تلاحظ ان دالة البناء تقوم بتنفيذ نفسها تلقائيا بمجرد انشاء كائن من الصنف Car و ذلك بدون برمجة دالة طباعة قيم و انما دالة البناء هي التي تقوم بطباعة القيم بمجرد انشاء الكائن
و ذكرنا ان دالة البناء تستخدم لإعطاء قيم اولية لخصائص الصنف , فمثلا لو اردنا كتابة صنف لإجراء عملية جمع و ايجاد المعدل لعلامات فإننا بالتأكيد بحاجة الى متغيرات داخل الصنف لتخزين قيمة المجموع و قيمة المعدل و يجب ان تكون قيمهم صفر لكي تكون النتائج صحيحة و نستطيع بتنفيذ هذه العملية من خلال دالة البناء لاحظ المثال التالي :
<?php
class calculateAvg {
var $sum;
var $avg;
function calculateAvg(){
$this->sum = 0;
$this->avg = 0;
}
function getSum($m1,$m2,$m3){
$this->sum = $m1 + $m2 + $m3;
return $this->sum;
}
function getAvg($s){
$this->avg = $s / 3;
return $this->avg;
}
}
$obj1 = new calculateAvg();
$sumation = $obj1->getSum(70,75,80);
$av = $obj1->getAvg($sumation);
echo "avg =".$av;
?>
في داخل الصنف قمنا بتعريف المتغير sum$ و المتغير avg$ و هذه المتغيرات هي التي ستحمل قيمة مجموع العلامات و المعدل لذلك يجب ان تكون قيمتها الإبتدائية صفر ,, و ثم قمنا بكتابة دالة البناء و في داخلها كتبنا :
$this->sum = 0;
$this->avg = 0;
و هذا يعني اعطي القيمة صفر للخاصية sum$ و الخاصية avg$ التابعة لهذا الصنف و هذا الكلام يعني قم بتصفير القيم لهذه الخواص بمجرد انشاء كائن من هذا الصنف و باقي العمليات هي عمليات جمع للقيم و ارجاع للكائن و حساب المعدل و ارجاعه للكائن ثم طباعة الناتج ..
الخصوصية و مجال الرؤية للأصناف visibility
من العنوان يتضح لنا انه عبارة عن مبدأ من مبادئ البرمجة الموجهة للكائنات ,, فعلى سبيل المثال انا و المسجل في الجامعة ليس لدينا نفس الصلاحيات في نظام الجامعة الإلكتروني فأنا ليس مصرح لي إلا برؤية علاماتي فقط لكن المسجل بإمكانه رؤية علامات جميع الطلاب و هكذا ,,,
قبل الدخول في مبدأ الخصوصية يجب ان نذكر ان لغة ال php لها عدة اصدارات و منها PHP3 و PHP4 و PHP5 و قريبا PHP6 و في كل اصدار من اصدارات هذه اللغة كانت هناك تعديلات و تحسينات , وهنا اريد ان اذكركم بأنني قلت لكم في الدرس السابق اننا عند تعريف خصائص الصنف يجب ان تكتب كلمة var و عند تعريف عملية خاصة للصنف فإننا نكتب كلمة function قبل اسم العملية ,, و هذه الأمور تعمل تماما مع الإصدار PHP4 لكن الآن اتى الإصدار PHP5 و قد اصبح هناك تحديثات على هذه الأمور و اصبح لدينا مبدأ الخصوصية ليكتمل مبدأ البرمجة الموجهة للكائنات من خلال ال (public , private , protected) و التي سنتعرف عليها الآن ...
هناك 3 مستويات للتحكم بحماية الصنف او الوصول لبيانات الصنف و هي المستوى العام public و في هذا المستوى اذا كانت الخصائص و الدوال معرفة على انها عامة فإن كل الكائنات من هذا الصنف تستطيع الوصول لبيانات هذه الخصائص و التعديل عليها و التحكم بالدوال , و المستوى الثاني و هو ال private و هو المستوى الخاص و هنا لا يستطيع اي كائن من الصنف ان يصل لبيانات الصنف من خارج الصنف و استعمال هذه البيانات المعرفة على انها private مقتصر على الدوال المعرفة داخل الصنف و المستوى الثالث و هو المستوى المحمي protected و هو نوع خاص يستخدم بالحماية عند استخدام الوراثة في الأصناف و سنتحدث عنه في الدرس القادم ...
الكلام مبهم نوعا ما لكن لاحظ معي المثال التالي لكي تفهم المقصود من كلامي :
<?php
class security {
public $x;
public function edit_value($y){
$this->x = $y;
}
}
$obj = new security;
$obj->x = 6;
echo $obj->x;
?>
لاحظ ان هذا الصنف بسيط لكن لاحظ اننا قمنا بالإستغناء عن الكلمة var و استبدالها بالكلمة public و هنا نعني ان القيمة x تستطيع الكائنات الوصول اليها مباشرة و التعديل على قيمتها كما تلاحظ في السطرين الأخيرين فقد قمنا بإعطاء قيمة الخاصية x و تساوي 6 ثم قمنا بطباعة قيمة الكائن و لاحظ ايضا اننا نستطيع كتابة الكلمة public قبل اسماء الدوال لكي نجعل الكائنات التي خارج الصنف بالوصل الى بياناتها و استخدامها
الآن سنغير الكلمة public في المثال السابق الى private لكي يصبح الكود كالتالي :
<?php
class security {
private $x;
public function edit_value($y){
$this->x = $y;
}
}
$obj = new security;
$obj->x = 6;
echo $obj->x;
?>
تلاحظ ان المتغير x اصبح private و هذا يعني ان الكائنات التي خارج الصنف لا تستطيع الإستخدام المباشر لهذه الخاصية و استخدامها مقتصر على الدوال التي بداخل الصنف لأنها خاصة داخل الصنف فقط و لا يستطيع اي كائن استخدامها مباشرة لذلك قم بتنفيذ الكود السابق و سوف ترى انه لن يطبع اي قيمة لأن الكائن obj$ لا يستطيع التعديل على قيمة الخاصية x$ لأنها معرفة private و لكن يستطيع التعديل على القيمة بطريقة غير مباشرة و هي استخدام دالة من دوال الصنف للتعديل لأن الدوال التي بداخل الصنف لديها الصلاحيات بتعديل قيم ال private لأنها على مستوى الصنف فقط و هذا الكلام ايضا على الدوال داخل الصنف فأي دالة من الممكن ان تكون public و نستطيع الوصول لها و استخدامها من خارج الصنف او ان تكون private و في هذه الحالة لا نستطيع الوصول لها و استخدامها من خارج الصنف و استخدامها يكون فقط من قبل الدوال الأخرى داخل الصنف
قبل ان انهي الدرس ان اذكر بأن دالة البناء هي دالة من نوع خاص و يجب في تعريفها ان تكون public لأنها تنفذ تلقائيا عند انشاء الكائن و اننا كتبناها private فإن برنامجنا سيتعطل بالكامل
الى هنا احبتي اصل معكم الى نهاية درس اليوم و سنتحدث في الدرس القادم عن التعامل مع الملفات في php و كيفية تخزينها و الكتابة عليها و انشائها و القرائة منها ثم سنعود الى البرمجة الموجهة للكائنات و الأصناف
و لكم مني اجمل تحية
اخوكم : زيد مراد