PHP OOP Class va Obyektlar, Magic Methods
PHP OOP (Object Oriented Programming, Obyektga yo'naltirilgan dasturlash) da classlar va obyektlar:
class Fruit {
public $name;
public $color;
Qanday qilib obyekt ichidagi xususiyatga qiymat berish mumkin?
1. class ichida (set_name() metodi va this kalit so'zi bilan):
<?php
class Fruit {
public $name;
function set_name($nom) {
$this->name = $nom;
}
}
<?php
class Fruit {
public $name;
}
$apple = new Fruit();
$apple->name = "Apple";
PHP OOP Constructor
Konstruktor bu funksiya bo'lib class dan obyekt yaratayotganda obyekt xususiyatlarini ishga tushirishga imkon beradi.
Ya'ni class ichida konstructor funksiyasini yaratadigan bo'lsak, shu klassdan obyekt yaratayotganda PHP avtomatik ravishda shu konstruktor funksiyasini chaqiradi.
konstruktor funksiyasi sintaksisi:
Konstruktor funksiyasidan foydalanish bizga obyekt xususiyatlari uchun qiymatlarni class dan obyekt yaratayotganimizda argument sifatida berib yuborish imkonini beradi.
Konstruktor funksiyasidan foydalanish bizga klass ichida yuqoridagi misolda ko'rganimiz set_name() metodini (bilamizki class va obyekt ichidagi funksiyalar metod deb ataladi) chaqirishdan ozod qiladi va buning natijasida bir necha qator kod yozishni oldini oladi.
set_name() metodidan foydalanib obyekt xusisiyati qiymatini o'zgartirish:
<?php
class Fruit {
public $name;
function set_name($nom) {
$this->name = $nom;
}
Endi esa konstruktor funksiyasidan foydalanamiz:
<?php
class Fruit {
public $name;
function __construct($nom) {
$this->name = $nom;
}
}
<?php
class Fruit {
public $name;
public $color;
function __construct($name, $color) {
$this->name = $name;
$this->color = $color;
}
function get_name() {
return $this->name;
}
function get_color() {
return $this->color;
}
}
$apple = new Fruit("Apple", "red");
echo $apple->get_name();
echo "<br>";
echo $apple->get_color();
?>
PHP OOP Destructor
Destruktor ham funksiya bo'lib obyekt yo'q qilinayotganda yoki skript to'xtaganda yoki tuganda ishga tushadi.
Agar __destruct() funksiyasini yaratadigan bo'lsak PHP skript oxirida ushbu funksiyani chaqirib yuboradi.
Quyidagi misolda class ob'ekt yaratganimizda avtomatik ishga tushadigan __construct() funksiyasi va skript oxirida avtomatik chaqiriladigan __destruct() funksiyasi mavjud:
<?php
class Fruit {
public $name;
public $color;
function __construct($name) {
$this->name = $name;
}
function __destruct() {
echo "The fruit is {$this->name}.";
}
}
Kod natijasi quyidagicha: The fruit is apple.
Bu misoldan shuni ko'rish mumkinki yangi "apple" obyektini yaratishimiz bilan avtomatik destructor funksiya chaqirilib yuborilyapti.
<?php
class Fruit {
public $name;
public $color;
function __construct($name, $color) {
$this->name = $name;
$this->color = $color;
}
function __destruct() {
echo "The fruit is {$this->name} and the color is {$this->color}.";
}
}
Kod natijasi: The fruit is Apple and the color is red.
Konstruktorlar va destruktorlar kod miqdorini kamaytirishga yordam bergani uchun ular juda foydali!
PHP invoke()
invoke() magic metodi qachonki obyektni funksiya sifatida ishlatganda avtomatik ishga tushadi.
PHP Access Modifiers — PHP Kirish modifikatorlari
Xususiyatlar va usullarda ularga qayerda kirishni nazorat qiluvchi kirish modifikatorlari bo'lishi mumkin. Ular 3 xil:
- public - xususiyat va usulga istalgan joydan kirish mumkin. Bu default holati
- protected - xususiyat va usulga klass ichida va shu klassdan kelib chiqqan klass ichida kirish mumkin
- xususiyat va usullarga faqat klass ichida kirish mumkin
PHP Inheritance - Meros olish
Bu OOP ning asosiy tamoyillaridan biri bo'lib bitta klassdan boshqa klass kelib chiqqanda meros bo'lib o'tayotgan xususiyatlar tushuniladi
Farzand sinf ota sinfning barcha public va protected modifikatorli xususiyat va usullarini meros qilib olishi mumkin.