الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

شرح Reflection in PHP

بدأه khaledrx في 5 فبراير 2014 · 2 رد · 3,055 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ممكن شرح بالعربي للـ 

Reflection in PHP

 

وشكرااااا

#2

السلام عليكم  -> أخى العزيز

 

Reflection هى عبارة عن كلاس مدمجة فى PHP تستخدم مع Classes و Interfaces,

 

فكما تعرف أن كل class أو interface فى PHP تحتوى على:

  • خصائص (Properties)
  • دوال (Methods)
  • وسائط الدوال (Parameters)
  • غير ذلك

 

ولكن ما فائدة الـ Reflection ؟  لكى تعرف فائدتها أفهم معنى الكلمة (Reflection = انعكاس)

 

 

أعطيك مثال بسيط:

إذا نظرت فى المرآة ماذا ستشاهد ؟ أكيد طبعا ستشاهد نفسك أى حصل إنعكاس على نفسك فشاهدت تفاصيلك (وجهك, عينك, زراعك, إلى أخرة).

هكذا نفس الفكرة مع Reflection هى عبارة مرآة تعكس تفاصيل الـ Classes أو الـ interfaces المدمجة فى الـ PHP أو حتى التى تنشأها بنفسك.

 

 

تكلمنا كثيرا, لكن لازالت الرؤية غير واضحة, إذن سنقوم بإشاء مثال بسيط يوضح الفائدة.

لدينا Class أسمة information يستخدم فقط لتخزين بيانات(الاسم, العمر, الدولة)  بأستخدام method, ويمكن أستدعاء هذة البيانات بـ method أخر.

class information {
    
    private $name;
    private $age;
    private $country;

    public function __construct($name, $age, $country) {
        $this -> name = $name;
        $this -> age = $age;
        $this -> country = $country;
    }

    public function getInfo() {
        echo "Name: ".$this -> name."<br/>Age: ".$this -> age."<br/>Country: ".$this -> country;
    }

    public function setInfo($name, $age, $country) {
        $this -> name = $name;
        $this -> age = $age;
        $this -> country = $country;
    }

}

الان نريد أستخدام Reflection لكى نعلم بعض التفاصيل عن هذة الكلاس الذى قمنا بإنشائها.

 

 

بعض الامثلة التى سنقوم بعملها هى:

  • معرفة الـ Methods الخاصة بهذة الكلاس
$info = new ReflectionClass('information');
$methods = $info -> getmethods();
echo "<pre>";
print_r($methods);
echo "</pre>";

النتيجة: إظهار كافة الدوال التى تحتويها الكلاس.

 

  • معرفة الـ Properties الموجودة فى هذة الكلاس
$info = new ReflectionClass('information');
$Properties = $info -> getProperties();
echo "<pre>";
print_r($Properties);
echo "</pre>";

النتيجة: إظهار كافة الخصائص التى تحتويها الكلاس.

 

  • معرفة Parameters خاصة بدالة محددة .
$info = new ReflectionClass('information');
$method = $info -> getMethod('setInfo');
$parameters = $method -> getParameters();
echo "<pre>";
print_r($parameters);
echo "</pre>";

النتيجة: إظهار الوسائط الخاصة بدالة محددة.

 

 

ليس هذا فقط بل يوجد الكثيير من الـ Method التى تمتلكها Reflection والتى يمكنك أستخدمها لإستكشاف تفاصيل أى class أو interface .

يمكنك أكتشافنها من خلال هذا الرابط

 

هذة الموضوع مجرد نبذة قليلة عن Reflection, ولكن يمكن زيادة المعلومات بإجتهادك الشخصى.

 

بالتوفيق ..........

تم تعديل هذه المشاركة بواسطة مستر برمجة في 6 فبراير 2014 في 02:47

1

||||||||||||||||||||||||||||||||||||


||||||||||||||||||||||||||||||||||||


egypt_coa.gif


||||||||||||||||||||||||||||||||||||


||||||||||||||||||||||||||||||||||||

#3

الف شكر لك يا أخي العزيز بارك الله فيك ,هذا ما كنت احتاجه مقدمة لكي استطيع ان اجتهد شخصياا

مواضيع مشابهة