Autor Zpráva
finchCZ
Profil
Zdravím,

chtěl bych se zeptat, jestli je require_once na použití lepší než include_once a proč? Případně jaký je v nich rozdíl, z manuálu jsem pochopil, že require_once vloží soubor, jen pokud nebyl už vložen, ale include_once jej tam vloží, tak jako tak. Někde jsem o tom četl, ale totálně nechápu proč. Require_once je bezpečnější? Může mi prosím někdo dát nějaký příklad?
Tori
Profil
finchCZ:
require_once vloží soubor, jen pokud nebyl už vložen, ale include_once jej tam vloží, tak jako tak
Ne, include_once také vkládá soubor jen pokud už nebyl vložen. Tytéž příkazy bez _once mohou vložit soubor opakovaně.
Zásadní rozdíl mezi require a include je v reakci na vložení neexistujícího souboru: include vygeneruje varování, ale skript pokračuje dál, kdežto require vyvolá fatální chybu a ukončí skript. Pročtěte si ten manuál ještě jednou, píše se to tam.
Nox
Profil
Zapomněl jsi se ještě kouknout do require, tam to je:

"require() is identical to include() except upon failure it will also produce a fatal E_COMPILE_ERROR level error. In other words, it will halt the script whereas include() only emits a warning (E_WARNING) which allows the script to continue."

Tzn. require require hodí fatal error pokud soubor neexistuje, include jen warning.

V praxi ale kvůli tomu že chyby jsou v PHP řešeny nekonzistentně a navíc mít tam jakékoli chyby je problém, se to řeší - a frameworky to tak řeší - že se i při notice vyhodí velká obrazovka s chybou...a v tom případě je to celkem jedno
finchCZ
Profil
Aha, děkuji, já vůl jsem si četl jen manuál k _once funkcím a o rozdílu v chybách jsem tudíž nevěděl. Tak mě napadá, že require(_once) je v jistém smyslu i bezpečnější, než include. Právě kvůli toho odstavení skriptu.

Děkuji a omlouvám se za stupidní dotaz

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: