Qual a diferença entre include, require, include_once e require_once no PHP?
Olá a todos! Estou começando a aprender PHP e não consigo entender a diferença entre essas quatro construções para incluir arquivos. Parece que todas fazem a mesma coisa — inserem código de outro arquivo.
Eu tenho um arquivo config.php com as configurações do banco de dados:
<?php
$host = 'localhost';
$db = 'mydb';
$user = 'root';
$pass = '';
?>
E eu o incluo no index.php de diferentes maneiras:
<?php
include 'config.php';
// ou
require 'config.php';
// ou
include_once 'config.php';
// ou
require_once 'config.php';
?>
Todas as quatro opções funcionam, e eu vejo as variáveis do config.php. Qual é a diferença então? Quando usar cada uma?
Também notei uma coisa estranha: se eu escrever include 'config.php' duas vezes, recebo um erro de que as variáveis estão sendo redefinidas. Mas com include_once esse problema não acontece. Por que isso ocorre?
E o principal — o que vai