Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoas :)
Tenho 3 classes(model, view e controller), cada uma com um nome diferente e diferentes namespace, mas todas as 3 classes possuem um método com o mesmo nome: login().
Minha dúvida é com relação a um notice que estou recebendo:
Strict standards: Declaration of Modules\User\Controller\ClassController::login() should be compatible with Modules\User\Model\ClassModel::login($data)
Observação: Se eu tiro o parâmetro $data, o notice sai.
Sim, cada uma estende a outra. A árvore de herança é a seguinte: Model->Controller->View
lembre q as assinaturas devem ser iguais, o metodo login deve de ClassController deve ter a mesma assinatura de ClassModel.
so n entendi pq dessas heranças ai.
tem alguma implementação de herança ou de interface ai? parece q vc não esta respeitando a assinatura do metodo q foi definido na classe pai ou interface.
Não possui interface. Acho que é problema é pelo fato de eu estar instanciando a classe View e chamando o método login, ai ela chama o método login do controller e o controller chama o método login da model. Como a classe pai é a model, creio que esse seja o problema :S
>
lembre q as assinaturas devem ser iguais, o metodo login deve de ClassController deve ter a mesma assinatura de ClassModel.
so n entendi pq dessas heranças ai.
Assinatura ?
Criei a herança para que eu possa usar os métodos. Tipo, na view eu exibo o formulário de login, na controller eu verifico os dados submetidos e comparo com os dados que o model verifica no banco.
Conversei com um amigo sobre isso e ele também ficou confuso com relação a esse esquema que eu creiei, e como você também achou, acho que estou complicando demais :S
assinatura do metodo é quantos parametros ele vai receber, tipos e o retorno.
esse codigo tosco aqui da o mesmo erro:
class A{
public function m($p1, $p2){
echo "lol";
}
}
class B extends A{
public function m($p){
echo "eh nois";
}
}
$b = new B();
$b->m('');>
assinatura do metodo é quantos parametros ele vai receber, tipos e o retorno.
esse codigo tosco aqui da o mesmo erro:
class A{
public function m($p1, $p2){
echo "lol";
}
}
class B extends A{
public function m($p){
echo "eh nois";
}
}
$b = new B();
$b->m('');
Isso eu entendo, o que eu não estou entendendo é pq as classes estão em namespaces diferentes.
Rapaz, tava dando uma lida em mvc e vi que na view, é onde fica o html e a reposta do controller... Eu tinha era criado uma classe na view para chamar os arquivos html :P
Vo ajeitar aqui os arquivos e acredito que eu consiga resolver esse buxo :D
tem alguma implementação de herança ou de interface ai? parece q vc não esta respeitando a assinatura do metodo q foi definido na classe pai ou interface.