August 18, 2024

PHP bo'yicha masalalar

PHP da class va obyektlar bo'yicha masala

Keling Fruit sinfini yaratamiz

class Fruit {

public $name;

public $color;

}

Endi bu sinfda obyekt yaratamiz va sinfning name va color xususiyati qiymatini ekranga chiqaramiz

$olma = new Fruit;

$olma->name = "olma";

$olma->color = "qizil";

echo $olma->name . "<br>";

echo $olma->color;

NATIJA

olma

qizil

Endi esa shu sinfni yana kengaytiramiz

Strawberry sinfi shu sinfni kengaytirsin va unga yangi set_name() metodini qo'shamiz

class Strawberry extends Fruit

{

public function set_name($nom, $rang) 

  {

$this->name = $nom;

$this->color = $rang; 

  }

};

Endi esa shu sinfdan obyekt yarataylik. Yangi obyektimiz $name va $color xususiyatlariga ega bo'lishdan tashqari set_name() metodiga ham ega bo'ldi

$maymunjon = new Strawberry;

$maymunjon->set_name('maymunjon', 'siyohrang');

echo $maymunjon->name . "<br>";

echo $maymunjon->color;

bu yerda obyekt xususiyatlari qiymatini set_name() metodi orqali berdik.

NATIJA

maymunjon

siyohrang

Keling endi Behi sinfi strawberry sinfini kengaytirsin va unga qo'shimcha usullarni qo'shaylik

class Behi extends Strawberry

{     public function get_name()

    {

        return $this->name;

    }     public function get_color()

    {       

return $this->color;

    }

}

Yaratgan sinfimiz ota sinflaridan xususiyat va usullarni meros qilib oladi. Yani Fruit sinfida $name va $color, Strawberry sinfidan set_name() metodini.

Shu bilan birga o'zi ham get_name() va get_color() metodiga ega bo'ldi

Endi shu sinfdan behi obyektini yaratamiz:

$behi = new Behi; $behi->set_name ('behi', 'tillarang');

echo $behi->get_name()."<br>";

echo $behi->get_color();

NATIJA

behi

tillarang

Konstruktor funsiyasini qo'shish

Fruit sinfini Shaftoli sinfi kengaytirsin va unga konstruktor funksiyasini qo'shaylik:

class Shaftoli extends Fruit

{

    function __construct($nom, $rang)

    {        $this->name = $nom;        $this->color = $rang;

    }

}

Endi klass sinfi Fruit sinfidagi $name va $color xususiyatlarini meros qilib oldi va o'zi ham yangi konstruktor funksiyasini qo'shib oldi.

Konstruktor funksiyasi sinfdan obyekt yaratayotganda obyekt xususiyatlarini ishga tushirishga yordam beryapti.

$shaftoli = new Shaftoli('shaftoli', 'sariq'); echo $shaftoli->name."<br>";

echo $shaftoli->color;

Konstruktor funksiyasi bizga sinf ichida set_name() metodini ishlatishni va sinf tashqarida obyekt xususiyatlarini yozish ($shaftoli->name = "shaftoli";) kabi ishlarni oldini oldini oladi va kodni qisqartirishga imkon beradi.

NATIJA

shaftoli

sariq

Destruktor funksiyasini qo'shish

Destruktor funksiyasi skript tugaganda ushbu funksiyada yozilgan kodni ishga tushirishga imkon beradi

Yuqoridagi Shaftoli sinfiga destruktor funksiyasini qo'shaylik. Destruktor funksiyasi sintaksisi ham konstruktor funksiyasi bilan bir xil:

class Shaftoli extends Fruit

{

    public $name;

    public $color;

    function __construct($nom, $rang)

    {

        $this->name = $nom;

        $this->color = $rang;

    }

    function __destruct()

    {

        echo "Bu $this->name mevasi rangi $this->color ekan."; 

  }

}

$shaftoli = new Shaftoli('shaftoli', 'sariq');

NATIJA

Bu shaftoli mevasi rangi sariq ekan.

Destruktor funksiyasi obyekt yo'q qilinganda yoki obyekt ichida kodlar ishlashni tugatganda avtomatik ishga tushib ketadi.

Destruktor funksiyasi hech qanday argument qabul qilmaydi.

__destruct()

Konstruktor va destruktor funksiyalaridan foydalanish kod yozishni kamaytirishga imkon beradi.