#php #null #multiplatform
#php #null #мультиплатформенность
Вопрос:
Есть ли что-то вроде Python os.path.devnull
, которое указывает на правильное нулевое устройство для данной платформы в PHP
(предпочтительно v5.6
)?
Я не вижу ничего очевидного в руководстве, phpinfo()
, $_SERVER
или $_ENV
и поиск в Google в основном приводит к ссылкам на python. Я не могу поверить, что такого нет. Чего мне не хватает?
Комментарии:
1. Такой вещи не существует
2. Зависит от того, что вы имеете в виду и как вы планируете его использовать. Вы просто хотите что-то выполнить и отменить возврат? Что и как?
Ответ №1:
В PHP нет такой встроенной функции. Однако чтение исходных текстов Python и PHP показывает очень простое решение:
function devnull()
{
$osToNull = [
// Windows
'WIN' => 'nul',
// OS2, eComStation
'OS2' => 'nul',
// RISC OS
'RISC' => 'null:',
// AmigaOS
'AMIGA' => 'nil:',
// OpenVMS
'VMS' => 'nl:',
// Unix, Netware
// returned if no other OS matches
'default' => '/dev/null',
];
foreach ($osToNull as $os => $nullDevice) {
if (strtoupper(substr(PHP_OS, 0, strlen($os))) === $os) {
return $nullDevice;
}
}
return $osToNull['default'];
}
Поскольку у меня нет доступа ко всем вышеупомянутым операционным системам, пожалуйста, поправьте меня, если я ошибаюсь.
Комментарии:
1. Стыдно слышать, что встроенного решения нет, но, поскольку мне это нужно только сейчас, отмечаю как лучший ответ. Я добавил нужные мне системы.
2. @CyprianGuerra Не могли бы вы поделиться системами и их местоположением с нулевым устройством для полноты картины?
3. Да, я добавил редактирование около 30 минут назад. Это появится после утверждения.
'Amiga' => 'nil:', 'VMS' => 'nl:'
4. @cprn Ах, я никогда не замечал, я обновил ответ, чтобы включить ваш комментарий.