Jump to content
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?

 

Share this post


Link to post
Share on other 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].

Share this post


Link to post
Share on other 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");

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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!

  • +1 1

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.