require_once a include_once se pouziva na zjisteni, jestli soubor byl nebo nebyl uz nacteny, je to dobre napriklad pro vkladani konstant ci funkci, napriklad:
require_once 'config.php';
nicmene pokud uvazuji, ze do kodu se vlozi obsah neceho zarucene jednou, neni duvod to jeste osetrovat funkci.
Velice snadno se Vam muze stat, ze pokud pracuje na projektu vice lidi, dojde ke vlozeni jednoho souboru vicekrat (napr. zminovany config.php v pripade 'modulu'). 'require_*' Vam prave _zaruci_ to, ze soubor se vlozi jen jednou, poprve a nemusite nic kontrolovat, predpokladat ci spolehat na kolegy.
Bundik
Není pravda. Např. já používám třídu, která zapouzdřuje rozhraní MySQL. Je deklarována v externím souboru a ten once-requireuju do souborů s deklaracemi jiných tříd, které tu MySQL třídu využívají. Nemám pak problémy, když se mi v jednom souboru seběhnout requiry několika takových tříd. Špatný návrh by byl, kdybych musel při require jedné třídy myslet na to, že mám natáhnout i třídu MySQL.
BTW Vždyť i C header soubory mají konstrukci #ifndef _STDIO_H #define _STDIO_H ...