Add to Google Reader or Homepage Prihlásiť sa k odberu RSS

| Rubrika Php / mysql

Tip: správne includovanie súborov

Používaniu funkcie include sa pravdepodobne dá len ťažko vyhnúť. Jej používanie je jednoduché, no v prípade veľkých projektov, pri ktorých je kladený dôraz najmä na rýchlosť aplikácie je treba optimalizovať kde sa dá. V prípade include je dobré zapamätať si pravidlo, že cesta k includovanému súboru by mala byť absolútna. Absolútna cesta je kompletná cesta k súboru v rámci adresárovej štruktúry, teda v prípade nejakého PHP/Apache balíka (napr. Wamp) nainštalovaného na Windowse by mohla vyzerať napríklad takto:

C:\wamp\www\adresar\subor.php

Jednou možnosťou je písať absolútnu cestu priamo do kódu:

<?
include 'C:\wamp\www\adresar\subor.php';
?>

Toto je však veľmi krátkozraké riešenie, pretože iná cesta je na localhoste, iná na produkočnom serveri. Aj preto veľa kodérov používa cesty relatívne. Riešením však môže byť použitie funkcie dirname, pričom zápis by mohol vyzerať aj takto:

<?
include dirname(__FILE__) . '/nazov_suboru.php';
?>

Konštrukcia dirname(__FILE__) vráti absolútnu cestu k adresáru, kde je uložený súbor, v ktorom je funkcia dirname zavolaná. Ďalej stačí dopísať cestu k includovanému súboru. Výstup takejto konštrukcie bude presne taký istý ako keby sme cestu zapísali „natvrdo“, avšak jeho použiteľnosť je zaručená na akomkoľvek serveri s ľubovoľnou adresárovou štruktúrou.

Ďalšou možnosťou je využitie serverovej premennej $_SERVER[‚DOCU­MENT_ROOT‘]. Tá vráti cestu k rootu na našom serveri a odtiaľ je jednoduché dopísať cestu ku konkrétnemu súboru. Riešenie môže vyzerať dobre, avšak vzhľadom na to, že vracia iba cestu k ROOTu, je ďalej nutné ručne dopísať cestu priamo k súboru. A to môže byť problém, ktorý by vzhľadom na odlišnosti adresárových štruktúr na rôznych serveroch mohol znamenať nefunkčnosť aplikácie.

<?
/* takáto konštrukcia nemusí pracovať vždy správne na každom serveri.
V premennej $_SERVER['DOCUMENT_ROOT'] je uložená absolútna cesta
k rootu, nie k adresáru, kde máme uložené súbory projektu
(napr. public_html alebo www alebo htdocs atď.)*/
include $_SERVER['DOCUMENT_ROOT'] . '/nazov_suboru.php';
?>

Tomáš Mašek

Naspäť naspäť Pridať komentár k článku prispieť do diskusie [6]

Vyhľadávanie

v názvoch článkov v textoch článkov

Pridať komentár

Koľko je na ruke prstov?

RSS