¿Puede una clase extender tanto una interfaz como otra clase en PHP?
Básicamente quiero hacer esto:
interface databaseInterface{
public function query($q);
public function escape($s);
//more methods
}
class database{ //extends both mysqli and implements databaseInterface
//etc.
}
¿Cómo haría uno esto, simplemente haciendo:
class database implements databaseInterface extends mysqli{
resulta en un error fatal:
Error de análisis: error de sintaxis, T_EXTENDS inesperado, esperando '{' en * archivo * en línea * línea *
php
php-parse-error
Pim Jager
fuente
fuente
Respuestas:
Pruébelo al revés:
Esto debería funcionar.
fuente
Sí puede. Solo necesita mantener el orden correcto.
Además, una clase puede implementar más de una interfaz. Solo sepárelos con comas.
Sin embargo, me siento obligado a advertirle que extender la clase mysqli es una idea increíblemente mala . La herencia per se es probablemente el concepto más sobrevalorado y mal utilizado en la programación orientada a objetos.
En su lugar, recomendaría hacer cosas relacionadas con la base de datos de la manera mysqli (o la manera PDO).
Además, una cosa menor, pero las convenciones de nomenclatura sí importan. Su clase
database
parece más general entoncesmysqli
, por lo tanto sugiere que este último heredadatabase
y no al revés.fuente
sí, de hecho, si desea implementar múltiples interfaces, puede hacerlo así:
fuente