Jump to content
Fórum Script Brasil
  • 0

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


fernandoanael
 Share

Question

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 to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...