Ir para conteúdo

Arquivado

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

Thiago Moraes

Include e array

Recommended Posts

Preciso atribuir a inclusão de arquivos em um array, exemplo:

 

arquivo1.php:

$pages = array('page1' => 'dir1/index.php','page2' => 'dir2/index.php');

foreach ($pages as $key => $value){

	$page[$key] = include($value);

}

 

arquivo2.php:

include("arquivo1.php");

echo $page['page1'];

 

Sendo que o echo faria o include dos arquivos.

 

É possivel fazer isso?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então oque eu quero fazer é exatamente oque esta descrito no primeiro post, tenho um array com uma lista de arquivos e quero atribuir o include desses arquivos a variáveis. Ao invés de usar include(arquivo)  gostaria de colocar $arquivo['nome_do_arquivo'].

 

Até consegui fazer o include pela variável usando output buffering, mas não esta associando a chave do array corretamente:

 

foreach ($pages as $key => $value){

	ob_start();
	include($value);      
	$page[$key] = ob_get_contents();
	ob_end_clean();

}

Poŕém dessa forma só inclui o primeiro arquivo do array: $page[0].

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se entendi a sua intenção, não precisa adicionar o include em uma variável, e no arquivo2.php, também não precisa dar echo, basta fazer o include("arquivio1.php") que os includes de arquivo1.php serão carregados automaticamente. 

 

Dica: De uma pesquisa por autoload e psr4

arquivo1.php

$pages = array('page1' => 'dir1/index.php','page2' => 'dir2/index.php');

foreach ($pages as $page){
    include($page);
}

arquivo2.php
include("arquivo1.php");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas aí vou carregar dezenas ou até centenas de arquivos que não vão ser usados. O arquivo2 seria um arquivo de template.

 

Atribuir o include a uma variavel eu ja consegui usando output buffering, só não estou conseguindo associar a chave correta do array. Não passa a chave.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que entendi, mas nesse caso, o melhor seria ter um array de array para cada pagina, já que uma pagina pode ter mais de um include. Vejo que a melhor forma seria encapsular em uma função:

Arquivo fazIncludes.php

function fazIncludes($file) {
	$pages = array(
		'page1' => array(
			'dir1/index.php', 
			'dir1/outroInclude.php'
		),
		'page2' => array(
			'dir2/index.php'
		)
	);

	foreach ($pages[$file] as $page){
		include($page);
	}
}


paginaOndeVoceQuerFazerOsIncludes.php

include('fazIncludes.php');
fazIncludes('page1'); 


Carregara apenas dir1/index.php e dir1/outroInclude.php que foram cadastrados para include em page1
Não posso deixar de reforçar: Não deixar de dar uma olhada na PSR-4!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema de usar uma função são as variaveis nos includes. Fica inviavel declarar todas na função.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas eu teria que declarar as variaveis dos includes no escopo da função. Isso que quero dizer. Ou estou enganado?

 

________

 

Estava enganado, da pra usar função de boa. É até melhor. Muito obrigado pela ajuda.

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.