Задаване на точни пътища при include?!?

streleca_stz

Registered
Здравейте! Вчера гледах един видео урок за най-честите грешки на програмистите и ми направи впечатление, че в него човечеца казва, че много хора правели грешката като инклудват файл да слагат относителни пътища до него.. А това много забавяло перформънса на самия скрипт.. (особено ако има повече инклууди..) Та искам да ви попитам как би могло да стане автоматично да взема пътя до самия файл, за да не се налага при презареждане на страницата да се търси файла из цялата директория преди да се инклудне..?!? Тоест да се зададе директен път и да не го търи, а направо да го зареди?

Ето примерна структура на сайта:
Намира се в htdocs/foldername/ (ако е на локалната машина)
Примерна структура:
foldername/
---bg/
====index.php
====ohe_rpage.php
---en/
====page.php
---includes/
====connect.php
---other-folder/
page_in_root_dir.php
:idea: :idea:
 
Всички фреймуъркове и cms-и използват следния модел:

В главната директория, обикновено в индекс файла, ако използват front controller pattern, или в конфигурационен файл, който се include-ват в другите файлове, се дефинират константа с абсолютния път до главната директория.

Ако рзгледаш сорс кодовете на Yii, Symfony, CodeIgniter и тнт, ще видиш, че при всички в някой от файловете в главната директория имат следните редове (или подобни) :
PHP:
// paths.php
define('ROOT', basename(__FILE__).'/');
define('Libraries', ROOT.'libraries/');
// и тнт...

След като include-неш този файл, вече можеш да извикваш спокойно файловете:

PHP:
include ROOT.'file1.php';
include Libraries.'SomeLib/somefile.php';
:)
 
F1r3Fl3x каза:
Всички фреймуъркове и cms-и използват следния модел:

В главната директория, обикновено в индекс файла, ако използват front controller pattern, или в конфигурационен файл, който се include-ват в другите файлове, се дефинират константа с абсолютния път до главната директория.

Ако рзгледаш сорс кодовете на Yii, Symfony, CodeIgniter и тнт, ще видиш, че при всички в някой от файловете в главната директория имат следните редове (или подобни) :
PHP:
// paths.php
define('ROOT', basename(__FILE__).'/');
define('Libraries', ROOT.'libraries/');
// и тнт...

След като include-неш този файл, вече можеш да извикваш спокойно файловете:

PHP:
include ROOT.'file1.php';
include Libraries.'SomeLib/somefile.php';
:)
Ммм не стана нещо :idea:
Warning: require(paths.php/includes/connect.php) [function.require]: failed to open stream: No such file or directory
Явно не взима пътя на самата директория, а по-скоро на самия файл с пътищата.. :?
 
Хах, ми аз съм объркал кода. :oops:
Замести функцията basename със dirname.
Така всичко трябва да работи :)
 
F1r3Fl3x каза:
Хах, ми аз съм объркал кода. :oops:
Замести функцията basename със dirname.
Така всичко трябва да работи :)
:?: Оле.. мерси много.. Много съм тъп, че не проверих в php.net за подобна функция.. Сигурно щях да я намеря.. Мерси отново!! 8) :lol:
 

Back
Горе