Thiago Moraes 32 Denunciar post Postado Abril 28, 2017 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
washalbano 54 Denunciar post Postado Abril 28, 2017 Não! Não é possível fazer include com echo. Descreva o que precisa fazer pra gente tentar te dar alguma idéia de como resolver Compartilhar este post Link para o post Compartilhar em outros sites
Thiago Moraes 32 Denunciar post Postado Abril 28, 2017 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
EdCesar 124 Denunciar post Postado Abril 29, 2017 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
Thiago Moraes 32 Denunciar post Postado Abril 30, 2017 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
EdCesar 124 Denunciar post Postado Abril 30, 2017 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
Thiago Moraes 32 Denunciar post Postado Abril 30, 2017 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
EdCesar 124 Denunciar post Postado Abril 30, 2017 Você iria trocar echo $page['page1']; por: fazIncludes('page1'); Se é a isso que você se refere, vejo que o esforço é basicamente o mesmo Compartilhar este post Link para o post Compartilhar em outros sites
Thiago Moraes 32 Denunciar post Postado Abril 30, 2017 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