Oba include i require učitavaju (i izvršavaju) sadržaj druge PHP datoteke u trenutnu. Jedina razlika je kako rukuju neuspjehom: require uzrokuje fatalnu grešku ako datoteka nedostaje, dok include samo emitira upozorenje i nastavlja.
<?php
include "config.php"; // if missing → WARNING, script CONTINUES
require "database.php"; // if missing → FATAL ERROR, script STOPS
include → file missing → emits a Warning, execution continues (file's code skipped)
require → file missing → throws a Fatal Error, execution HALTS
Koristite require za datoteke bez kojih aplikacija ne može raditi (osnovne klase, kritična konfiguracija, postavljanje baze podataka) — želite da se prekinuo tvrdо ako nedostaju. Koristite include za opcionalne datoteke (npr. sidebar template) gdje nedostajuća datoteka ne bi trebala srušiti stranicu.
require_once "functions.php"; // include the file ONLY if not already included
include_once "helper.php";
require_once/include_once učitavaju datoteku samo ako već nije učitana — ključno za izbjegavanje grešaka "cannot redeclare function/class" kada datoteka može biti učitana više puta (npr. definicija klase povučena u nekoliko datoteka).
// included files share the SAME scope and can define functions, classes, variables
// config.php:
$dbHost = "localhost";
// main.php:
require "config.php";
echo $dbHost; // "localhost" — the variable is available
// ❌ old style — manually requiring every class file
require_once "User.php";
require_once "Order.php";
// ✅ modern — Composer AUTOLOADING loads classes on demand automatically
require "vendor/autoload.php"; // one line; classes load when used (PSR-4)
$user = new User(); // User.php loaded automatically
U modernom PHP-u rijetko koristite ručni require za klase — Composer-ov autoloader učitava ih po potrebi. Ipak koristite require "vendor/autoload.php" jednom za pokretanje.
Razumijevanje include nasuprot require je osnovno ali važno PHP znanje — to je kako PHP datoteke dijele kod, i razlika je važna za ispravnost.
Ključna točka je ponašanje pri neuspjehu: require za bitne datoteke (tako da aplikacija brzo i jasno neće uspjeti ako kritična datoteka nedostaje) i include za opcionalne (tako da nedostajuća nekritična datoteka ne sruši stranicu).
Znati _once varijante praktički je ključno za sprečavanje čestih grešaka "cannot redeclare" od slučajnog učitavanja definicije klase ili funkcije dva puta.
Jednako je važno razumijevanje modernog konteksta: dok su te konstrukcije fundamentalne, moderni PHP se oslanja na Composer autoloading (učitavanje klasa po potrebi) umjesto ručnog zahtijevanja svake datoteke, tako da u trenutnom kodu uglavnom samo učinite require "vendor/autoload.php" jednom i prepustite autoloading-u da uradi ostatak.
Znati mehaniku include/require (i kada je svaki način neuspjeha prikladan) i kako moderni autoloading zamjenjuje ručno učitavanje je svakodnevno znanje za rad s PHP bazama kodova starim i novim.