Uma classe pode estender uma interface e outra classe em PHP?
Basicamente, eu quero fazer isso:
interface databaseInterface{
public function query($q);
public function escape($s);
//more methods
}
class database{ //extends both mysqli and implements databaseInterface
//etc.
}
Como alguém faria isso, simplesmente fazendo:
class database implements databaseInterface extends mysqli{
resulta em um erro fatal:
Erro de análise: erro de sintaxe, T_EXTENDS inesperados, esperando '{' em * arquivo * na linha * linha *
php
php-parse-error
Pim Jager
fonte
fonte
Respostas:
Experimente o contrário:
Isso deve funcionar.
fonte
Sim pode. Você só precisa manter a ordem correta.
Além disso, uma classe pode implementar mais de uma interface. Apenas separe-os com vírgulas.
No entanto, sinto-me na obrigação de avisar que estender a classe mysqli é uma ideia incrivelmente ruim . Herança em si é provavelmente o conceito mais superestimado e mal utilizado na programação orientada a objetos.
Em vez disso, eu aconselho fazer coisas relacionadas ao banco de dados da maneira mysqli (ou maneira PDO).
Além disso, uma coisa pequena, mas as convenções de nomenclatura são importantes. Sua classe
database
parece mais geral entãomysqli
, portanto, sugere que o último herda dedatabase
e não a maneira ao redor.fonte
sim, na verdade, se você deseja implementar várias interfaces, pode fazer assim:
fonte