Realizando importação no PHP com include e require

1 de agosto de 2022
Ronaldo B.

Quando estudamos programação, aprendemos com o tempo que uma das coisas mais importantes em nosso código não é que ele esteja simplesmente funcionando, mas sim que esteja bem organizado. Uma maneira de realizar essa organização é por dividir um arquivo principal em arquivos menores, realizando assim uma fragmentação de nosso código. E depois de realizar essa divisão, precisamos introduzir em nossa página o conteúdo desses outros arquivos se desejarmos ter acesso a seus recursos. Para isso usamos o conceito de importação de arquivos. No PHP, podemos realizar essa importação através do include e do require. Vamos falar sobre cada um deles nesse artigo.

include

O include realiza a importação de um arquivo para nossa página e verifica se esse arquivo está funcionando e se ele de fato existe. Se essa verificação constatar que há algum problema no arquivo, um aviso (warning) será retornado na tela, mas o código que estiver abaixo do include continuará sendo executado.

Além disso, o include possui alguns recursos próprios. Ele tem acesso ao include_path, que é um diretório em nosso servidor, configurado no arquivo php.ini, que contém alguns arquivos de inclusão. Assim, ao realizar o include, se o arquivo desejado não existir no caminho especificado, o PHP verifica também se ele existe no include_path. Se ele não existir em nenhum dos dois, o warning é retornado para nós.

Também, com o include nós temos acesso a um outro recurso: nós conseguimos realizar a importação de arquivos que estiverem em outros servidores, em outros domínios. Se desejarmos usar esse recurso, precisaremos ter cautela, pois trazer o conteúdo de arquivos de outros domínios para nossa página pode ser perigoso. Afinal, esses arquivos podem conter códigos maliciosos. Dessa forma, tome muito cuidado com esse tipo de importação.

Abaixo nós vemos um exemplo do uso de um include:

<?php

include "user.php";

Um detalhe interessante é que podemos usar o include e o require com parênteses se desejarmos. Contudo, eles não são funções. A documentação do PHP os define como declarações. Mesmo assim, podemos usar parênteses se desejarmos, como vemos abaixo:

<?php

include("user.php");

require

O require realiza a importação de um arquivo para nossa página e verifica se esse arquivo está funcionando e se ele de fato existe. Contudo, ele faz isso com uma pequena diferença. Se for constatado algum problema no arquivo que estamos fazendo a importação, o require retorna um erro fatal, o que irá parar a execução do nosso código, diferentemente do include. Assim, podemos dizer que o require obriga que o arquivo importado esteja funcionando para que nossa aplicação não “quebre”.

Abaixo nós vemos um exemplo do uso do require:

<?php

require "hcode.php";

E, assim como o include, podemos usar o require com parênteses também, se desejarmos:

<?php

require("hcode.php");

Para entendermos melhor a diferença entre o include e o require, vamos criar um exemplo prático.

Exemplo Prático

Iremos criar um arquivo chamado file.php, que será importado posteriormente. Ele irá exibir uma mensagem de importação bem sucedida, por meio um echo. Seu script será o seguinte:

<?php

echo "Importação ok";

Vamos agora criar um arquivo index.php. Ele irá realizar a importação do arquivo file.php e depois irá exibir uma outra mensagem. Os dois arquivos estarão no mesmo diretório. Iremos usar o include primeiramente. O conteúdo do arquivo será este:

<?php

include "file.php";

echo "<br/>";

echo "Hcode Treinamentos";

Se acessarmos esse arquivo em nosso navegador, veremos o seguinte resultado:

Resultado de nosso código no navegador.

O código funcionou sem problemas. Vamos agora provocar um erro. Iremos realizar o include do arquivo file1.php, que não existe:

include "file1.php";

Se atualizarmos o navegador, este será o resultado:

Mensagem de erro em nosso navegador.

Um warning foi retornado para nós, informando que o arquivo não existe. Contudo, perceba que a string “Hcode Treinamentos” foi exibida normalmente, o que mostra que a execução de nosso código continuou.

Iremos agora substituir o include por um require, e iremos provocar o mesmo erro. O código ficará assim:

require "file1.php";

Após essa mudança, vamos atualizar o navegador. E agora iremos ver o seguinte:

Mensagem de erro em nosso navegador.

Note que agora foi retornado um “Fatal error”. Além disso, a string “Hcode Treinamentos” não foi exibida, o que mostra que a execução de nosso código foi cancelada por causa desse problema. Vemos assim na prática a diferença entre o include e o require. Analisando cada situação, poderemos decidir quando iremos usar um ou outro.

include_once e require_once

Um outro ponto importante sobre o include e o require é que os dois possuem uma declaração com o sufixo “_once”. A palavra “once” significa basicamente “uma vez”. Quando usamos esse sufixo, garantimos que o arquivo desejado será importado apenas uma vez em nossa aplicação. Isso é muito interessante pois pode ser que, sem perceber, realizemos a importação do mesmo arquivo duas vezes. Isso pode gerar uma mensagem de erro no navegador, ou pode ser que o script do arquivo importado execute duas vezes, o que pode gerar problemas. Ao usar o include_once ou require_once, anulamos a chance de isso acontecer. Assim, se puder escolher, prefira usar essas declarações com o sufixo “_once”.

Conclusão

Realizar importações é uma das ações que mais realizamos em nossos projetos. E quanto mais nossos projetos crescem, mais as importações se tornam necessárias. É bom saber que o PHP nos oferece recursos bem poderosos para isso e neste artigo vimos quais são esses recursos e as diferenças entre si. Lembrando que você pode aprender muito mais sobre os recursos do PHP em nosso Curso Completo de PHP 7. Esperamos que tenham gostado desse conteúdo e obrigado por ter lido até aqui.

Até o próximo artigo :)

Hcode: Utilizamos cookies para a personalização de anúncios e experiências de navegação dentro de nosso site. Ao continuar navegando, você concorda com as nossas Política de Privacidade.