Zarówno include jak i require importują (i wykonują) zawartość innego pliku PHP do bieżącego. Jedyną różnicą jest sposób obsługi błędu: require powoduje krytyczny błąd, jeśli plik brakuje, a include tylko emituje ostrzeżenie i kontynuuje.
<?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
Używaj require dla plików, bez których aplikacja nie może działać (klasy rdzenia, konfiguracja krytyczna, setup bazy danych) — chcesz, aby się zatrzymała, jeśli ich brakuje. Użyj include dla opcjonalnych plików (np. szablon paska bocznego), gdzie brakujący plik nie powinien zepsuć strony.
require_once "functions.php"; // include the file ONLY if not already included
include_once "helper.php";
require_once/include_once importują plik tylko jeśli wcześniej go nie było — niezbędne aby uniknąć błędów "cannot redeclare function/class" gdy plik może być włączony wielokrotnie (np. definicja klasy pobierana przez kilka plików).
// 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
W nowoczesnym PHP rzadko używasz ręcznego require dla klas — autoloader Composera ładuje je na żądanie. Wciąż używasz require "vendor/autoload.php" raz, aby go uruchomić.
Zrozumienie różnicy między include a require to podstawowa, ale ważna wiedza PHP — to sposób, w jaki pliki PHP dzielą się kodem, a rozróżnienie ma znaczenie dla poprawności.
Kluczowym punktem jest zachowanie przy błędzie: require dla plików niezbędnych (aby aplikacja zatrzymała się szybko i jasno, jeśli brakuje krytycznego pliku) i include dla opcjonalnych (aby brakujący niekrytyczny plik nie zepsuł strony).
Znajomość wariantów _once jest praktycznie niezbędna, aby zapobiec typowym błędom "cannot redeclare" z przypadkowego włączenia definicji klasy lub funkcji dwa razy.
Również ważne jest zrozumienie nowoczesnego kontekstu: chociaż te konstrukcje są fundamentalne, nowoczesny PHP opiera się na autoloadingu Composera (ładowaniu klas na żądanie) zamiast ręcznego require każdego pliku, więc w aktualnym kodzie głównie robisz require "vendor/autoload.php" raz i pozwalasz autoloadingowi obsługiwać resztę.
Znajomość zarówno mechaniki include/require (i kiedy każdy tryb błędu jest odpowiedni) i tego, jak nowoczesny autoloading zastępuje ręczne include, to codzienną wiedzę do pracy z kodami PHP starymi i nowymi.
Biblioteka pytań rekrutacyjnych IT ze szczegółowymi odpowiedziami — od Juniora do Seniora.
Wesprzyj