Можно ли отключить ext- json? - PullRequest
2 голосов
/ 15 апреля 2020

Можно ли отключить расширение json в PHP? do c говорит, что:

Начиная с PHP 5.2.0, расширение JSON связывается и компилируется в PHP по умолчанию.

Но некоторые люди в комментариях говорят, что расширение json иногда предоставляется в виде отдельного пакета.

Может ли расширение json быть явно отключено или мы можем быть уверенным, что он всегда доступен?


Справочная информация: я хочу, чтобы класс в моей библиотеке реализовывал JsonSerializable, но это может быть разрыв B C если интерфейс не всегда объявляется, и библиотека внезапно использует расширение, которое не всегда доступно.

1 Ответ

2 голосов
/ 15 апреля 2020

Да, любое расширение PHP может быть установлено, удалено, включено или отключено по желанию.

Расширение json - несмотря на его повсеместность - все еще является просто расширением и может быть удалено в этом

В нескольких случаях расширение json может отсутствовать:

  1. Администратор отключил / удалил его:

    ;extension=json
    
  2. Установленная версия PHP была скомпилирована из исходного кода вручную, а расширение json было опущено:

    --disable-json
    
  3. Расширение входит в отдельный пакет; Например, в Fedora вам необходимо явно установить пакет php-json.

Важная часть вашего вопроса: Можем ли мы быть уверены, что он всегда доступен

Обычно я бы сказал нет. Однако маловероятно, что это конкретное расширение будет отключено или пропущено, но это не означает, что этого не произойдет.

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

Мое предложение: создайте свою библиотеку как пакет Composer и объявите ext-json как зависимость. Таким образом, вы можете предоставить инструкции по установке в виде пакета Composer, и если базовая система не соответствует требованиям вашего пакета, установка завершится неудачно, и пользователь будет предупрежден об отсутствующем расширении.

...