التخطي إلى المحتوى
الدرس  السادس  –  Object-Oriented PHP)  Key OOP Concepts)

Key OOP Concepts

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

 

مرحبا بكم في أكاديمية مايندز في الدرس السادس من اساسيات البرمجة الموجهة.

PHP تدعم ست نطاقات  public, private, protected, abstract, final, and static. عند إعلان أي دالة تكتب قبلها إحدى هذه الكلمات وفي حالة عدم كتابة أي واحدة منها يكون الافتراضي public

Public 
              وفي هذا الوضع يمكن الوصول للدالة في اي وقت من أي مكان. قبل اعلان الدالة كما

<?php

class Visitors{
public function greetVisitor(){
echo “Hello<br />”;
}
function sayGoodbye(){
echo “Goodbye<br />”;
}
}

Visitors::greetVisitor();
$visitor = new Visitors();
$visitor->sayGoodbye();
?>

result::
============
Hello
Goodbye
============


Private
      هنا الدالة تكون متاحة داخل الكلاس نفسه ولا يمكن استدعاءها من خلال الـ  object ولا من قبل الكلاسات الوارثه للكلاس المعلن فيه الدالة مثل هذه الدوال تستخدم كدوال مساعدة في الكلاس مثل دوال التحقق والاختبار لشروط محددة


private function validateCardNumber($number){
if (!ereg(‘^([0-9]{4})-([0-9]{3})’) )
return FALSE;
else
return TRUE;
}

Protected
         وهذا النوع النطاق يتيح إستخدام الدالة بنفس الطريقة السابقة بإضافة ميزة وهي إمكانية إستدعاء الدالة من الكلاس الوارث (الابن) للدالة من كلاس اخر (أب).

<?php
class verify{
protected function verifyEIN($ein){
return TRUE;
}

}
class Employee extends verify{
private $ein;
function __construct($ein){

if ($this->verifyEIN($ein)) {
echo “EIN verified. Finish”;
}
}

}

$employee = new Employee(“123-45-6789”);
?>

سيكون الخرج كالتالي
EIN verified. Finish

 

Abstract
    تعلن الدالة في هذه الحالة في الكلاس (أب) فقط وتستخدم في كلاس (إبن) والكلاسات التي تعرف كـ abstract هي فقط التي يمكن ان تحتوي على دوال تعرف كـ abstract methodes ويكون شكلها كالتالي 

abstract function methodName();
يمكن استخدام الـabstrtact  عندعمل كلاس يكون اساسي يخدم عدة كلاسات أخرى تشترك في نفس الدالة.
كلاس الموظف فيه المديرين والعمال والمهندسين وغيرهم لذلك يمكن ان يخدم هذا النوع بشكل جيد

abstract class Employee{

abstract function hire();
abstract function fire();
abstract function promote();
abstract demote();

}

Final
    تعريف الدالة بهذا النطاق يمنع الكلاسات الفرعية (الابناء) من الكتابة على الخاصية  overridden يعني لا يمكن ان تعلن أخرى بنفس الاسم في الكلاسات الفرعية
.

class Employee{
final function getName() {

}
}

أما بالنسبة للـ static   فسنتحدث عنها لاحقا بشكل مفصل

Type Hinting
هي خاصية في PHP 5 تعمل على التأكد من القيم التي تمرر للدوال كبراميترات مثلا :

<?php
class verify{
protected function verifyEIN($ein){
return TRUE;
}

}
class Employee extends verify{
private $ein;
function __construct($ein){

if ($this->verifyEIN($ein)) {
echo “EIN verified. Finish”;
}
}

public function xx(verify $a){
var_dump($a);
}
}
$employee = new Employee(“123-45-6789”);
$employee->xx(‘dd’);

?>
الدالة xx(); نمرر لها المتغير $a والذي  object من نوع  verify  فعند تمرير  نص للدالة عند استدعائها يعطي خطأ لأن المتغير له مواصفات حددناها مسبقا فإذا حدث أي إختلاف في الكلاس او النسخة من الكلاس الذي نعين على اساسه البراميتر يعطيك المترجم خطأ كالأتي:
Catchable fatal error: Argument 1 passed to Employee::xx() must be an instance of verify, string given, called in C:AppServwwwtest.php on line 26 and defined in C:AppServwwwtest.php on line 17
يمكن ايضاً تقييد البراميتر بنصي او رقمي او غير ذلك
function aa(int $x);
function aa(string $x);
function aa(bool $x);
function aa(float $x);
….
إلى هذه النقطة نكون قد وصلنا إلى نهاية درس اليوم موعدنا يوم السبت والثلاثاء من كل الاسبوع ان شاء الله

عن الكاتب

التعليقات

أضف تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

Shares