php - sirve - ¿Puede una clase extender tanto una clase como implementar una interfaz?
ejercicios resueltos de clases abstractas en java (3)
¿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 se puede hacer esto, simplemente haciendo:
class database implements databaseInterface extends mysqli{
resulta en un error fatal:
Parse error: syntax error, unexpected T_EXTENDS, expecting ''{'' in *file* on line *line*
Pruébalo al revés:
class database extends mysqli implements databaseInterface { ...}
Esto debería funcionar.
Sí puede. Solo necesita conservar el orden correcto.
class database extends mysqli implements databaseInterface { ... }
Además, una clase puede implementar más de una interfaz. Solo sepárelos con comas.
Sin embargo, me siento obligado a advertirte que extender la clase de 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 cambio, aconsejaría hacer cosas relacionadas con DB de la manera mysqli (o PDO).
Además, es algo menor, pero las convenciones de nomenclatura sí importan. La database
su clase parece más general que mysqli
, por lo tanto, sugiere que la última hereda de la database
de database
y no el camino correcto.
sí, de hecho si quieres implementar múltiples interfaces puedes hacer esto:
public class MyClass extends BaseClass implements myInterface1, myInterface2, myInterface3{
}