Ir para conteúdo

Arquivado

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

vinicvo

[Resolvido] Tornar variável php acessível em outra página

Recommended Posts

Olá...

Eu estou desenvolvendo um sistema de loja virtual para um cliente. Eu estou criando todas as páginas php com as funções separadamente e depois estou inserindo o layout como um arquivo externo. Para que possam entender melhor eu estou fazendo o seguinte:´

Uma mesma página(no caso a index) chama o arquivo de funções e o arquivo de layout. Contudo, as variáveis que eu estou definindo no arquivo das funções não estão aparecendo no layout e o php retorna um erro "variable $ undefined" de variável indefinida.

Eu queria saber se vocês conhecem uma solução para o problema de modo que eu possa continuar com esse mesmo esquema, usando a index como o "visualizador" da página. No caso eu preciso saber como tornar essas variáveis possíveis de serem acessadas da página de layout.

 

Desde já, agradeço! ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou dar um exemplo de como eu estou fazendo, para que fique um pouco mais claro ^^

 

Tenho uma página inicial index.php.

Essa página index tem um include de várias outras páginas. Um desses includes é uma página com uma função pra carregar outras páginas.

Outra função carrega a página de layout.

 

Então tenho:

 

<?php
//INDEX.PHP
$carrega = new Loader();
$carrega->('home')

$layout = new Layout();
$layout->('temas/layout');

?>

Até aqui tá tudo certo. Então eu tenho a página(home) que é só código php que define as variáveis. Depois tenho o layout(temas/layout) que vai usar essas variáveis. As páginas são inseridas normalmente e abrem. Agora vem o problema: Na página home eu defino uma variável chamada $teste. Só que quando eu vou chamar essa variável no layout, ele não encontra. Aí dá o erro:

 

Notice: Undefined variable: testein "endereço" on line 6

 

 

Na função que eu estou usando, eu uso o método include para inserir as páginas.

 

Em resumo, eu estou usando uma página para carregar duas. E em uma das páginas carregadas eu uso as variáveis da outra. Não sei se ficou mto claro.

Espero que possam me ajudar.

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

poste os codigos das classes Loader e Layout, tal como o codigo da página "home"

 

nao sei dizer ao certo pois precisaria ver os códigos para entender melhor o que está fazendo

 

mas talvez uso de herança entre classes possa resolver.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok...vou postar os códgos das classes.

 

 

Esse é o códido da classe que carrega as páginas.

 

class Carrega {
	public function modelo($modelo) {
		$arquivo  = DIR_APLICATIVO . 'modelo/' . $modelo . '.php';
	
		
		if (file_exists($arquivo)) {
			include($arquivo);
			
			
		} else {
			exit('Erro: Impossível carregar o modelo <b> ' . $modelo . '</b>!');
		}
	}
}

 

Agora eu tenho essa página acima chamada em uma página com o include...então eu faço o seguinte:

 

 

include('carregador.php');

$variavel1 = "Variável 1";
$variavel2 = "Variavel 2";
$variaveln = "Variável n";

$carrega = new Carrega();
$carrega->modelo('comum/layout');

 

Então...é isso, e não está funcionando. As variáves "Variável1, 2 , n" não estão acessíveis na página "comum/layout.php".

Como resolver esse problema?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, o layout.php é só uma página simples com o echo das outras variáveis.

 

Layout.php

 

<?php
echo $variavel1;
echo $variavel2;
echo $variaveln;

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

não é um método aconselhável, mas, a grosso modo, pode definir uma chamada global:

 

exemplo:

 

<?php

$str = 1;

class foo
{

    function bar()
    {
        global $str;
    
        if( $str == 1 )
        {
            echo 'a';
        }else{
            echo 'b';
        }
    
    }

}

foo::bar();

?>

 

 

outro modo, é definir uma propriedade dentro da classe

 

exemplo:

<?php

class foo
{

    public $str;

    function bar()
    {
    
        if( $this -> str == 1 )
        {
            echo 'a';
        }else{
            echo 'b';
        }
    
    }

}

$tmpl = new foo;
$tmpl -> str = 1;
$tmpl -> bar();
?>

 

 

existem outras N formas de resolver a questão,

 

esses são apenas 2 simples exemplos para você ter uma idéia.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido...Obrigado pela ajuda pessoal! ^^

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.