Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP

PHP الموجه نحو الكائنات مع الفئات والكائنات

by
Difficulty:BeginnerLength:LongLanguages:

Arabic (العربية/عربي) translation by osamagaradh (you can also view the original English article)

في هذه المقالة ، سنستكشف أساسيات البرمجة الشيئية في PHP. سنبدأ بمقدمة عن الفصول والأشياء ، وسنناقش بعض المفاهيم المتقدمة مثل الميراث وتعدد الأشكال في النصف الأخير من هذه المقالة.

ما هي البرمجة الشيئية (OOP)؟

البرمجة الموجهة للكائنات ، والتي يشار إليها عادة باسم OOP ، هي طريقة تساعدك على تطوير تطبيقات معقدة بطريقة سهلة الصيانة وقابلة للتطوير على المدى الطويل. في عالم OOP ، يتم التعامل مع كيانات العالم الحقيقي مثل الشخص أو السيارة أو الحيوانكأشياء. في البرمجة الشيئية ، تتفاعل مع التطبيق الخاص بك باستخدام الكائنات.  هذا يتناقض مع البرمجة الإجرائية ، حيث تتفاعل في المقام الأول مع الوظائف والمتغيرات العالمية.

في OOP ، هناك مفهوم " الفئة " ، والذي يستخدم لنمذجة أو تعيين كيان في العالم الحقيقي إلى قالب من البيانات ( الخصائص ) والوظائف ( الطرق ). " كائن " هو مثيل لفئة ، ويمكنك إنشاء مثيلات متعددة من نفس الفئة. على سبيل المثال ، هناك فئة شخص واحد ، ولكن العديد من كائنات الأشخاص يمكن أن تكون حالات من هذا الفصل - dan ، zainab ، hector ، إلخ.

يحدد الفصل الخصائص. على سبيل المثال، لفئة الشخص، قد يكون لدينا اسم ، عمر ، وPHONENUMBER . ثم سيكون لكل كائن شخص قيمه الخاصة لتلك الخصائص.

يمكنك أيضًا تعريف الطرق في الفئة التي تسمح لك بمعالجة قيم خصائص الكائن وتنفيذ العمليات على الكائنات. على سبيل المثال ، يمكنك تعريف طريقة الحفظ التي تحفظ معلومات الكائن في قاعدة البيانات.

ما هي فئة PHP؟

الفئة هي قالب يمثل كيانًا في العالم الحقيقي ، ويحدد خصائص وأساليب الكيان. في هذا القسم ، سنناقش التشريح الأساسي لفئة PHP النموذجية.

أفضل طريقة لفهم المفاهيم الجديدة هي على سبيل المثال. لذلك دعونا نلقي نظرة على فئةالموظف في المقتطف التالي ، والذي يمثل كيان الموظف.

و فئة الموظف جاء في السطر الأول يحدد موظف الدرجة. ثم نذهب إلى إعلان الخصائص والمنشئ وطرق الفئة الأخرى.

خصائص فئة في PHP

يمكن أن تفكر في خصائص الفئة كمتغيرات يتم استخدامها للاحتفاظ بمعلومات حول الكائن. في المثال أعلاه، لقد حددت ثلاثة خصائص -FIRST_NAME ، LAST_NAME ، و العمر . في معظم الحالات ، يتم الوصول إلى خصائص الفئة عبر كائنات تم إنشاء مثيل لها.

هذه الخصائص خاصة ، مما يعني أنه لا يمكن الوصول إليها إلا من داخل الصف. هذا هو مستوى الوصول الآمن للعقارات. سنناقش مستويات الوصول المختلفة لخصائص الفئة والطرق لاحقًا في هذه المقالة.

مقاولي لفئات PHP

مُنشئ هو أسلوب فئة خاص يسمى تلقائيًا عند إنشاء كائن. سنرى كيفية إنشاء كائنات في القسمين التاليين ، ولكن الآن عليك فقط أن تعرف أن المُنشئ يُستخدم لتهيئة خصائص الكائن عند إنشاء الكائن.

يمكنك تعريف مُنشئ عن طريق تحديد طريقة __construct .

طرق لفئات PHP

يمكننا التفكير في طرق الصف كوظائف تؤدي إجراءات محددة مرتبطة بالأشياء. في معظم الحالات ، يتم استخدامها للوصول إلى خصائص الكائن ومعالجتها وتنفيذ العمليات ذات الصلة.

في المثال أعلاه ، قمنا بتعريف طريقة getLastName ، والتي تُرجع آخر اسم مرتبط بالكائن.

إذن هذه مقدمة موجزة إلى بنية الفصل في PHP. في القسم التالي ، سنرى كيفية إنشاء كائنات من فئة الموظف .

ما هو كائن في PHP؟

في القسم السابق ، ناقشنا البنية الأساسية للفئة في PHP. الآن ، عندما تريد استخدام فصل دراسي ، تحتاج إلى إنشاء مثيل له ، والنتيجة النهائية هي كائن.  لذا يمكن أن نفكر في الفصل كمخطط ، والجسم هو شيء فعلي يمكنك العمل معه.

في سياق فئة الموظف التي أنشأناها للتو في القسم السابق ، دعنا نرى كيفية إنشاء كائن من هذا الصف.

تحتاج إلى استخدام الكلمة الأساسية الجديدة عندما تريد إنشاء كائن من أي فئة مع اسم الفئة الخاصة بها ، وستحصل على نسخة كائن جديد من هذا الصف.

إذا حددت فئة ما طريقة __construct وتتطلب وسائط ، فإنك تحتاج إلى تمرير تلك الوسيطات عند إنشاء كائن. في حالتنا ، يتطلب مُنشئ فئة الموظف ثلاث حجج ، وبالتالي قمنا بتمرير هذه الحالات عندما أنشأنا كائن $ objEmployee . كما ذكرنا سابقاً ،يتم استدعاء الأسلوب __construct تلقائياً عند إنشاء مثيل الكائن.

بعد ذلك ، قمنا باستدعاء أساليب فئة على كائن objEmployee $ لطباعة المعلومات التي تمت تهيئتها أثناء إنشاء الكائن. بالطبع ، يمكنك إنشاء كائنات متعددة من نفس الفئة ، كما هو موضح في المقتطف التالي.

الصورة التالية عبارة عن تمثيل رسومي لفئة الموظف وبعض مثيلاتها.

Object Instantiation

ببساطة ، الطبقة هي مخطط يمكنك استخدامه لإنشاء كائنات منظمة.

التغليف

في المقطع السابق ، ناقشنا كيفية إنشاء كائنات من فئة الموظف . من المثير للاهتمام ملاحظة أن الكائن objEmployee $ نفسه يلتف على خصائص وأساليب الفصل. بمعنى آخر ، فإنه يخفي تلك التفاصيل عن بقية البرنامج. في عالم OOP ، يسمى هذا تغليف البيانات.

يعتبر التغليف جانبًا مهمًا في OOP يسمح لك بتقييد الوصول إلى خصائص أو طرق معينة للكائن. وهذا يقودنا إلى موضوع آخر للمناقشة : مستويات الوصول.

مستويات الوصول

عندما تقوم بتعريف خاصية أو طريقة في فصل دراسي ، يمكنك أن تعلن أنه لديك أحد هذه المستويات الثلاثة العامة أو الخاصة أو المحمية .

الوصول العام

عندما تعلن خاصية أو طريقة عامة ، يمكن الوصول إليها من أي مكان خارج الصف. يمكن تعديل قيمة الخاصية العامة من أي مكان في شفرتك.

دعونا ننظر إلى مثال لفهم مستوى وصول الجمهور.

كما ترى في المثال أعلاه ، أعلنا عن خاصية الاسم لتكون عامة. ومن ثم ، يمكنك تعيينه من أي مكان خارج الصف ، كما فعلنا هنا.

الوصول الخاص

عندما تعلن خاصية أو طريقة كخاصة ، يمكن الوصول إليها من داخل الفصل فقط. هذا يعني أنك تحتاج إلى تحديد أساليب getter و setter للحصول على قيمة هذه الخاصية وضبطها.

مرة أخرى ، دعنا نراجع المثال السابق لفهم مستوى الوصول الخاص.

إذا حاولت الوصول إلى خاصية خاصة من خارج الصف ، فسيظهر خطأ فادح يتعذر الوصول إلى الخاصية Person: $ name . وبالتالي ، تحتاج إلى تعيين قيمة الخاصية الخاصة باستخدام طريقة setter ، كما فعلنا باستخدام طريقة setName .

هناك أسباب وجيهة وراء رغبتك في جعل الملكية خاصة. على سبيل المثال ، ربما يجب اتخاذ بعض الإجراءات (تحديث قاعدة بيانات ، مثلاً ، أو إعادة تقديم قالب) إذا تغيرت هذه الخاصية.  في هذه الحالة ، يمكنك تحديد طريقة تعيين والتعامل مع أي منطق خاص عند تغيير الخاصية.

الوصول المحمي

وأخيرًا ، عندما تقوم بتعريف خاصية أو طريقة محمية ، يمكن الوصول إليها من خلال نفس الفئة التي تم تعريفها والفئات التي ترث الفئة المعنية. سنناقش الميراث في القسم التالي ، لذا سنعود إلى مستوى الوصول المحمي بعد قليل.

ميراث

يعد الوراثة جانباً مهماً من نموذج البرمجة الشيئية التي تسمح لك بوراثة خصائص وأساليب الطبقات الأخرى من خلال توسيعها. تسمى الفئة التي يتم توريثها الفئة الأصل ، وتسمى الفئة التي ترث الفئة الأخرى فئة فرعية .  عند إنشاء مثيل للفئة الفرعية ، فإنه يرث خصائص وأساليب الفصل الأصل أيضًا.

دعونا نلقي نظرة على الصورة التالية لفهم مفهوم الميراث.

Inheritance

في المثال أعلاه ، الفئة " الشخص" هي الفئة الأصل ، وتمتد فئة الموظف أو ترث فئة الشخص ، ولذلك تسمى فئة فرعية.

دعونا نحاول الذهاب إلى مثال حقيقي لفهم كيفية عمله.

من المهم ملاحظة هنا أن فئة الموظف استخدمت الكلمة الممتدة لتوريث فئة الشخص. الآن ، يمكن لفئة الموظف الوصول إلى جميع خصائص وأساليب فئة الشخص المعلن عنها عامة أو محمية. (لا يمكن الوصول إلى الأعضاء المعلنين كخاصة).

في المثال أعلاه ، يمكن للكائن الموظف $ الوصول إلى getName و setNameالطرق التي تم تعريفها في فئة الشخص حيث يتم تعريفها على أنها عامة.

بعد ذلك ، تم الوصول إلى طريقة callToProtectedNameAndAge باستخدام طريقة getNameAndAge المحددة في فئة الموظف ، حيث تم الإعلان عنها على أنها محمية. أخيرًا ، يتعذر على كائن الموظف $ الوصول إلى طريقةcallToPrivateNameAndAge الخاصة بفئة الشخص لأنه قد تم اعتباره كخاص .

من ناحية أخرى ، يمكنك استخدام كائن الموظف $ لتعيين الخاصية العمرية لفئةالشخص ، كما فعلنا في طريقة setAge التي تم تعريفها في فئة الموظف ، حيث تم إعلان خاصية العمر على أنها محمية.

كان ذلك مقدمة موجزة للميراث. يساعدك على تقليل تكرار الكود ، وبالتالي يشجع على إعادة استخدام الكود.

تعدد الأشكال

يعد تعدد الأشكال مفهومًا مهمًا آخر في عالم البرمجة الشيئية التي تشير إلى القدرة على معالجة الأشياء بشكل مختلف استنادًا إلى أنواع بياناتها.

على سبيل المثال ، في سياق التوريث ، إذا كانت الفئة الفرعية تريد تغيير سلوك طريقة الفئة الأصل ، فيمكنها تجاوز هذه الطريقة. هذا ما يسمى تجاوز الأسلوب. دعونا نذهب بسرعة من خلال مثال واقعي لفهم مفهوم تجاوز الأسلوب.

كما ترى ، قمنا بتغيير سلوك أسلوب formatMessage بتجاوزه في فئةBoldMessage . الشيء المهم هو أن يتم تنسيق الرسالة بشكل مختلف استنادًا إلى نوع الكائن ، سواء كان ذلك مثيلًا للفئة الرئيسية أو الفئة الفرعية.

(بعض اللغات التي لها توجهات كائن لها أيضًا نوع من التحميل الزائد للطريقة التي تسمح لك بتعريف طرق متعددة للفئات بنفس الاسم ولكن عددًا مختلفًا من الوسيطات. هذا ليس مدعومًا بشكل مباشر في PHP ، ولكن هناك بعض الحلول لتحقيق ذلك وظائف.)

استنتاج

البرمجة الموجهة للكائنات هي موضوع شاسع ، وقد خدشنا سطح تعقيدها فقط. آمل أن يساعدك هذا البرنامج التعليمي في البدء في أساسيات OOP وأن ذلك يحفزك على المضي قدمًا وتعلم المزيد من موضوعات OOP الأكثر تقدمًا.

تعد البرمجة الموجهة للكائنات جانبًا مهمًا في تطوير التطبيقات ، بغض النظر عن التقنية التي تعمل بها. اليوم ، في سياق PHP ، ناقشنا اثنين من المفاهيم الأساسية لل OOP ، وانتهزنا أيضا الفرصة لتقديم عدد قليل من الأمثلة في العالم الحقيقي.

لا تتردد في نشر استعلاماتك باستخدام الخلاصة أدناه!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.