Ir para conteúdo
Fórum Script Brasil
  • 0

[AJUDA] Não consigo usar herança nem traits.


fernandoanael

Pergunta

Olá pessoal, tudo bem? Tenho aprendido sobre herança e vi também sobre traits.

Eu entendi tudo na teoria  mas na hora de fazer alguns exemplos do livro pra praticar, sempre dá um erro informando que a classe a ser herdada ou a trait não foi encontrada. Eu não entendo o porque do erro já que a Classe mãe e a trait estão na mesma pasta. E isso ocorre mesmo quando tento rodar os exemplos do livro da Novatec que é o livro que estou usando pra aprender PHP. 

Se alguém puder me dar uma luz, agradeceria muito!!!

Se tiver qualquer outro erro, mesmo que não influenciando no erro principal, podem ajudar, estou aprendendo, toda ajuda é ouro! 

Um exemplo simples que eu criei pra mostrar que simplesmente não consigo herdar nada, o erro acontece também quando tento usar traits.

Arquivo: mae.php

<?php
class mae
{
    public $palavra = "Fala Galera!!!";
    function imprimePalavra()
    {
      echo $palavra;   
    }
}
?>

Arquivo: filha.php

<?php 
class filha extends mae {
    function imprimePalavra()
    {
        parent::imprimePalavra();
    }
}
?>

Arquivo: teste.php

<?php
include 'filha.php';
$teste = new filha();
$teste->imprimePalavra();
?>

ERRO: Fatal error: Class 'mae' not found in C:\Program Files (x86)\EasyPHP-Devserver-16.1\eds-www\Aprendendo\classes\filha.php on line 2.

nota: Os 3 arquivos estão na mesma pasta.

 

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

mesmo mudando o Arquivo: test.php para:

<?php

include "mae.php";
include 'filha.php';
$teste = new filha();
$teste->imprimePalavra();
?>

ou mudando o arquivo: filha.php para:

<?php 
class filha extends mae {

   require_once"mae.php";
    function imprimePalavra()
    {
        parent::imprimePalavra();
    }
}
?>

 

O erro continua acontecendo...

Link para o comentário
Compartilhar em outros sites

  • 0

Bom, eu criei a mesma estrutura que você, usando o mae.php e filha.php do primeiro post e o test.php do segundo (que dá o include nos dois arquivos). Pra mim, o que apareceu não foi um erro, foi um Warning, mas que afeta totalmente o funcionamento dos scripts:


Notice: Undefined variable: palavra in /var/www/html/mae.php on line 7

O que acontece é que, na função imprimePalavra da classe mae, você dá um echo na variável $palavra. Dentro do método, essa variável não existe. Para acessar a variável da classe, é preciso usar $this->palavra. Fazendo apenas esta alteração, funcionou corretamente aqui.

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...