Pengisytiharan Konstruktor dalam Antara Muka dalam OOP dalam PHP
Dalam antara muka, konstruktor kelas juga boleh
diisytiharkan. Mari lihat contoh. Katakan kita
ingin membuat kelas Rectangle, di mana
akan terdapat kaedah untuk mencari luas, perimeter,
dan juga konstruktor yang menerima dua parameter.
Mari kita huraikan kelas kita menggunakan antara muka:
<?php
interface iRectangle
{
public function __construct($a, $b); // konstruktor dengan dua parameter
public function getSquare();
public function getPerimeter();
}
?>
Mari tulis pelaksanaan antara muka kita
iRectangle:
<?php
class Rectangle implements iRectangle
{
private $a;
private $b;
public function __construct($a, $b)
{
$this->a = $a;
$this->b = $b;
}
public function getSquare()
{
return $this->a * $this->b;
}
public function getPerimeter()
{
return 2 * ($this->a + $this->b);
}
}
?>
Apa yang kita dapat daripada mengisytiharkan konstruktor dalam antara muka? Pertama, kita tidak akan lupa untuk melaksanakan konstruktor dalam kelas. Kedua, antara muka secara jelas menunjukkan bahawa konstruktor kelas mesti menerima dua parameter: tidak lebih, tidak kurang. Ini juga akan melindungi kita daripada ralat yang tidak disengajakan.
Mengapa kita mencipta antara muka berasingan
iRectangle, dan tidak menambah konstruktor
ke dalam antara muka Figure? Kerana semua
bentuk mempunyai bilangan sisi yang berbeza dan,
oleh itu, bilangan parameter yang berbeza dalam
konstruktor. Jadi, kita terpaksa mencipta antara
muka berasingan yang lebih tepat khusus untuk
segi empat tepat.
Buat antara muka iCube, yang akan
menggambarkan bentuk Kubus. Biarkan antara muka
anda menggambarkan konstruktor, menerima sisi
kubus sebagai parameter, dan juga kaedah untuk
mendapatkan isipadu kubus dan luas permukaan.
Buat kelas Cube, yang melaksanakan antara muka
iCube.
Buat antara muka iUser, yang akan
menggambarkan pengguna. Diandaikan bahawa
pengguna akan mempunyai nama dan umur dan
medan ini akan disampaikan melalui parameter
konstruktor. Biarkan antara muka anda juga
menetapkan bahawa pengguna akan mempunyai
pengambil (tetapi bukan penetap) untuk nama
dan umur.
Buat kelas User, yang melaksanakan antara muka
iUser.