Гость
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / В чем отличие между __FILE__.'/engine/путь' и ''./engine/путь' ? / 13 сообщений из 13, страница 1 из 1
25.02.2019, 02:09
    #39778586
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем отличие между __FILE__.'/engine/путь' и ''./engine/путь' ?
В чем отличие между __FILE__.'/engine/путь' и ''./engine/путь' ?
Юзаю DLE движок на PHPStorm. В родном движке код написан через константу ROOT которя принимает значение __FILE__. Неудобство в том, что редактор не предлогает переход на нужн_й require. Я нашел как 3то исправить, но для себя хочу понять
...
Рейтинг: 0 / 0
25.02.2019, 02:52
    #39778587
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем отличие между __FILE__.'/engine/путь' и ''./engine/путь' ?
Андрей159В чем отличие между __FILE__.'/engine/путь' и ''./engine/путь' ?В первом случае ерунда какая-то написана.
Возможно, там в реальности __DIR__ используется, а не __FILE__. Если так, то в первом случае путь будет абсолютным, а во втором относительным.
...
Рейтинг: 0 / 0
25.02.2019, 02:58
    #39778589
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем отличие между __FILE__.'/engine/путь' и ''./engine/путь' ?
сори...я не правильно условие написал
Код: php
1.
2.
define ( 'ROOT_DIR', dirname ( __FILE__ ) );
define ( 'ENGINE_DIR', ROOT_DIR . '/engine' );



дальше например
Код: php
1.
include ENGINE_DIR . '/modules/addnews.php';



я могу сделать так
Код: php
1.
include './engine/modules/addnews.php';



почему-то решили через ENGINE_DIR делать. хотел понять 3тот момент
...
Рейтинг: 0 / 0
25.02.2019, 03:02
    #39778590
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем отличие между __FILE__.'/engine/путь' и ''./engine/путь' ?
Может пути на серверах в разн_х хостеров разн_е и такой способ наиболее универсален
...
Рейтинг: 0 / 0
25.02.2019, 03:13
    #39778592
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем отличие между __FILE__.'/engine/путь' и ''./engine/путь' ?
Прочтите начало документации http://php.net/manual/ru/function.include.php по include, там подробно сказано, как работает конструкция при использовании абсолютного и относительного путей. Принципы работы отличаются. Абсолютный путь однозначно показывает на подключаемый файл, при указании относительного пути однозначности нет.

Почему используется именно константа (а не переменная или __DIR__ или что-то ещё) - это вопрос к автору движка. Наверно, автор имел какие-то основания именно для такого решения.
...
Рейтинг: 0 / 0
25.02.2019, 10:11
    #39778653
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем отличие между __FILE__.'/engine/путь' и ''./engine/путь' ?
vkle,

http://php.net/manual/ru/language.constants.predefined.php
Код: php
1.
2.
__FILE__  Полный путь и имя текущего файла с развернутыми симлинками. Если используется внутри подключаемого файла, то возвращается имя данного файла.
__DIR__   Директория файла. Если используется внутри подключаемого файла, то возвращается директория этого файла. Это эквивалентно вызову dirname(__FILE__). Возвращаемое имя директории не оканчивается на слеш, за исключением корневой директории.


Поэтому чтобы иметь полный путь корневого каталога сайта и объявлена глобальная константа.

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
C:/web/www/somesite/base.php
echo __DIR__; -- C:/web/www/somesite
<?php
include '../engine.php';
include './modules/auth.php';

C:/web/www/engine.php
<?php
echo __DIR__; -- C:/web/www

C:/web/www/somesite/modules/auth.php
<?php
echo __DIR__; -- C:/web/www/somesite/modules


Так понятнее?
...
Рейтинг: 0 / 0
25.02.2019, 10:42
    #39778662
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем отличие между __FILE__.'/engine/путь' и ''./engine/путь' ?
Руслан Дамирович,

Понятнее, чем... что?
...
Рейтинг: 0 / 0
25.02.2019, 10:54
    #39778669
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем отличие между __FILE__.'/engine/путь' и ''./engine/путь' ?
...
Рейтинг: 0 / 0
25.02.2019, 11:23
    #39778689
Дегтярев Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем отличие между __FILE__.'/engine/путь' и ''./engine/путь' ?
Hett,

ты серьезно? он же написал авторЮзаю DLE движок
...
Рейтинг: 0 / 0
25.02.2019, 15:32
    #39778846
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем отличие между __FILE__.'/engine/путь' и ''./engine/путь' ?
vkleРуслан Дамирович,
Понятнее, чем... что?
Прошу прощения. Не вам оно было адресовано, а ТСу, на его вопрос
дальше например
Код: php
1.
include ENGINE_DIR . '/modules/addnews.php';


я могу сделать так
Код: php
1.
include './engine/modules/addnews.php';
...
Рейтинг: 0 / 0
25.02.2019, 18:11
    #39778954
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем отличие между __FILE__.'/engine/путь' и ''./engine/путь' ?
Руслан Дамирович,

Ага, понял.

Наверно, было бы не лишним дополнить что при выполнении кода конструкция с константойАндрей159
Код: php
1.
include ENGINE_DIR . '/modules/addnews.php';

развертывается после конкатенации в нечто вроде
Код: php
1.
include '/home/username/sitename/public_html/engine/modules/addnews.php';

, что в общем случае не эквивалентно варианту ТС с относительным путемАндрей159я могу сделать так
Код: php
1.
include './engine/modules/addnews.php';


Однако, в частном случае, когда текущей является директория '/home/username/sitename/public_html' из примера, эта конструкция практически идентична той, что с константой.
...
Рейтинг: 0 / 0
28.02.2019, 04:05
    #39780160
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем отличие между __FILE__.'/engine/путь' и ''./engine/путь' ?
Через несколько дней обнаружилась проблема. Всетаки не одно и тоже. CRON запускает без параметров и задал путь не из корня. И все горит ошибками. А если дать ENGINE_DIR . '/modules/....' то все работает. Просто неудобно что редактор не подсвечивает пути и нет возможности перейти по ссилке. Иногда догадuвается
...
Рейтинг: 0 / 0
28.02.2019, 06:17
    #39780166
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем отличие между __FILE__.'/engine/путь' и ''./engine/путь' ?
Андрей159Всетаки не одно и тоже.Изначально не было очевидным, что отличный от исходного код, работающий по другим принципам, не является тем же самым, что и исходный? ;-)

Андрей159И все горит ошибками. А если дать ENGINE_DIR . '/modules/....' то все работает.Так сдались, чтоль? Зря! Можно и дальше пойти в этом направлении - изменить include_path (по крайней мере, для крона), чтобы PHP искал файлы ещё и в других местах. Конечно, без гарантии, что не вылезет какая-то другая ошибка. :-(

Андрей159Просто неудобно что редактор не подсвечивает пути и нет возможности перейти по ссилке.Так напишите фичреквест, может авторы и реализуют желаемое в будущих версиях редактора.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / В чем отличие между __FILE__.'/engine/путь' и ''./engine/путь' ? / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]