powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / В чем отличие между __FILE__.'/engine/путь' и ''./engine/путь' ?
13 сообщений из 13, страница 1 из 1
В чем отличие между __FILE__.'/engine/путь' и ''./engine/путь' ?
    #39778586
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В чем отличие между __FILE__.'/engine/путь' и ''./engine/путь' ?
Юзаю DLE движок на PHPStorm. В родном движке код написан через константу ROOT которя принимает значение __FILE__. Неудобство в том, что редактор не предлогает переход на нужн_й require. Я нашел как 3то исправить, но для себя хочу понять
...
Рейтинг: 0 / 0
В чем отличие между __FILE__.'/engine/путь' и ''./engine/путь' ?
    #39778587
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей159В чем отличие между __FILE__.'/engine/путь' и ''./engine/путь' ?В первом случае ерунда какая-то написана.
Возможно, там в реальности __DIR__ используется, а не __FILE__. Если так, то в первом случае путь будет абсолютным, а во втором относительным.
...
Рейтинг: 0 / 0
В чем отличие между __FILE__.'/engine/путь' и ''./engine/путь' ?
    #39778589
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сори...я не правильно условие написал
Код: 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
В чем отличие между __FILE__.'/engine/путь' и ''./engine/путь' ?
    #39778590
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может пути на серверах в разн_х хостеров разн_е и такой способ наиболее универсален
...
Рейтинг: 0 / 0
В чем отличие между __FILE__.'/engine/путь' и ''./engine/путь' ?
    #39778592
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прочтите начало документации http://php.net/manual/ru/function.include.php по include, там подробно сказано, как работает конструкция при использовании абсолютного и относительного путей. Принципы работы отличаются. Абсолютный путь однозначно показывает на подключаемый файл, при указании относительного пути однозначности нет.

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

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

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


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

Ага, понял.

Наверно, было бы не лишним дополнить что при выполнении кода конструкция с константойАндрей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
В чем отличие между __FILE__.'/engine/путь' и ''./engine/путь' ?
    #39780160
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Через несколько дней обнаружилась проблема. Всетаки не одно и тоже. CRON запускает без параметров и задал путь не из корня. И все горит ошибками. А если дать ENGINE_DIR . '/modules/....' то все работает. Просто неудобно что редактор не подсвечивает пути и нет возможности перейти по ссилке. Иногда догадuвается
...
Рейтинг: 0 / 0
В чем отличие между __FILE__.'/engine/путь' и ''./engine/путь' ?
    #39780166
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей159Всетаки не одно и тоже.Изначально не было очевидным, что отличный от исходного код, работающий по другим принципам, не является тем же самым, что и исходный? ;-)

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

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


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