السلام عليكم ورحمة الله وبركاته
اجو توضيح ماذا تعني الدوال التالية بالتفصيل
وارجو ان يكون الشرح مبسط لمبتديء مثلي
كود PHP:
PARENT
كود PHP:
__set
كود PHP:
__get
وماذا يعني الرمز
كود PHP:
::
السلام عليكم ورحمة الله وبركاته
اجو توضيح ماذا تعني الدوال التالية بالتفصيل
وارجو ان يكون الشرح مبسط لمبتديء مثلي
كود PHP:
PARENT
كود PHP:
__set
كود PHP:
__get
وماذا يعني الرمز
كود PHP:
::
وعليكم السلام
اقرأ موضوع الاستاذ عبدالله عيد عن مفاهيم OOP
http://www.swalif.net/softs/swalif45/softs180086/
شكرا لك اخي mohdesgin
موضوع الاخ عبد الله عيد ممتاز لكنه يتحث عن برمجة الكائنات في الاصدار الرابع
والدوال المطلوبة هي موجودة في الاصدار الخامس؟
المشكلة اني بدأت بتعلم برمجة الكائنات والدروس العربية معدودة على عدد الاصابع ولاتتعمق في الموضوع
اما المواقع الاجنبية فهي مليئة بالدروس لكني لا افهم الشرح لبعض الدوال افهم البعض وبعضها لاافهمه لانه باللغة الانكليزية
ولما اضع السوأل في المنتديات لأجد سوى روابط ولااجد بها مطلبي او رابط الشرح المنيوال ؟
وهنا اطرح سوألي هل برمجة الكائنات غير مهمة ؟ ام المبرمجين العرب هملوها ؟
محمد منذر، عذراً على التأخر في الرد على مواضيعك .. لكن الوقت مشكلة والله ..
parent
الكلمة المحجوزة parent ، هي كلمة تشير إلى الكلاس الأصلي ( المورَّث ) في حال توريثه إلى كلاس آخر ..
هذا يعني أن :
فالكلاس الثاني يقوم بتوريث الأول ضمنه ، فكلمة parent ستمكنك من طلب أي Method من الكلاس الأول مباشرة ..كود PHP:
class myClass {
}
class myClass2 extends myClass {
}
اممم .. ! طيب ماهو رح يطلبها بالأساس حتى لو استخدمناها من داخل نفس الكلاس !
صحيح ، لكن أحياناً نقوم بإعادة تعريف دالة في الكلاس الثاني وهي موجودة في الأول، مثلاً :
لاحظ أنا قمنا بإعادة تعريف نفس الدالة بمحتوى آخر، وعندما احتجنا للدالة القديمة عدنا إلى الكلاس الأصل، باستخدام parent لتنفيذه ..كود PHP:
class myClass {
function myFunc() {
echo 'hello';
}
}
class myClass2 extends myClass {
function myFunc() {
echo 'hey';
}
function myFunc2() {
parent::myFunc();
}
}
$x = new myClass2;
$x->myFunc();
$x->myFunc2();
::
هذه العلامة تسمى " Paamayim Nekudotayim " ، لا تستغرب من الاسم ، هذا المعنى العبري لـ double-colon ، أي نقطتان رأسيتان مزدوجتان ..
وهي تحدد نطاق العمل، أي النطاق الذي تريد الحصول على الدوال منه، كما ذكرنا parent:: تجعل نطاق العمل هو الكلاس الأصلي ، وهكذا ..
إذا كنت تعمل خارج الكلاس، يمكنك الوصول إلى أي كلاس بواسطة اسمه :
في PHP 5.3.0 تم تفعيل استخدام المتغيرات قبل هذا الرمز ، أي:كود PHP:
myClass::myFunc();
حيث سيتم قراءة محتوى المتغير أولاً ،كود PHP:
$myVar::myFunc();
اعذرني لضيق الوقت، سأعود لاحقاً إن توفر الوقت إن شاء الله لشرح البقية ..
تحياتي، أشرف السمهوري
من بعد إذن الاخ أشرف السمهوري
بخصوص الدوال
هذه الدوال قامت البي اتش بي 5 بتوفيرها للتحكم في حالات إضافة الخصائص للكائنكود PHP:
__get
__set
__isset
__unset
__call
و يجب عند إنشائها ان تكون في الحالة public
مثال
كود PHP:
<?php
class Opp {
private $data = array(); // مصفوفه قمنا بإنشأها لتحتوي علي خصائص الكائن
// الداله set وظيفتها
// إنشاء العنصر داخل المصفوفه data
// تأخذ مدخلين الاول العنصر و الثاني قيمته
public function __set($name , $value){
echo "IS '$name=$value' create\n";
$this->data[$name] = $value;
}
// لحذف العنصر و مدخلها اسم العنصر
public function __unset($name){
echo "IS '$name' kill\n";
unset($this->data[$name]);
}
// التعرف علي وجود العنصر و مدخلها العنصر
public function __isset($name){
return isset($this->data[$name]);
}
// جلب العنصر و مدخلها العنصر
public function __get($name){
echo "IS '$name' get \n";
return $this->data[$name];
}
}
$object = new Opp ;
// هذه العملية تستدعي الداله __set للعنصر code
$object->code = '<b>Code</b>';
// هذه العملية __get
echo $object->code;
// هذه العملية __unset
unset($object->code);
?>
و هذه العمليات تم توفيرها لإتاحة تحكم اكبر في الكائن و تظهر فائدتها عند التعامل مع وجهات تتطلب ذلك
علي سبيل المثال الدوال
عند التعامل مع الوجهه ArrayAccessكود PHP:
offsetGet,offsetSet,offsetUnset,offsetExitsts
..
السلام عليكم ورحمة الله
في البداية اعتذر في تأخري لشكركم اخوتي ((اشرف + حازم )) على توضيحيكم لما طلبتهه جزاكم الله خيرا
بخصوص العلامة :: في شرح الاستاذ اشرف فوجدت شرح في موقع اجنبي ووضع ايضا المعنى العبري لها ؟!
Scope Resolution Operator
Officially called Paamayim Nekudotayim (Hebrew for double colon, now you know what the parser is talking about when you get errors), the scope resolution operator (: allows you to perform static calls to methods and class members.
ارجع لسوألي حول ال __Set وال __get
في شرح اعلاة للاستاذ حازم كان
دالة الset
ودالة getكود PHP:
// الداله set وظيفتها
// إنشاء العنصر داخل المصفوفه data
// تأخذ مدخلين الاول العنصر و الثاني قيمته
public function __set($name , $value){
echo "IS '$name=$value' create\n";
$this->data[$name] = $value;
}
وكان الاستدعاء لهم بالشكل التاليكود PHP:
// جلب العنصر و مدخلها العنصر
public function __get($name){
echo "IS '$name' get \n";
return $this->data[$name];
}
سوألي هو من اين جاء العنصر Code هو غير موجود في الدالتين فكيف تم استدعائه ؟!؟!؟!؟!كود PHP:
// هذه العملية تستدعي الداله __set للعنصر code
$object->code = '<b>Code</b>';
// هذه العملية __get
echo $object->code;
ارجو التوضيح بالتفصيل رجاء ان امكن
عذرا للاطالة لكني اريد ان اتعلم
وعذرا مرة اخرى في التاخر لشكركم