правильно инклудить как ?

ZloiJoker

Новичок
правильно инклудить как ?

Проблема вот в чем, есть фаил назовеем его test.php в нем:

include_once "./common.php";
include_once "./include/users.php";
хочется перенести его на уровень ниже, т.е создать папку, и запихать туда фаил, но вот чтобы это все работало недостаточно исправить:
include_once "./../common.php";
include_once "./../include/users.php";
Потому что в common.php тоже что то инклудится и также теперь пыттаетс искаьть эти файла на уровни ниже..

Как правильно инклудить, чтобы изменить только test.php.
 

HEm

Сетевой бобер
указывай не относительные а абсолютные пути (путь к корневой папке сайта можно найти в $_SERVER)
 

Alexandre

PHPПенсионер
я все инклуды запихиваю в common.php
а затем его уже инклужу во все свои файлы
 

Observer

Новичок
Можно добавить в include_path абсолютный путь к директории с инклудами, и при инклуде указывать путь относительно этой директории. Т. е. если написать:
set_include_path(get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] . '/include/');
, то потом можно будет писать просто:
include_once "users.php";
 

WP

^_^
Я храню в конфиге абсолютный путь и его поставляю везде.
 

JamES

Новичок
Автор оригинала: Alexandre
я все инклуды запихиваю в common.php
а затем его уже инклужу во все свои файлы
И зачем такое делать?
производительность сразу падает, абсолютно неоправданный шаг
почитай на досуге zend_performance
 

kruglov

Новичок
WP
Дадада...
- Как пройти в библиотеку?
- Тентура 013, Земля, РФ, Москва, метро Библиотека имени Ленина, выход налево....

Вместо

- А вон там за углом слева в 50 метрах.
 

Observer

Новичок
kruglov

как пишете относительные пути? типа так?
PHP:
include(basename(__FILE__) . '/../../includes/SomeClass.php');
Чем это лучше
PHP:
include($_SERVER['DOCUMENT_ROOT'] . '/includes/SomeClass.php');
?
Какую из этих конструкций придется править, если перенести файл на уровень выше или ниже?
 

kruglov

Новичок
Observer
А зачем переносить файл? Обычно всю готовую систему ставят то в корень, то в подкаталог.

p.s. Особенно неожиданно выглядит результат второго инклюда, если скрипт на IIS ставится или кроном запускается.
 

WP

^_^
kruglov
Угу, если человеку надо будет завтра туда зайти тоже.

В конфиге: define('ROOT_PATH',dirname(__FILE__));
А потом include ROOT_PATH.'/file.php';

Хотя у меня обычно главным скрипт вызывает дочерние которые лежат в подкаталогах, но все равно схема даже тут помогает.
 

Observer

Новичок
Автор оригинала: kruglov
А зачем переносить файл? Обычно всю готовую систему ставят то в корень, то в подкаталог.
Ну, рефакторинг никто не отменял :) Еще не нравится необходимость помнить местонахождение файла скрипта при написании путей.

p.s. Особенно неожиданно выглядит результат второго инклюда, если скрипт на IIS ставится или кроном запускается.
Что использовать вместо $_SERVER['DOCUMENT_ROOT'] - уже другой вопрос. В любом случае, ничто не мешает определить константу с "точкой отсчета", и использовать ее везде, как это, например, делает WP.
 

kruglov

Новичок
Observer
Мои предложения щадящи относительно простого пользователя. Который (которому), к примеру, перенес форум на другой хостинг, и он у него работать перестал, потому что в ini-файле написано /home/vasya/domains/blabla.ru/httpdocs/
 

Observer

Новичок
Автор оригинала: kruglov
Мои предложения щадящи относительно простого пользователя.
Ну-ну...

Который (которому), к примеру, перенес форум на другой хостинг, и он у него работать перестал, потому что в ini-файле написано /home/vasya/domains/blabla.ru/httpdocs/
Вы точно уверены, что это можно сделать только так, как делаете вы?
 

KIRALEX

Новичок
Тема нераскрыта есть пара вапросов над каторыми я бьюсь как компактнее записать?
PHP:
//Я сейчас пишу так
define('SEP', DIRECTORY_SEPARATOR);
define('ROOT', dirname( __FILE__ ) . SEP);
define('SUBDIR', substr( $_SERVER['SCRIPT_NAME'] , '0', - strlen( basename( $_SERVER['SCRIPT_NAME'] ) ) - '1' ));

// У ROOT в зависимости от операционки будут слеши то водну то в другую сторону.
Как мне исправить SUBDIR чтоб было кароче и как добавить
апсалютный URL

[:protocol:]://[:host:]/[:subdir:]]/
 
Сверху