Różnica pomiędzy funkcjami include() a include_once() w PHP

PHP: include vs include_once

Dzisiejszy wpis poświęcony jest różnicą pomiędzy 2 podobnymi funkcjami w PHP: include() i include_once()

Funkcja include_once()  dołącza do skryptu określony plik w trakcie wykonywania skryptu. Ścieżka do pliku powinna zostać zawarta jako argument funkcji. To zachowanie jest podobne do include() z tą różnicą, że jeśli dany plik został już dołączony w skrypcie, to nie zostanie ponownie włączony. Jak sama nazwa wskazuje, zostanie dołączony tylko raz.

Co to dokładnie znaczy? Rozważmy to na przykładzie.

Załóżmy, że mamy 3 pliki:

FUNCTIONS.PHP
GLOBALS.PHP
HEADER.PHP

Każdy z nich wygląda następująco:

FUNCTIONS.PHP

<?php
function foo(){
echo 'some code';
}
?>

GLOBALS.PHP:

<?php
include('FUNCTIONS.PHP');
foo();
?>

HEADER.PHP

<?php
include('FUNCTIONS.PHP');
include('GLOBALS.PHP');
foo();
?>

Teraz jeśli spróbujemy otworzyć plik HEADER.PHP dostaniemy błąd, ponieważ plik GLOBALS.PHP także dołącza plik FUNCTIONS.PHP. Dostaniemy błąd mówiący, że funkcja foo() została już zadeklarowana w pliku GLOBALS.PHP, a jest również w pliku HEADER.PHP – co oznacza, że mamy dołączony plik FUNCTIONS.PHP dwa razy.

Jeśli chcemy mieć pewność, że plik FUNCTIONS.PHP zostanie dołączony tylko raz, należy użyć funkcji include_once(), plik HEADER.PHP powinien wyglądać następująco:

HEADER.PHP

<?php
include_once('FUNCTIONS.PHP');
include('GLOBALS.PHP');
?>

Teraz, gdy otworzysz plik HEADER.PHP nie wyświetli się żaden błąd, skrypt PHP dołączy plik FUNCTIONS.PHP tylko raz.

W innej sytuacji możemy chcieć dołączać wielokrotnie w różnych miejscach plik PHP który np zawiera kawałek kodu HTML a nie zawiera definicji żadnej funkcji lub klasy. W takiej sytuacji powinniśmy używać funkcji include()

Mam nadzieję, że już rozumiesz różnicę między tymi dwoma funkcjami. Jeśli nadal masz pytania – pisz w komentarzu:)

Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Więcej informacji

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close