Bisakah sebuah kelas memperluas antarmuka dan kelas lain dalam PHP?
Pada dasarnya saya ingin melakukan ini:
interface databaseInterface{
public function query($q);
public function escape($s);
//more methods
}
class database{ //extends both mysqli and implements databaseInterface
//etc.
}
Bagaimana seseorang melakukan ini, hanya melakukan:
class database implements databaseInterface extends mysqli{
mengakibatkan kesalahan fatal:
Kesalahan Parse: kesalahan sintaks, T_EXTENDS tak terduga, mengharapkan '{' dalam * file * pada baris * baris *
php
php-parse-error
Pim Jager
sumber
sumber
Jawaban:
Coba sebaliknya:
Ini seharusnya berhasil.
sumber
Ya bisa. Anda hanya perlu mempertahankan urutan yang benar.
Selain itu, sebuah kelas dapat mengimplementasikan lebih dari satu antarmuka. Pisahkan saja dengan koma.
Namun, saya merasa berkewajiban untuk memperingatkan Anda bahwa memperluas kelas mysqli adalah ide yang sangat buruk . Warisan per se mungkin merupakan konsep yang paling dilebih-lebihkan dan disalahgunakan dalam pemrograman berorientasi objek.
Sebaliknya saya menyarankan melakukan hal-hal yang berhubungan dengan db dengan cara mysqli (atau cara PDO).
Plus, hal kecil, tetapi konvensi penamaan itu penting. Kelas Anda
database
tampaknya lebih umummysqli
, oleh karena itu hal itu menunjukkan bahwa yang terakhir mewarisi daridatabase
dan bukan sebaliknya.sumber
ya, sebenarnya jika Anda ingin mengimplementasikan banyak antarmuka, Anda dapat melakukan seperti ini:
sumber