Ir para conteúdo

POWERED BY:

Arquivado

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

Rarylson Freitas

Função dentro de função

Recommended Posts

Isso pode ser feito com orientação a objetos, mas queria saber se é possível fazer com funções.

No código

<?php

function teste1() {
	function teste2(){
		return 2;
	}
	
	$teste = teste2() - 1;
	return $teste;
}
// ao chamar teste1(), teste2() passa a existir
echo teste1()."<br>";
// naum dah erro
echo teste2()."<br>";
?>
não temos erro (embora teste2() seja definida dentro de teste1())

Enquanto no código

<?php

function teste1() {
	function teste2(){
		return 2;
	}
	
	$teste = teste2() - 1;
	return $teste;
}
// dah erro, pois teste2() ainda nao existe. Ela existe para teste1() [localmente]. Passaria a existir se chamassemos teste1()
echo teste2()."<br>";
?>
dá erro.

 

O que eu queria era que, independente de chamar teste1() ou não, teste2() NÃO fosse "enxergada" no escopo global, isto é, que desse erro nos dois casos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basicamente nesse link fala que função dentro de função pode me trazer problemas e que pode-se resolver o problema com orientação a objetos.

O que eu quero saber é se é possível resolver esse problema sem orientação a objetos.

Criar duas funções c mesmo nome dentro de funções distintas.

Exemplo fteste() dentro de f1(), e outra fteste() dentro de f2(), semelhante a criar dois métodos de mesmo nome (que podem fazer até coisas distintas) em duas classes diferentes.

Problema: qando crio fteste() dentro de f1(), ele passa a ter escopo global (e não local, dentro de f1()), e ocorre o mesmo c/ a outra funcao fteste().

Resultado:Erro por ter duas funções c/ mesmo nome no escopo global.

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.