O código muitas vezes precisa ser chamado em várias páginas. Isto pode ser feito colocando primeiro o código dentro de um arquivo separado e, em seguida, adicionar o arquivo usando o include. Esta função adiciona todo o texto no arquivo especificado, como se o código fosse copiado para esse local. Assim como echo, include é um construtor de linguagem especial e não uma função, por isso, os parênteses não deve ser usado.
<?php include 'myfile.php'; ?>
Qualquer código dentro do arquivo incluído que precisa ser executado como código PHP tem de ser delimitado por tags PHP.
<?php // myfile.php ?>
incluir caminho
Um arquivo de inclusão pode ser especificado com um caminho relativo, um caminho absoluto ou sem um caminho. O caminho de arquivo relativo será relativo ao diretório do arquivo de importação, e um caminho de arquivo absoluto irá incluir o caminho completo do arquivo.
<?php // Relative path include 'myfolder\myfile.php'; // Absolute path include 'C:\xampp\htdocs\myfile.php';
Quando um caminho relativo ou nenhum caminho for especificado, o include vai em primeiro lugar procurar o arquivo no diretório de trabalho atual, que tem como padrão o diretório do script de importação. Se o arquivo não for encontrado lá, irá verificar as pastas especificadas pela directiva include_path definido no php.ini antes de falhar.
<?php // No path include 'myfile.php';
Além de include existem três outras construções de linguagem disponíveis para importar o conteúdo de um arquivo para outro: require, include_once e require_once.
Require
O construtor require inclui e avalia o arquivo especificado. Ele é idêntico ao incluir, exceto na forma como ele lida com o falhas. Quando uma importação de arquivo falhar o require irá parar o script com um erro, o include apenas irá emitir um aviso(warning). Uma importação pode falhar porque o arquivo não foi encontrado ou porque o usuário que executa o servidor web não têm acesso para ler o arquivo.
<?php require 'myfile.php'; // parar em caso de erro
Geralmente é melhor usar require para qualquer aplicação complexas em PHP ou um sites com CMS. Dessa forma, o aplicativo não irá tentar executar no caso de um arquivo importante está em falta. Para segmentos de código menos críticos e sites simples include pode ser suficiente, caso em que o PHP vai continuar e mostrar a saída, mesmo que o arquivo incluído esteja faltando.
Include_once
A declaração include_once se comporta como include, exceto que se o arquivo especificado já foi incluído, ele não será incluído novamente.
<?php include_once 'myfile.php'; // incluir apenas uma vez
Require_once
A declaração require_once funciona como require, mas não vai importar um arquivo se ele já tiver sido importado antes.
<?php require_once 'myfile.php'; // requerem apenas uma vez
As demonstrações include_once e require_once pode ser usado em vez de include e require, em casos em que o mesmo arquivo pode ser importado mais de uma vez durante uma determinada execução de um script.
Return
É possível executar uma instrução return dentro de um arquivo importado. Isto irá parar a execução e retornar para o script que chamou a importação de arquivos.
<?php // myimport.php return 'OK'; ?>
Se um valor de retorno é especificado, a declaração de importação avaliará esse valor apenas como uma função normal.
<?php // myfile.php if ((include 'myimport.php') == 'OK') echo 'OK'; ?>
Auto load
Para grandes aplicações web o número de include necessários em cada script pode ser substancial. Isto pode ser evitado através da definição de uma função __autoload. Esta função é automaticamente invocado quando uma classe indefinida ou interface é utilizada, a fim de tentar carregar essa definição. É preciso um parâmetro, que é o nome da classe ou interface que o PHP está procurando.
<?php function __autoload($class_name){ include $class_name . '.php'; } // Attempt to auto include MyClass.php $obj = new MyClass();
Uma boa prática de codificação a seguir ao escrever aplicações orientadas a objetos é ter um arquivo de origem de cada definição de classe e nomeie o arquivo de acordo com o nome da classe. Seguindo essa convenção a função __ autoload acima será capaz de carregar a classe, desde que seja na mesma pasta do arquivo de script que precisava.
<?php // myclass.php class MyClass {} ?>
Se o arquivo estiver localizado em uma subpasta o nome da classe pode incluir caracteres de sublinhado para simbolizar isso. Os caracteres de sublinhado, então, precisa ser convertido em separadores de diretório na função __ autoload.
Mais Detalhes sobre Autoload
- http://pt.stackoverflow.com/questions/2070/optimizar-fun%C3%A7%C3%A3o-para-incluir-classes-procurando-tamb%C3%A9m-nas-sub-directorias
- http://pt.stackoverflow.com/questions/32406/fun%C3%A7%C3%A3o-autoload-do-php-n%C3%A3o-abre-subpastas
No Manual: http://br1.php.net/manual/pt_BR/function.autoload.php