PHP OOP - فئات وكائنات
الفئة عبارة عن قالب للكائنات ، والكائن هو مثيل للفئة.
حالة OOP
لنفترض أن لدينا فئة تسمى الفاكهة. يمكن أن تحتوي الفاكهة على خصائص مثل الاسم واللون والوزن وما إلى ذلك. يمكننا تحديد متغيرات مثل $ name و $ color و $ weight للاحتفاظ بقيم هذه الخصائص.
عندما يتم إنشاء الكائنات الفردية (تفاحة ، موزة ، إلخ) ، فإنها ترث جميع الخصائص والسلوكيات من الفصل ، ولكن كل كائن سيكون له قيم مختلفة للخصائص.
حدد فئة
يتم تعريف الفئة باستخدام class
الكلمة الأساسية ، متبوعة باسم الفئة وزوج من الأقواس المتعرجة ({}). تدخل جميع خصائصه وطرقه داخل الأقواس:
بناء الجملة
<?php
class Fruit {
// code goes here...
}
?>
نعلن أدناه عن فئة باسم Fruit تتكون من خاصيتين ($ name و $ color) وطريقتين set_name () و get_name () لإعداد والحصول على خاصية $ name:
<?php
class Fruit {
// Properties
public
$name;
public $color;
// Methods
function
set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
?>
ملحوظة: في الفصل ، تسمى المتغيرات بالخصائص وتسمى الوظائف بالوظائف!
تحديد الكائنات
الطبقات لا تخلو من الأشياء! يمكننا إنشاء كائنات متعددة من الفصل. يحتوي كل كائن على جميع الخصائص والأساليب المحددة في الفئة ، ولكن سيكون لها قيم خصائص مختلفة.
يتم إنشاء كائنات الفصل باستخدام new
الكلمة الأساسية.
في المثال أدناه ، $ apple و $ banana مثالان لفئة Fruit:
مثال
<?php
class Fruit {
// Properties
public
$name;
public $color;
// Methods
function
set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
$apple = new Fruit();
$banana = new Fruit();
$apple->set_name('Apple');
$banana->set_name('Banana');
echo $apple->get_name();
echo "<br>";
echo $banana->get_name();
?>
في المثال أدناه ، أضفنا طريقتين أخريين إلى فئة Fruit ، لتعيين خاصية $ color والحصول عليها:
مثال
<?php
class Fruit {
// Properties
public $name;
public $color;
// Methods
function set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
function set_color($color) {
$this->color = $color;
}
function get_color() {
return $this->color;
}
}
$apple = new Fruit();
$apple->set_name('Apple');
$apple->set_color('Red');
echo "Name: " . $apple->get_name();
echo "<br>";
echo "Color: " . $apple->get_color();
?>
PHP - $ هذه الكلمة الرئيسية
تشير الكلمة الأساسية $ this إلى الكائن الحالي ، ولا تتوفر إلا في العمليات الداخلية.
ننظر إلى المثال التالي:
مثال
<?php
class Fruit {
public $name;
}
$apple = new Fruit();
?>
إذن ، أين يمكننا تغيير قيمة خاصية $ name؟ هناك طريقتان:
1. داخل الفصل (عن طريق إضافة طريقة set_name () واستخدام $ this):
مثال
<?php
class Fruit {
public $name;
function set_name($name) {
$this->name = $name;
}
}
$apple = new Fruit();
$apple->set_name("Apple");
echo $apple->name;
?>
2. خارج الفصل (عن طريق تغيير قيمة العقار مباشرة):
مثال
<?php
class Fruit {
public $name;
}
$apple = new Fruit();
$apple->name = "Apple";
echo $apple->name;
?>
PHP - مثال
يمكنك استخدام instanceof
الكلمة الأساسية للتحقق مما إذا كان الكائن ينتمي إلى فئة معينة:
مثال
<?php
$apple = new Fruit();
var_dump($apple instanceof
Fruit);
?>