Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

criatividade zero

problema ao chamar funcao

Recommended Posts

quando rodo a função elem() para chamar a funcao_teste, da 'Call to a member function'

a classe esta instanciada mas da erro

alguem poderia me dar uma luz?

 

$aa = new classe();
$aa-> inicio();

class classe {
public $teste_elemento;

function inicio() {
	include('pg_teste.php');
	$this-> teste_elemento = new class_teste;
}

function importar($page) {
	...
	$this->elem($page);
}

function elem($a) {
	$this-> teste_elemento-> funcao_teste();
}

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que você quer dizer com esse trexo ??????

 

function inicio() {
include('pg_teste.php');
$this-> teste_elemento = new class_teste;
}

Amigo sua classe está toda doida...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro: classe::inicio() está sendo invovocado ANTES de classe::elem()?

 

Se não, NUNCA que class::$teste_elemento vai ser uma instância de classe_teste

 

Sua intenção foi certa, apenas errou o nome do método, que deveria ser __construct

 

Segundo (acho que desnecessário depois do Primeiro): class_teste::funcao_teste() existe?

Compartilhar este post


Link para o post
Compartilhar em outros sites

veja se fica mais facil de ver o esquema, os nomes são pra ficar mais compreensivel

 

1. eu dou inicio na classe pai, e ela instancia a classe filho

2. na classe pai, eu tenho a função, 'importar', que carrega outras classes que eu preciso - ate ai sem problemas

3. ainda na funcao iniciopai, eu dou include e crio a instancia 'teste_elemento', que é usada pela função importar quando for definida na função iniciofilho

 

se eu passar '$this-> importar('$page')' da função filho, para dentro da função pai, funciona sem problema

 

class filho extends pai {
        function iniciofilho() {
        	$this-> importar();
        }
}

class pai {
        public $teste_elemento;

        function iniciopai() {
				$filho = new filho();
				$filho-> iniciofilho();

				include($_SERVER['DOCUMENT_ROOT'] . 'teste.php');
                $this-> teste_elemento = new classe_teste;
        }

        function importar() {
                $this-> teste_elemento-> teste();
        }
}

$pai = new pai();
$pai-> iniciopai();

e ai??

ta errado ainda?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça o caminho do PHP:

 

1 - Você instancia a classe pai;

2 - Você executa o método pai::iniciopai();

3 - Em pai::iniciopai(), é instanciada a classe filho;

4 - Em pai::iniciopai(), o método filho::iniciofilho() é chamado;

5 - Em filho::iniciofilho(), o método pai::importar() é chamado;

6 - Em pai::importar(), você TENTA executar o método teste() da propriedade $teste_elemento.

 

Então eu te pergunto, olhando somente para as etapas acima, que foram as etapas seguidas pelo seu código até o erro (que você deveria postar completo), O QUE É $teste_elemento?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não faz o menor sentido instanciar a classe filha dentro da classe pai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então eu te pergunto, olhando somente para as etapas acima, que foram as etapas seguidas pelo seu código até o erro (que você deveria postar completo), O QUE É $teste_elemento?

 

ja respondi isso acima

$teste_elemento cria a instancia da classe dentro de teste.php

$this-> teste_elemento-> teste();

teste() é uma função que esta em teste.php

 

 

Não faz o menor sentido instanciar a classe filha dentro da classe pai.

 

 

se a class filho nao for 'extends pai' não vai conseguir executar as funções de pai

essa parte esqueci de editar quando colei

foi uma parte errada

finge que nao esta ali :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Então eu te pergunto, olhando somente para as etapas acima, que foram as etapas seguidas pelo seu código até o erro (que você deveria postar completo), O QUE É $teste_elemento?

 

ja respondi isso acima

$teste_elemento cria a instancia da classe dentro de teste.php

$this-> teste_elemento-> teste();

teste() é uma função que esta em teste.php

 

Você tá cometendo o mesmo erro que o seu código: respondeu antes de conhecer a pergunta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, mais uma vez... SEJA O PHP:

 

1 - Você instancia a classe pai;

2 - Você executa o método pai::iniciopai();

3 - Em pai::iniciopai(), é instanciada a classe filho;

4 - Em pai::iniciopai(), o método filho::iniciofilho() é chamado;

5 - Em filho::iniciofilho(), o método pai::importar() é chamado;

6 - Em pai::importar(), você TENTA executar o método teste() da propriedade $teste_elemento.

 

Então eu te pergunto: olhando somente para as etapas acima, que foram as etapas seguidas pelo seu código até o erro (que você deveria postar completo), O QUE É $teste_elemento?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas você primeiro usa, e depois cria

 

$filho-> iniciofilho();//usando

                                include($_SERVER['DOCUMENT_ROOT'] . 'teste.php');
                $this-> teste_elemento = new classe_teste;//criando

volto a comentar: não faz o menor sentido instanciar um filho dentro do pai dele !

Compartilhar este post


Link para o post
Compartilhar em outros sites

$teste_elemento é simplesmente a instancia

basta ver no codigo que ele é instanciado na funcao iniciopai

 

PHP says: 'ERROR!'

ASP says: 'ERROR!'

Java says: 'ERROR!'

...

 

Que código? O seu problema não é código, é lógica... e atenção.

Não existe código, só 6 etapas, e elas não me respondem o que é $teste_elemento, além de uma propriedade pública nula declarada na definição da classe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.