Включение «strict_types» во всем мире в PHP 7

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

<?php declare(strict_types=1); // All other code here // ... 

Поэтому мне было интересно, есть ли способ включить strict_types глобально, используя что-то вроде php.ini или файла конфигурации apache, поэтому мне не нужно писать эту строку каждый раз, и если да, то как я могу включить это?

Это преднамеренно невозможно, потому что реализация, принятая после чрезвычайно длительного обсуждения подсказок скалярного типа, была такой: https://wiki.php.net/rfc/scalar_type_hints_v5

Он явно дает выбор того, как скалярные типы проверяются на вызывающую функцию любой функции, а не ее автора, так что:

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

Поэтому вам следует сказать PHP, какие файлы были написаны для использования режима строгого типа, а какие нет; и способ сделать это – использовать инструкцию declare .

По существу нет.

Потому что, если вам нужны только библиотеки, которые использовали строгий режим, вы вызовете ненужное разделение пакетов. Также рассмотрим вариант с строгими / слабыми типами, который является просто дополнительным в PHP.