[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: видимость константы в подкаталогах
skolozhabskiy
добрый вечер,

в корне в файле index.php в самом начале объявлена константа пути, например:



define( 'ROOT', dirname(__FILE__).'/' );
define( 'FUNCTIONS', ROOT . 'functions/' );



но ее не видят скрипты в дочерних каталогах, например

с относительным путем "../functions/my_script.php"

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



$_SESSION['FUNCTIONS'] = FUNCTIONS;

$_SESSION['FUNCTIONS'] ."my_script.php"



а есть ли еще варианты решения подобного вопроса?

спасибо



Спустя 11 минут, 41 секунда (9.06.2012 - 21:23) Игорь_Vasinsky написал(а):
и варнингов нету? biggrin.gif

Цитата
Получив строку, содержащую путь к файлу или каталогу, данная функция возвратит родительский каталог данного пути.


понятно? эта функция показывает путь относительно самого файла в котором вызывается.. т.е. счёт идёт от той директории в которой вызываемый файл.

может тебе $_SERVER['DOCUMENT_ROOT'] нужен?

Спустя 8 минут, 19 секунд (9.06.2012 - 21:31) skolozhabskiy написал(а):
если я вас правильно понял. то вместо



"../functions/my_script.php"



можно использовать такой вариант:



__DIR__."my_script.php"



как полный путь в к файлам в подкаталогах.

верно?

спасибо за ответ

Спустя 5 минут, 16 секунд (9.06.2012 - 21:37) Игорь_Vasinsky написал(а):
Вот здесь про относительные и абсолютные пути и разницу между ними
http://phpfaq.ru/paths

__DIR__ и dirname(__FILE__) - это синонимы... просто первая появилась в PHP 5.3 biggrin.gif

Спустя 3 минуты, 51 секунда (9.06.2012 - 21:40) skolozhabskiy написал(а):
я как раз после прочтения этой статьи сделал вот такие предположения. так мои варианты неверные или верные? дело в том, что для моего кода потребовалось использование только абсолютного пути и я вот ищу правильный и оптимальный вариант.

кстати о __DIR__ и dirname(__FILE__) мне уже известно. я о них и не спрашивал, просто привел последний вариант с более совершенной __DIR__.

спасибо за ответ

Спустя 4 минуты, 16 секунд (9.06.2012 - 21:45) killer8080 написал(а):
skolozhabskiy
У констант нет ограничения области видимости.

Спустя 2 минуты, 38 секунд (9.06.2012 - 21:47) Игорь_Vasinsky написал(а):
она не совершенна, как ты выразился biggrin.gif они одинаковы.

сам решай как указывать путь. я беру от корня.

в твоём случае не в видимости дело, как ты указал - так она и есть, в противном случае ты бы получил сообщение - что используемая константа не определена.

Спустя 2 минуты, 58 секунд (9.06.2012 - 21:50) skolozhabskiy написал(а):
добрый вечер,

Игорь_Vasinsky
в противном случае ты бы получил сообщение - что используемая константа не определена.

а я как раз это и получаю

да я читал, но вот пример

два файла находятся в дочерних каталогах

корень/каталог1/файл1

корень/каталог2/файл2

в файле1 есть require_once с путем к файлу2

сейчас я прописываю так:

require_once('../каталог2/файл2');


файл виден, а если поставить константу объявленную в начале файла index.php в корне, то не видит (пример в первом посте)

вот такая задача.

спасибо

Спустя 2 минуты, 6 секунд (9.06.2012 - 21:52) Игорь_Vasinsky написал(а):
доброе утро.

Спустя 1 минута, 17 секунд (9.06.2012 - 21:54) killer8080 написал(а):
Цитата (skolozhabskiy @ 9.06.2012 - 21:50)
файл виден, а если поставить константу объявленную в начале файла index.php в корне, то не видит.

а файл1 инклюдиться в index.php в корне?

Спустя 1 минута, 41 секунда (9.06.2012 - 21:55) skolozhabskiy написал(а):
нет файл2 инклюдится в файле1, а как они расположены от корня я указал в первом посте

Спустя 1 минута, 4 секунды (9.06.2012 - 21:56) skolozhabskiy написал(а):
Игорь_Vasinsky

с написал добрый вечер killer8080

Спустя 45 секунд (9.06.2012 - 21:57) killer8080 написал(а):
skolozhabskiy
ну так откуда же в файл1 возьмется константа из другого файла?

Спустя 16 секунд (9.06.2012 - 21:57) Игорь_Vasinsky написал(а):
тем более.

Спустя 2 минуты, 12 секунд (9.06.2012 - 22:00) skolozhabskiy написал(а):
нет вы меня не поняли, еще раз:

контанта в файле index.php в корне в самом верху скрипта.

два файла находятся в дочерних каталогах

корень/каталог1/файл1

корень/каталог2/файл2

в файле1 есть require_once с путем к файлу2

инклюдится файл2 и я хотел найти решение не писать так в файле1:

require_once('../каталог2/файл2');

а указать в файле1 константой абсолютный путь к файлу2

это возможно?

спасибо

Спустя 3 минуты, 28 секунд (9.06.2012 - 22:03) killer8080 написал(а):
Ну если файл1 запускается напрямую, то можно например так

define('ROOT', realpath(__DIR__.'/..'));

Спустя 6 минут, 5 секунд (9.06.2012 - 22:09) skolozhabskiy написал(а):
это будет выглядеть для файла2 так:

в index.php - define('ROOT', realpath(__DIR__.'/..'));
в файле1, который находится в каталоге1 - require_once(ROOT.'/каталог2/файл2');
и так не работает - пишет, что константа неопределена

пробовал так:

require_once(ROOT.'/файл2'), но это не работает

спасибо за помощь

Спустя 6 минут, 1 секунда (9.06.2012 - 22:15) skolozhabskiy написал(а):
пишет, что константа ROOT в файле1 неопределена

Спустя 1 минута, 13 секунд (9.06.2012 - 22:16) killer8080 написал(а):
skolozhabskiy
подожди, каким боком здесь участвует index.php? Вроде ж файл1 в index.php не инклюдиться? Или я чего то не понимаю?

Спустя 1 минута, 24 секунды (9.06.2012 - 22:18) skolozhabskiy написал(а):
в index.php просто объявлена в самом верху константа.

еще раз повторюсь инклюдится файл2 в файле1. или это можно как-то иначе представить? я имею ввиду прописать абсолютный путь к файлу2?

спасибо

Спустя 1 минута, 41 секунда (9.06.2012 - 22:20) killer8080 написал(а):
Ну так файл1 запускается напрямую? причем здесь константы из другого файла? Как он связан с index.php?

Спустя 52 секунды (9.06.2012 - 22:20) skolozhabskiy написал(а):
я просто хотел сделать одну универсальную константу для файлов в дочерних подкаталогах

Спустя 1 минута, 29 секунд (9.06.2012 - 22:22) skolozhabskiy написал(а):
в файле 1 создается json и выводится в index.php. в файл1 необходимо подключить файл базы данных, который используется во многих файлах. это файл2. и теперь надо файл2 прописать абсолютный путь.

Спустя 1 минута, 27 секунд (9.06.2012 - 22:23) Игорь_Vasinsky написал(а):
делай файл vars.php - в нём все константы и переменные, его подключай к каждому файлу. константы по ветру не передаются.

Спустя 3 минуты (9.06.2012 - 22:26) skolozhabskiy написал(а):
спасибо, я тоже думал над этим, но есть проблема - где расположить файл vas.php и вторая - для его подключения к разным файлам тоже же нужно прописать путь - абсолютный и идем снова по кругу?


какой?

спасибо

Спустя 6 минут, 12 секунд (9.06.2012 - 22:33) Игорь_Vasinsky написал(а):
уф. $_SERVER['DOCUMENT_ROOT'] - глянь что это.

Спустя 8 минут, 48 секунд (9.06.2012 - 22:41) skolozhabskiy написал(а):
спасибо уже давно глянул, даже до корня не добирается, вот живой пример C:/Apache/test.ru/www.

Спустя 1 минута, 21 секунда (9.06.2012 - 22:43) skolozhabskiy написал(а):
Игорь_Vasinsky

извините, но вы даете советы совершенно отвлеченные от вопроса. если бы все было так просто, ябы не попросил помощи у профессионалов.

спасибо

Спустя 1 минута, 38 секунд (9.06.2012 - 22:44) killer8080 написал(а):
skolozhabskiy
в файл1 объявляй константу , как я показывал выше.

Спустя 5 минут, 58 секунд (9.06.2012 - 22:50) skolozhabskiy написал(а):
если прописать в файле1 сразу:

define('ROOT', realpath(__DIR__.'/..'));
require_once(ROOT.'/каталог2/файл2');

вместо

require_once('../каталог2/файл2');


то так работает. это правильно? нигде не ошибся?

спасибо

Спустя 1 минута, 23 секунды (9.06.2012 - 22:52) skolozhabskiy написал(а):
но это путь объявления констант в каждом конкретном файле. сделать универсальную константу я так понял варианта нет.

спасибо

Спустя 31 минута, 12 секунд (9.06.2012 - 23:23) Игорь_Vasinsky написал(а):
ты коннект к БД тоже в каждом своём файле прописываешь? тебе 10 раз сказали что делать.

Спустя 4 минуты, 12 секунд (9.06.2012 - 23:27) skolozhabskiy написал(а):
Игорь_Vasinsky

нет такими глупостями я не занимаюсь. спасибо я получил уже совет настоящего профессионала.

Спустя 16 минут, 5 секунд (9.06.2012 - 23:43) Игорь_Vasinsky написал(а):
С глубочайшем сожалением...
ух ты ёпты. я тебя запомнил.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.