Intereting Posts
Ошибка HTTP-запроса! HTTP / 1.0 403 Запрещено Как использовать отдельные языковые файлы для многозадачных магазинов opencart? Приоритет логических операторов PHP влияет на результаты присваивания переменных странным образом PHPUnit :: получить сообщение: ОК, но неполные или пропущенные тесты! без какой-либо информации, где это происходит Установка псевдонимов в Yii2 в файле конфигурации приложения PDO: Как получить доступ к файлу Microsoft Access в Linux? Получение текущей даты, времени, дня в laravel Что делает функция подчеркивания PHP? как реализовать простой Android OAuth и API сервера Как легко декодировать закодированную строку HTTP-chunked при выполнении необработанного HTTP-запроса? использовать скобки в имени флажка при использовании php и javascript? Возвращает ли mysqli_stmt :: result_metadata значение false для вставки, обновления, удаления запросов? Array Loop Предполагая данные Nil? PDO для подключения к MSSQL Over MSSQL_ * Функции Active Collab уведомляет пользователя при создании, закрытии или повторной открытии задачи с помощью API

Разделители каталога PHP, заставляя косую черту; ненавязчивый

Всякий раз, когда я работаю с PHP ( часто ), я обычно работаю в окне Windows, однако я ( стараюсь ) разрабатывать агностические приложения платформы; одним из основных моментов является использование разделителей каталогов.

Как многие знают, что любая файловая система работает в среде Windows на PHP, вы можете использовать косые черты вместо обратной, а PHP сортирует ее под капотом. Это прекрасно, когда дело доходит до использования строковых литералов для прохождения пути к fopen() или к чему-либо; но при извлечении путей, будь то __FILE__ или расширении с помощью realpath() , извлеченные пути, конечно, используются с помощью соответствующих косой черты ОС. Кроме того, я заметил некоторые несоответствия в концевых косых чертах. Один или два раза realpath() один ( обратная косая черта ) и realpath() тоже ( я предпочитаю realpath() косую черту, но не прерывисто )

Это явно проблема для сравнения строк, потому что вместо этого:

 compare_somehow('path/to/file.php', __DIR__); 

Ради надежности я должен идти:

 compare_somehow('path/to/file.php', rtrim(strtr(__DIR__, '\\', '/'), '/') . '/'); 

Это похоже на много работы. Я могу бросить его в функцию, конечно; теперь я застрял в зависимости от произвольной функции во всем моем OO-коде.

Я понимаю, что PHP не идеален, и нужно создавать устройства, но, конечно же, должно существовать какое-то агностическое решение для платформы, чтобы заставить хиты файловой системы извлекать перекошенные прорези пути или, по крайней мере, неинтрузивный способ введения независимой от класса функции для этой цели.

Сводный вопрос ( ы ):

  • Есть ли какое-нибудь магическое ( хотя и надежное ) обходное решение, взломать или иным образом заставить PHP отбросить назад разреженные пути файловой системы, независимо от ОС сервера?
  • Я собираюсь предположить, что ответ не соответствует вышеизложенному, поэтому двигаться дальше; какие положения я могу сделать, чтобы принудительно использовать косую черту ( или какой-либо выбор, действительно ) в качестве разделителя каталогов? Я предполагаю через вышеупомянутую функцию фильтра, но теперь, куда он должен идти?

Вперед косой чертой. Даже если разделитель ОС хоста – #*&@ .

Related of "Разделители каталога PHP, заставляя косую черту; ненавязчивый"

Поскольку я комментировал, я не могу понять, почему вы должны это сделать (мне было бы интересно узнать о конкретной проблеме, которую вы __FILE__ ), но вот возможное решение с использованием вывода __FILE__ в качестве примера: –

 $path = str_replace('\\', '/', __FILE__); 

Это будет (должно?) Работать независимо от * слэшей, возвращаемых ОС (я думаю).

К сожалению, я не знаю о «волшебном (хотя и надежном) обходном пути, взломе или другом, чтобы заставить PHP отбросить назад разреженные пути файловой системы, независимо от ОС сервера», кроме этого. Я предполагаю, что это может быть завернуто в класс-помощник, но это все равно дает вам произвольную зависимость вашего кода.