Найти зависящие от платформы нулевые устройства в PHP?

#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 Ах, я никогда не замечал, я обновил ответ, чтобы включить ваш комментарий.