النتائج 1 إلى 6 من 6

الموضوع: استفسار بخصوص ال oop ?؟

  1. #1
    عضو نشيط
    تاريخ التسجيل
    Jan 2008
    المشاركات
    202

    Cool استفسار بخصوص ال oop ?؟



    السلام عليكم ورحمة الله وبركاته

    اجو توضيح ماذا تعني الدوال التالية بالتفصيل
    وارجو ان يكون الشرح مبسط لمبتديء مثلي



    كود PHP:
    PARENT 

    كود PHP:
    __set 

    كود PHP:
    __get 

    وماذا يعني الرمز

    كود PHP:
    :: 








  2. #2
    عضو شرف
    تاريخ التسجيل
    Mar 2003
    المشاركات
    1,899


    وعليكم السلام

    اقرأ موضوع الاستاذ عبدالله عيد عن مفاهيم OOP

    http://www.swalif.net/softs/swalif45/softs180086/





    __________________
    محلل لنظم المعلومات - ارسل لي رساله خاصه عبر المنتدى | join me on facebook / twitter
    php | flash&flex&air actionscript 2,3 | ajax&javascript | database pro Analyzer

  3. #3
    عضو نشيط
    تاريخ التسجيل
    Jan 2008
    المشاركات
    202


    شكرا لك اخي mohdesgin
    موضوع الاخ عبد الله عيد ممتاز لكنه يتحث عن برمجة الكائنات في الاصدار الرابع
    والدوال المطلوبة هي موجودة في الاصدار الخامس؟

    المشكلة اني بدأت بتعلم برمجة الكائنات والدروس العربية معدودة على عدد الاصابع ولاتتعمق في الموضوع
    اما المواقع الاجنبية فهي مليئة بالدروس لكني لا افهم الشرح لبعض الدوال افهم البعض وبعضها لاافهمه لانه باللغة الانكليزية
    ولما اضع السوأل في المنتديات لأجد سوى روابط ولااجد بها مطلبي او رابط الشرح المنيوال ؟

    وهنا اطرح سوألي هل برمجة الكائنات غير مهمة ؟ ام المبرمجين العرب هملوها ؟






  4. #4
    عضو شرف
    تاريخ التسجيل
    May 2007
    المشاركات
    1,647


    محمد منذر، عذراً على التأخر في الرد على مواضيعك .. لكن الوقت مشكلة والله ..

    parent

    الكلمة المحجوزة parent ، هي كلمة تشير إلى الكلاس الأصلي ( المورَّث ) في حال توريثه إلى كلاس آخر ..

    هذا يعني أن :
    كود PHP:
    class myClass {
     
    }
     
    class 
    myClass2 extends myClass {
     

    فالكلاس الثاني يقوم بتوريث الأول ضمنه ، فكلمة parent ستمكنك من طلب أي Method من الكلاس الأول مباشرة ..

    اممم .. ! طيب ماهو رح يطلبها بالأساس حتى لو استخدمناها من داخل نفس الكلاس !
    صحيح ، لكن أحياناً نقوم بإعادة تعريف دالة في الكلاس الثاني وهي موجودة في الأول، مثلاً :
    كود 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(); 
    لاحظ أنا قمنا بإعادة تعريف نفس الدالة بمحتوى آخر، وعندما احتجنا للدالة القديمة عدنا إلى الكلاس الأصل، باستخدام parent لتنفيذه ..

    ::

    هذه العلامة تسمى " Paamayim Nekudotayim " ، لا تستغرب من الاسم ، هذا المعنى العبري لـ double-colon ، أي نقطتان رأسيتان مزدوجتان ..

    وهي تحدد نطاق العمل، أي النطاق الذي تريد الحصول على الدوال منه، كما ذكرنا parent:: تجعل نطاق العمل هو الكلاس الأصلي ، وهكذا ..

    إذا كنت تعمل خارج الكلاس، يمكنك الوصول إلى أي كلاس بواسطة اسمه :
    كود PHP:
    myClass::myFunc(); 
    في PHP 5.3.0 تم تفعيل استخدام المتغيرات قبل هذا الرمز ، أي:
    كود PHP:
    $myVar::myFunc(); 
    حيث سيتم قراءة محتوى المتغير أولاً ،

    اعذرني لضيق الوقت، سأعود لاحقاً إن توفر الوقت إن شاء الله لشرح البقية ..

    تحياتي، أشرف السمهوري





    __________________
    # اتبعني على Twitter
    # عِرفان ساهم ببناء المحتوى العربي العلمي على الإنترنت!

  5. #5


    من بعد إذن الاخ أشرف السمهوري
    بخصوص الدوال
    كود PHP:
    __get
    __set
    __isset
    __unset
    __call 
    هذه الدوال قامت البي اتش بي 5 بتوفيرها للتحكم في حالات إضافة الخصائص للكائن
    و يجب عند إنشائها ان تكون في الحالة 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);
     
     
    ?>

    و هذه العمليات تم توفيرها لإتاحة تحكم اكبر في الكائن و تظهر فائدتها عند التعامل مع وجهات تتطلب ذلك
    علي سبيل المثال الدوال
    كود PHP:
    offsetGet,offsetSet,offsetUnset,offsetExitsts 
    عند التعامل مع الوجهه ArrayAccess

    ..





    __________________
    الحمد لله
    إيحي بلس لحلول تطبيقات الويب
    هل جربت مضاعفة عدد زوار موقعك عن طريق خدمة زوار ؟

  6. #6
    عضو نشيط
    تاريخ التسجيل
    Jan 2008
    المشاركات
    202


    السلام عليكم ورحمة الله
    في البداية اعتذر في تأخري لشكركم اخوتي ((اشرف + حازم )) على توضيحيكم لما طلبتهه جزاكم الله خيرا

    بخصوص العلامة :: في شرح الاستاذ اشرف فوجدت شرح في موقع اجنبي ووضع ايضا المعنى العبري لها ؟!
    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
    كود PHP:
    // الداله set وظيفتها 
    // إنشاء العنصر داخل المصفوفه data
    // تأخذ مدخلين الاول العنصر و الثاني قيمته
      
    public  function __set($name $value){
     
               echo 
    "IS '$name=$value' create\n";
                
    $this->data[$name] =  $value;
             } 
    ودالة get

    كود PHP:
    // جلب العنصر و مدخلها العنصر
       
    public function __get($name){
          echo 
    "IS '$name' get \n";
         return 
    $this->data[$name];
        } 
    وكان الاستدعاء لهم بالشكل التالي
    كود PHP:
    // هذه العملية تستدعي الداله __set للعنصر code
    $object->code '<b>Code</b>';
    // هذه العملية __get
    echo $object->code
    سوألي هو من اين جاء العنصر Code هو غير موجود في الدالتين فكيف تم استدعائه ؟!؟!؟!؟!
    ارجو التوضيح بالتفصيل رجاء ان امكن
    عذرا للاطالة لكني اريد ان اتعلم
    وعذرا مرة اخرى في التاخر لشكركم










ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض