Notice: Undefined offset: 1 in /home/envcasts/lib/Zend/Http/UserAgent/AbstractDevice.php on line 573

Notice: Undefined offset: 1 in /home/envcasts/lib/Zend/Http/UserAgent/AbstractDevice.php on line 585

Notice: Undefined offset: 1 in /home/envcasts/lib/Zend/Http/UserAgent/AbstractDevice.php on line 586
EnvCasts.Me | إنف كاست.الشرق الأوسط :: [3] برمجة الكيانات في لغة PHP
2595
مشاهدة
[3] برمجة الكيانات في لغة PHP
[3] برمجة الكيانات في لغة PHP
تفاصيل الحلقة
  • الدرجة : متوسطة
  • الفترة : ٢٠ دقيقة
 

الدرس الثالث من سلسلة بناء تطبيقات الويب بلغة بي اتش بي ، نستعرض فيها موضوع برمجة الكائنات في اللغة


تعريف : البرمجية الكائنية ( الكيانية او الكائنية )

هي نمط برمجة متقدم يقسم في البرنامج الى كائنات (object) كل كائن عبارة عن حزمة من البيانات والدوال
تكتب شيفرات الكائنات على شكل فئات ام ما تسمى Classes هذه الكلاسز تحتوي بداخلها شفرات برمجية تعرف الخواص ( البيانات ) والدوال وإسم الكلاس مما يمكننا من إنشاء كائنات objects .

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

ثانياً : البيانات في الفئات

تعرف البيانات في بداية الكلاس بإستخدام كلمة var متبوعة بإسم المتغير ويمكن اسناد قيمة للمتغير حين تعريفه .
<?php // الفئة Person class Person { var $age = 0 ; var $name ; } // end of person ?>

ثالثاً : أنواع البيانات أو الخصائص للفئات

المتغيرات : تحميل قيم خاصة بالكائن كالطول والوزن والإسم
الثوابت : تحمل قيم ثابتة لا تتغير ولا يمكن تغييرها تخص هذا الكائن
Static : ما يميز هذا النوع من الثوابت ان قيمته يمكن تغييرها لكنها ستكون قيمة مشتركة بين جميع الكائنات المنشئة من الفئة ، أي تغييرها سيتأثر فيه الجميع ، تستخدم عادة لتخزين خصائص ثابتة يتشاركها الجميع
<?php // الفئة Person class Person { var $age = 0 ; var $name ; const TYPE = "Human"; } // end of person ?>

رابعاً : الوصول والرؤية( visibility )

للتمكن من استخدام بيانات الفئات، لا بد من إنشاء الكائنات أولا بإستخدام كلمة new ، ويكون الوصول للمتغيرات الداخلية للكائن بطريقتين : الأولى مباشرة <?php // إنشاء كائن من نوع Person $mohammed = new Person(); // تعديل قيمة المتغير name $mohammed->name = "Mohammed Jebrini"; // الحصول على قيمة المتغير name echo $mohammed->name ; ?> الطريقة الثانية : بالوصول غير المباشر ، ويكون عن طريق بنا ءدالة داخل الكلاس ومن ثم استدعاء هذه الدالة التي بدورها تقوم بإعادة قيمة المتغير المطلوب <?php // الفئة Person class Person { var $age = 0 ; var $name ; const TYPE = "Human"; function getName(){ return $this->name; } function getType(){ return self::TYPE; } } // end of person // إنشاء كائن من نوع Person $mohammed = new Person(); // تعديل قيمة المتغير name $mohammed->name = "Mohammed Jebrini"; // الحصول على قيمة المتغير name echo $mohammed->getName() ; // الحصول على قيمة الثابت TYPE echo $mohammed->getType(); ?>

يستخدم المتغير $this داخل دوال الفئات للوصول لأي متغير داخل هذه الفئة ، ويستخدم المتغير self للوصول للثابت الحالي داخل الكائن

خامساً : الدوال

يمكن كتابة الدوال داخل الكائن بنفس طريقة كتابة الدوال ، ولكن ما يميزها انها مغلفة داخل الفئات ويمكن استدعائها من خلال الكائنات.

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

سادساً : صلاحية الوصول والرؤيا للكائنات (access)

1) عام (public)
يمكن الوصول للبيانات أو الدوال التي تحمل نوع public بشكل مباشر و غير مباشر من قبل الكائنات المنشئة من هذه الفئة .
2) محمي (protected)
يمكن الوصول للبيانات التي تحمل صلاحيات protected بشكل غير مباشر من الكائنات عن طريق دوال تحميل صلاحية public ، بينما يمكن الوصول المباشر وغير المباشر للمتغيرات داخل أي فئة ترث هذه الفئة
3) خاص (private)
لايمكن الوصول للبيانات التي تحمل صلاحية private من الكائنات بشكل مباشر ، بينما نستخدم دوال تحمل صلاحية public للوصول للقيم بشكل غير مباشر .


خلاصة : هيكل الفئة

<?php class Person { public $age = 0 ; public $name ; const TYPE = "Human"; public function getName(){ return $this->name; } public function getType(){ return self::TYPE; } // الدالة تحمل صلاحية public public function getInfo(){ // تستخدم النقطة للدمج بين النصوص $info = " The name : ".$this->name; $info .= "
"; // $info = $info."
" تكافيء $info .= " Age is : ".$this->age; return $info; } } $man = new Person(); $man->age = 20 ; echo $man->age ; echo "
"; $man->name = "Mohammed jebrini"; echo $man->name; echo "
"; echo $man->getName(); echo "
"; echo $man->getType(); echo "
"; echo $man->getInfo(); ?>

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

الكاتب : محمد عبد اللطيف

مهندس حاسوب يعمل في مجال تطوير تطبيقات الويب بخبرة سنوات بلغات مختلفة ، إبتدأ حياته المهنية في الويب و مازال عاملا فيه.

تابع mjebrini على تويتر

Facebook Twitter RSS

كن صديقاً وتابعنا

فريق EnvCasts.Me فريق اجتماعي ، نحن نتواصل بتويتات عبر تويوتر وفيس بوك ، تعرف إلينا

تسجيل الدخول بحساب تويتر

أهلا عزيزي الزائر
تسجيل الدخول بتويتر

إبق على إطلاع بكل جديد

للإشتراك في القائمة البريدية ، ضع بريدك الإلكتروني الصحيح في المكان المخصص

تابعنا عبر الفيس بوك

تحديثاتنا على تويتر

إعلانات عبر جوجل