• php
  • 8850
  • 14-7-2008
  • vividona
  • بعض المفاهيم : أولا : برمجة الكائنات ظهرت بصورة مختصرة في PHP3 و قد تم تطويرها بـ PHP4 و تم برمجة العديد من الموقع عليها مثل موقع زووبس الشهير. و لكن بنزول النسخة Php5 أصبحت مطلب من جميع المبرمجين. و يتوقع حدوث ثورة برمجية عند النزول المتوقعة لـ PHP6 ثانياً : برمجة الكائنات ليست لديها علاقة بـ PHP بل مصدرها الأصلي هو C و Java لذا لو كان ليس لديك إلمام بـبرمجة PHP فلا تتوقع برمج سطر واحد عن طريق برمجة الكائنات. يعني أن برمجة الكائنات عبارة عن فكرة مطورة و سلسة لتنفيذ أفكارك البرمجية و لكنها ليست هي من صميم PHP البتة. يتم عمل الكائنات عن طريق الكلاسات classes و بعض الدوال عن طريق الـ functions
    و يتم كتابة هذه الكلاسات كما يلي :
    <?php class UserRegistration {
    //do some thing here
    } ?>


    لاحظ أننا قد قمنا بكتابة كلمة (class) و بعدها (اسم الكلاس) ثم فتحنا قوسين معقوفين { } تمثلان جسد الكلاس أو محتوى الكلاس يتم داخل هذين القوسين إدراج أكوادنا البرمجية. و هذا هو الشكل الرسمي بالنسبة لبرمجة الكائنات و تشكيل و تكوين الكلاسات.
    بالنظر للمثال السابق يكون السؤال ما هي نوعية الأكواد التي تمثلان جسد الكلاس و التي سوف نقوم بإدراجها أو إنشاءها بين أقواس الكلاس. قبل أن نعرف كيفية تنفيذ أكواد php بين محتوى الكلاس يجب علينا أولا معرفة كيفية استدعاء تلك الأكواد و إخراج نتيجتها بطريقة سهلة و سلسة على أساس تعطينا الشيء الذي نريده في النهاية؟. و ذلك يتم عبر استخدام كائن يتم استخدامه من قبل المبرمج على شرط أن تتقدم هذا الكائن علامة الدولار.
    <?php
    class UserRegistration{
    //do something here
    }
    $user = new UserRegistration();
    $user2 = new UserRegistration();
    $user3 = new UserRegistration();
    ?>


    لاحظ أما يلي :
    * ن الكائن $user و $user2 و $user3 خارج أقواس الكلاس تحمل جميعها علامة الدولار و هي عبارة عن كائنات يتم اختيارها عن طريق المبرمج.
    * استخدامنا التابع new و هو تابع ثابت نستخدمه دوما عن طلبنا لاسم الكلاس.
    * قمنا بكتابة اسم الكلاس كما هو يتبعه قوسين عاديين.
    * قمنا في النهاية بوضع الفاصلة المنقوطة.
    نأتي هنا لمعرفة ما يخيف الجميع من اقتحام برمجة الكائنات
    يجب التدقيق جيدا حتى نقوم بإستيعاب ذلك سوية
    بعض الملاحظات :
    * تحتاج لتنظيم أفكارك جيداً لأن ما تكتبه من خصائص ضمن محتوى الكلاس يجب أن يكون ذا صلة. يعني كلمة (ألوان) تتكون من أعداد لاحصر لها من الألوان مثل الأحم - الأخضر - إلخ إلخ إلخ. يعني رتب أفكارك و أجعل كل ما تريده له علاقة بين بعضه البعض.
    * دعونا ننسى php4 لأنه قد تم تعطيلها رسميا من موقع php.net .
    * بالنسبة لـ php4 فإنها تستعي خصائصها بالمتغير var بعد كلمة كلاس مثال لذلك :
    <?php
    class UserRegistration{
    var $user;
    //do something here
    }
    $user = new UserRegistration();
    ?>
    و هي تفيد بأن التغير $user هو جزء من هذا الكلاس. سوف نقوم بإيقاف التعامل مع php4 و نسير في الركب مع php5 نظر لكثرة المشاكل بـ PHP4.
    و دعونا نعرف بماذا تم استبدال كلمة var
    لقد تم استبدال var بـ visibility
    و هي تتكون من ثلاث خصائص
    public
    protected
    private
    <?php
    class UserRegistration{
    public $username;
    public $password;
    public $email;
    private $id;
    protected $ip;
    }
    $user = new UserRegistration();
    ?>
    لاحظ أسفل الكلاس، لقد قمنا بإستخدام public و protected و private أمام متغيراتنا و لكننا عند الاستخدام لم نقوم بذلك عشوائيا و لكن هنالك قواعد و أسس تقوم عليها هذه الاستخدامات فلكل من public و protected و private استخدام خاص يؤدي إلى نتيجة خاصة , يقينا شر المشاكل التي كانت تحدث في PHP4
    إلى الآن كلاسنا عديم الجدوى لأننا لم نعطيه قيم حقيقية و لكن هي محاولة منا لمعرفة كيفية التنسيق قبل الانتقال للمراحل المهمة. كيفية استخدام visibility
    عند استخدام public يتم استدعاء المتغير اللي بعديها من خارج أو داخل الكلاس (له حرية تامة) لكن الحرية التامة لها سلبياتها لأنها شبيهه بـ PHP4 أي في بعض الأحيان نقوم ببرمجة متغيرات و نرغب في استخدام ضيق لها. و عند استخدامنا الدائم لـ public سنجد أن سكريتنا قد حدثت به العديد من المشاكل. (سوف نستعرض ذلك فيما بعد بالتفصيل الممل).
    عند استخدام protect يتم استدعاء المتغير اللي بعديها من داخل الكلاس فقط و هي بمثابة إنقاذ لإسكريبتاتنا من المشاكل الأكيدة التي ستحدث من public أي أستخدام الأكواد البرمجية تكون محصورة في كلاس واحد فقط دون غيره. و هي خاصية جديدة لا توجد في PHP4
    عند استخدام private يتم استدعاء المتغير اللي بعديها من داخل الكلاس فقط كما في protected تماما و أن أستخدام الأكواد البرمجية تكون محصورة في كلاس واحد فقط دون غيره. و هي خاصية جديدة لا توجد في PHP4. ملحوظة : ما هو الفرق بين protect و private ما دام ان الإثنين يتم استدعائهم من داخل الكلاس؟
    الإجابة أن المتغير بعد protect يمكن استخدامه و توريثه في كلاسات أخرى أي يمكن استدعائه أينما شئنا عن طريق الأمر extends بينما private تنحصر استخداماتها في كلاس واحد فقط و لا يتم توريثها إلى أي كلاس آخر و تنتهي مهمته بنهاية الكلاس. لذلك فإن ما نريد استخدامه دوما سوف نسخدم له public
    و أن ما نريد استخدامه في نطاق ضيق و لكن عن الرغبة و الإحتياج له نستدعيه نستخدم protected
    و إنا ما نريد استخدامه في نطاق ضيق و نريد انهائه بإنتهاء الكلاس و لا يتعداه لغيره من الكلاسات نستخدم private سوف نعرف مدى سهولة ذلك من خلال دخولنا في اللحم الحي
    كيفية استخدام public
    كما قلنا أن public يتم استدعائها من الخارج لاحظ المثال التالي :
    <?php
    class UserRegistration{
    public $Forum;
    public $Title;
    }
    $user = new UserRegistration();
    $user->Forum = \"منتدى بي اتش بي</br>\";
    $user->Title = \"خطوات نحو برمجة الكائنات - PHP\";
    print $user->Forum;
    print $user->Title;
    ?>
    لاحظ للتركيبة التالية التي تترجم عمل الكلاس:
    * قمنا بكتابة كلمة class
    * ثم أسم الكلاس UserRegistration
    * ثم فتحنا قوسين معقوفين.
    * ثم داخل القوسين كتبنا خصائص الكلاس و هي عبارة عن المتغيرات $forum و $Title تسبقهما كلمة public
    * خارج جسد القوسين قمنا بإستدعاء ما بداخل الكلاس من خصائص عن طريق الكائن $user
    * لاحظ أن علامة الدولار قد سبقة الكائن $user
    * لاحظ علامة تساوي و هي ضروري في استدعاء و بناء أي كلاس.
    * لاحظ التابع new و هو أيضا ضروريا في إستدعاء و بناء أي كلاس.
    * لاحظ أننا قمنا بكتابة أسم الكلاس UserRegistration
    * لاحظ أننا قمنا بفتح قوسين عاديين بعد اسم الكلاس UserRegistration().
    * لاحظ أننا قد وضعنا الفاصلة المنقوطة.
    * أسفل الكلاس أعدنا كتابة الكائن $user لترجمة ما بداخل السطر السابق.
    * بعد الكائن $user قمنا بوضع التابع <- و هو ضروري في ترجمة أي كلاس. نتيجة الاسكريبت السابق هي :
    منتدى بي اتش بي
    خطوات نحو برمجة الكائنات - PHP
    الدرس خاص بأخونا vividona
    كن أول من يقيم الموضوع
    12345