apache — глобальное включение ‘strict_types’ в PHP 7

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

<?php declare(strict_types=1);

// All other code here
// ...

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

31

Решение

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

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

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

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

37

Другие решения

По сути нет.

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

1

По вопросам рекламы [email protected]