3276
مشاهدة
مشاهدة
![[4] إنشاء الكائنات و إسناد القيم في PHP](/posts/cast/icon?u=contents/2011_05_22/build-web-application-with-php-4.jpg&w=200&h=200)
تفاصيل الحلقة
- المدة : ١١ دقيقة
- المستوى : متقدم
مقدمة :
الحلقة الرابعة من سلسلة بناء تطبيقات الويب بلغة بي إتش بي عن كيفية إنشاء الفئات وتكديس ( تعبئة ) البيانات في الكائنات بشكل سريع حين إنشائها ، قبل البدء لمتابعة الحلقات السابقة عبر الروابطالحلقة الأولى
أساسيات لغة بي اتش بي
برمجة الكائنات
أولاً: بناء الفئة
قم ببناء فئة التدوينة وعرف بها متغيرات خاصة للتدوينة كالرقم المفتاحي و العنوان والمحتوى و إسم الكاتب ، وجميع هذه الخواص ( المتغيرات ) تحمل صلاحية خاصة private
<?php
class Post {
private $title ;
private $body;
private $author;
private $id;
}
?>
ثانياً: دالة البناء __construct()
هي أحدى الدوال السحرية في لغة بي اتش بي وهي أول دالة يتم استدعائها حين إنشاء كائن من فئة ويستفاد منها في إسناد القيم الإبتدائية للمتغيرات حين إنشاء الكائنات او القيام بأي عملية ممكن ان نحتاج لعملها عندك انشاء الكائن وقبل استخدامه في أي شي آخر ، و يكتب بالصيغة التالية :
<?php
class Post {
private $title ;
private $body;
private $author;
private $id;
public function __construct(array $options = null){
// the first method called when new object initiated
}
}
?>
“ يتم إستدعاء دالة البناء حين إنشاء الكائن و يمكن تمرير المتغيرات لها عبر وضعها بين أقواس إسم الفئة حين على الشكل التالي "
$object = new Post("my Variable");
ثالثاً: دالة الهدم __desctruct()
هي أيضا إحدى الدوال السحرية في لغة بي إتش بي وهي أخر دالة يتم استدعائها عندك انتهاء دورة حياة الكائن في التطبيق .وتكتب بالصيغة التالية :
<?php
class Post {
private $title ;
private $body;
private $author;
private $id;
public function __construct(array $options = null){
// دالة البناء تستدعى كأول دالة حين الانشاء
}
public function __destruct(){
// دالة الهدم
}
}
?>
رابعاً: بناء دوال الخواص ( setter and getter )
تبنى الخواص بهدف الحصول على قيمة المتغيرات ذات الصلاحيات الخاصة و المحمية بشكل غير مباشر ، وتحمل دوال الخواص صلاحية عامة public وذلك لحاجتنا لإستدعائها بإستخدام اسم الكائن
<?php
public function setId($value){
$this->id = $value;
}
public function getId(){
return $this->id;
}
public function setTitle($value){
$this->title=$value;
}
public function getTitle(){
return $this->title;
}
.
.
.
?>
خامساً: المصفوفة المفتاحية
المصفوفات في لغة بي اتش بي تتصف بمرونة كبيرة جدا ، حيث يمكننا صناعة مصفوفات على شكل مفتاح وقيمة ، ويكون الوصول لها بإسم المصفوفة و استخدام المفتاح كقيمة مفتاحية في المصفوفة . وكما تتعدد أشكال جملة التكرار للوصول ، للبيانات وقد أشرت سابقاً إلى تعرضنا بشكل أعمق للمصفوفات ، أشرحها بشكل سريع هنا :
<?php
// المصفوفة الأحادية
$normal = array(1,"Mohammed",2);
foreach($normal as $row):
echo $row." - ";
endforeach;
// output : 1 - Mohammed - 2
foreach($normal as $key=>$row){
// $key = index value of the element
echo $key." => ".$row." ";
}
// output : 0 => 1 1 => Mohammed 2 => 2
// المصفوفة الفتاحية
$array = array('index1'=>'value1' , 'index2'=> 'value2');
foreach($array as $index => $value )
echo $key." => ".$row." ";
// output : index1 => value1 index2=>value2
?>
سادساً: إنشاء الكائن بالبيانات
لابد من إرسال مصفوفة مفتاحية تحمل إسم المتغير على سبيل المثال وقيمته إلى دالة البناء ، وفي دالة البناء ببناء جملة تكرار لقراءة المصفوفة وثم استدعاء دالة الـ set الخاصة بذلك المتغير بشكل تلقائي و ارسال القيمة الجديدة لها لتقوم بدورها باسناد القيمة لذلك المتغير ، ويتم ذلك عن طريق دمج المقطع set مع المفتاح في المصفوفة المرسلة لينتج لنا اسم الدالة مخزنا في متغير وثم نقوم بإستدعاء الدالة على الشكل التالي :
<?php
$post = new Post(array('Id'=>10,'Title'=>'Magic Functions'));
echo $post->getId();
echo "
";
echo $post->getTitle();
?>
الناتج النهائي للفئة :
<?php
class Post {
private $title ;
private $body;
private $author;
private $id;
public function __construct(array $options = null){
// the first method called when new object initiated
if($options != null && is_array($options)){
$this->setOptions($options);
}
}
public function setOptions($options){
$method = "";
foreach($options as $key=>$value){
$method = "set".$key;
// auto call for setId , setTitle ..
$this->$method($value);
}
}
public function setId($value){
$this->id = $value;
}
public function getId(){
return $this->id;
}
public function setTitle($value){
$this->title=$value;
}
public function getTitle(){
return $this->title;
}
public function setAuthor($value){
$this->author = $value;
}
public function getAuthor(){
return $this->author;
}
public function setBody($value){
$this->body = $value;
}
public function getBody(){
return $this->body;
}
public function __destruct(){
// the final method
}
}
$post = new Post(array('Id'=>10,'Title'=>'Magic Functions'));
echo $post->getId();
echo "
";
echo $post->getTitle();
?>