PHP البرمجة الشيئية (OOPs) مفهوم تعليمي مع مثال
ما هو OOPs؟
Object Oriented هو أسلوب لتطوير البرمجيات يقوم بتصميم التطبيقات حول كائنات العالم الحقيقي مثل الموظفين والسيارات والحسابات المصرفية وما إلى ذلك. تحدد الفئة خصائص وأساليب كائن العالم الحقيقي. الكائن هو حدوث فئة.
المكونات الثلاثة الأساسية لتوجيه الكائن هي؛
- التحليل الموجه للكائنات – وظائف النظام
- التصميم الموجه نحو الكائنات – بنية النظام
- البرمجة الشيئية – تنفيذ التطبيق
مبادئ البرمجة الشيئية
المبادئ الثلاثة الرئيسية لـ OOP هي:
- التغليف – يتعلق هذا بإخفاء تفاصيل التنفيذ وكشف الأساليب فقط. الغرض الرئيسي من التغليف هو؛
- تقليل تعقيد تطوير البرامج - عن طريق إخفاء تفاصيل التنفيذ وكشف العمليات فقط، يصبح استخدام الفئة أمرًا سهلاً.
- حماية الحالة الداخلية للكائن - يتم الوصول إلى متغيرات الفئة عبر طرق مثل get وset، مما يجعل الفصل مرنًا وسهل الصيانة.
- يمكن تغيير التنفيذ الداخلي للفئة دون القلق بشأن كسر الكود الذي يستخدم الفئة.
- وراثة - هذا يتعلق بالعلاقة بين الطبقات. العلاقة تأخذ شكل الوالدين والطفل. يستخدم الطفل الأساليب المحددة في الفصل الأصلي. الغرض الرئيسي من الميراث هو؛
- إمكانية إعادة الاستخدام – يمكن لعدد من الأطفال أن يرثوا من نفس الوالد. يعد هذا مفيدًا جدًا عندما يتعين علينا توفير وظائف مشتركة مثل إضافة البيانات وتحديثها وحذفها من قاعدة البيانات.
- تعدد الأشكال – يتعلق الأمر بوجود نموذج واحد ولكن العديد من طرق التنفيذ المختلفة. الغرض الرئيسي من تعدد الأشكال هو؛
- تبسيط صيانة التطبيقات وجعلها أكثر قابلية للتوسيع.
وجه الفتاة Concepts في PHP
PHP هي لغة برمجة نصية كائنية التوجه؛ وهو يدعم جميع المبادئ المذكورة أعلاه. يتم تحقيق المبادئ المذكورة أعلاه عن طريق؛
- التغليف - عن طريق استخدام طريقتي "الحصول" و"الضبط" وما إلى ذلك.
- وراثة - عن طريق استخدام الكلمة الأساسية الممتدة
- تعدد الأشكال - عن طريق استخدام الكلمة الأساسية للأدوات
الآن بعد أن أصبح لدينا المعرفة الأساسية بـ OOP وكيفية دعمها PHPدعونا نلقي نظرة على الأمثلة التي تنفذ المبادئ المذكورة أعلاه
ما هو UML؟
لغة النمذجة الموحدة UML هي تقنية تستخدم لتصميم وتوثيق الأنظمة الموجهة للكائنات.
تنتج لغة UML عددًا من المستندات، ولكننا سنلقي نظرة على مخطط الفئة الذي يعد مهمًا جدًا لبرمجة php الموجهة للكائنات.
مثال على مخطط الفئة
مفتاح مخطط الفئة
- إنّ الصندوق العلوي يحتوي على اسم الفئة
- إنّ الصندوق الأوسط يحتوي على متغيرات الفئة
- إنّ الصندوق السفلي يحتوي على أساليب الطبقة
- إنّ ناقص (-) علامة تعني النطاق الخاص
- إنّ زائد (+) علامة تعني النطاق العام
- إنّ التجزئة (#) التوقيع يعني النطاق المحمي
كيفية إنشاء فئة في PHP
يتم استخدام الكلمة الأساسية class لتحديد فئة في PHP. فيما يلي قواعد إنشاء فئة في PHP.
- يجب أن يبدأ اسم الفصل بحرف
- لا يمكن أن يكون اسم الفئة كلمة PHP محجوزة
- لا يمكن أن يحتوي اسم الفئة على مسافات
لنفترض أننا نريد إنشاء فصل لتمثيل الحيوانات.
سنبدأ بتحديد السمات المشتركة بين جميع الحيوانات.
- تنتمي جميع الحيوانات إلى عائلة مثل الحيوانات العاشبة والكرنفالات وما إلى ذلك.
- جميع الحيوانات تأكل الطعام
يوضح الرسم البياني أدناه الرسم التخطيطي للحيوان
دعونا الآن نقوم بترميز فئة الحيوانات لدينا
<?php class Animal { private $family; private $food; public function __construct($family, $food) { $this->family = $family; $this->food = $food; } public function get_family() { return $this->family; } public function set_family($family) { $this->family = $family; } public function get_food() { return $this->food; } public function set_food($food) { $this->food = $food; } } ?>
هنا،
- "private $family, $food" يعني أنه لا يمكن الوصول إلى المتغيرات مباشرة خارج الفصل (التغليف).
- "الوظيفة العامة __construct($family...)" هي طريقة إنشاء PHP. يتم استدعاء هذه الوظيفة كلما تم إنشاء مثيل للفئة. في هذه الحالة، نقوم بإعداد الأسرة والطعام.
- "الحصول على الوظيفة العامة ... ()" هي الطريقة المستخدمة للوصول إلى القيمة العائلية أو الغذائية (التغليف)
- "مجموعة الوظائف العامة...()" هي الطريقة المستخدمة لتعيين القيمة العائلية أو الغذائية (التغليف)
كيفية تنفيذ الميراث في PHP
سوف نعمل مع بقرة وأسد. يرث كل من البقرة والأسد من فئة الحيوان.
يوضح الرسم البياني للفئة أدناه العلاقات.
لاحظ أن البقرة ترث من فئة الحيوان وتحدد المتغير والأساليب الخاصة بها أيضًا.
لنقم الآن بترميز فئة البقرة
<?php class Cow extends Animal { private $owner; public function __construct($family, $food) { parent::__construct($family, $food); } public function set_owner($owner) { $this->owner = $owner; } public function get_owner() { return $this->owner; } } ?>
لنقم الآن بترميز فئة الأسد
<?php class Lion extends Animal { public function __construct($family, $food) { parent::__construct($family, $food); } } ?>
هنا،
- "الصنف... يمتد الحيوان" يجعل البقرة والأسد يستخدمان أساليب من صنف الحيوان (الوراثة).
كيفية إنشاء كائن من الفئة
يجب أن تكون فئات الحيوان والبقرة والأسد جميعها في نفس الدليل من أجل البساطة.
لنقم الآن بإنشاء التطبيق الذي يستخدم فئاتنا.
مثال فئة PHP
<?php require 'Animal.php'; require 'Cow.php'; require 'Lion.php'; $cow = new Cow('Herbivore', 'Grass'); $lion = new Lion('Canirval', 'Meat'); echo '<b>Cow Object</b> <br>'; echo 'The Cow belongs to the ' . $cow->get_family() . ' family and eats ' . $cow->get_food() . '<br><br>'; echo '<b>Lion Object</b> <br>'; echo 'The Lion belongs to the ' . $lion->get_family() . ' family and eats ' . $lion->get_food(); ?>
اختبار تطبيقنا
دعونا الآن نعرض طلبنا في متصفح الويب
حق رائع! دعونا الآن نلقي نظرة على المبدأ الثالث في OOP، وهو تعدد الأشكال.
لنفترض أننا نريد تطوير تطبيق يتصل بمحركات قواعد بيانات مختلفة مثل MySQL SQL الخادم ولكن استخدم نفس الواجهة الموحدة.
يمكننا إنشاء واجهة تحدد الطرق القياسية وفئة مجردة تنفذ الطرق الشائعة.
- السطح البيني - إنه مشابه لفئة. إنه يحدد فقط الأساليب والمعلمات.
- فئة مجردة - إنها فئة لا يمكن استخدامها لإنشاء كائن مباشرة. والغرض منه هو توفير تطبيقات جزئية أو كاملة للطرق الشائعة.
يوضح مخطط الفصل أدناه العلاقة بين فئاتنا المجردة والواجهة وفئات التنفيذ.
لنقم الآن بإنشاء فصلنا المجرد
<?php abstract class DBCommonMethods { private $host; private $db; private $uid; private $password; public function __construct($host, $db, $uid, $password) { $this->host = $host; $this->db = $db; $this->uid = $uid; $this->password = $password; } } ?>
هنا،
- "الفئة المجردة" تعني أنه لا يمكن استخدام الفئة مباشرة لإنشاء كائن PHP
- "$host,$db..." هي متغيرات فئة مشتركة بين جميع التطبيقات
- "الوظيفة __construct(...)" هي طريقة إنشاء فئة php التي تحدد قيم المتغيرات الشائعة عند التهيئة
لنقم الآن بإنشاء الواجهة التي تحتوي على الطرق القياسية التي سيتم تنفيذها بشكل مختلف اعتمادًا على محرك قاعدة البيانات.
<?php interface DBInterface { public function db_connect(); public function insert($data); public function read($where); public function update($where); public function delete($where); } ?>
هنا،
- "الواجهة" هي الكلمة الأساسية لإنشاء الواجهات
- "الوظيفة العامة...(...)" هي الأساليب القياسية التي ينبغي تنفيذها
لنقم الآن بإنشاء الفئات المحددة التي ستوسع فئة DBCommonMethods وتوسع واجهة DBInterface. MySQLDriver.php
<?php class MySQLDriver extends DBCommonMethods implements DBInterface { public function __construct($host, $db, $uid, $password) { parent::__construct($host, $db, $uid, $password); } public function db_connect() { //connect code goes here } public function delete($where) { //delete code goes here } public function insert($data) { //insert code goes here } public function read($where) { //read code goes here } public function update($where) { //update code goes here } } ?>
MSSQLServerDriver.php
<?php class MSSQLServerDriver extends DBCommonMethods implements DBInterface { public function __construct($host, $db, $uid, $password) { parent::__construct($host, $db, $uid, $password); } public function db_connect() { //connect code goes here } public function delete($where) { //delete code goes here } public function insert($data) { //insert code goes here } public function read($where) { //read code goes here } public function update($where) { //update code goes here } } ?>
هنا،
- يستخدم "الفئة ... يمتد DBCommonMethods" الأساليب الموجودة في DBCommonMethods
- "... ينفذ DBInterface" يضمن أن الفئة توفر أساليب قياسية بغض النظر عن برنامج تشغيل قاعدة البيانات المستخدم.
استخدام الكود أعلاه سيبدو الكود الذي يستخدم الفئة أعلاه هكذا
<?php $db = new MySQLDriver($host,$db,$uid,$password); ?>
Or
<?php $db = new MSSQLServerDriver ($host,$db,$uid,$password); ?>
سيكون باقي الكود هو نفسه لكلا السائقين مثل؛
<?php $db->db_connect(); $db->insert($data); ?>
الملخص
- البرمجة الشيئية (OOP) هي تقنية قوية تعمل على تصميم التطبيقات وفقًا لكائنات العالم الحقيقي
- الفئة هي تمثيل لكائنات العالم الحقيقي بخصائص وأساليب
- المبادئ الأساسية الثلاثة لـ OOP هي:
- التغليف
- وراثة
- تعدد الأشكال