Недавно я просматривал PHP 7, в частности, возвращал объявление типа и тип намека . Я скомпилировал PHP 7 из источника (главная ветка из Github ) и запускал его в виртуальном ящике Ubuntu 14.04. Я попытался запустить следующий код, чтобы получить проверку новых Исключений . Но он дал чистую страницу.
<?php function test(): string { return []; } echo test(); 
  Тогда я понимаю, что я должен установить ошибку для отображения на экране.  Поэтому я добавил старомодный ini_set('display_errors', 1);  как показано ниже, 
 <?php ini_set('display_errors', 1); function test(): string { return []; } echo test(); 
  что дало мне следующий TypeError как и ожидалось в соответствии с этим Throwable interface RFC 
Fatal error: Uncaught TypeError: возвращаемое значение test () должно быть из строки типа, массив возвращен в /usr/share/nginx/html/test.php в строке 7 в /usr/share/nginx/html/test.php : 7 Трассировка стека: # 0 /usr/share/nginx/html/test.php(10): test () # 1 {main} брошен в /usr/share/nginx/html/test.php в строке 7
  Копаю дальше, я добавил declare(strict_types=1);  вверху, как показано ниже, 
 <?php declare(strict_types=1); ini_set('display_errors', 1); function test(): string { return []; } echo test(); 
и ошибка, ошибка просто исчезла, оставив меня с пустой страницей. Я не могу понять, почему он дает мне пустую страницу?
После поиска в Google и RFC я пришел к следующему предложению в RFC ,
Этот RFC предлагает дополнительно добавить новую необязательную директиву для каждого файла, declare (strict_types = 1) ;, которая делает все вызовы функций и операторы return внутри файла «строгими» типами для проверки деклараций скалярного типа, в том числе для расширений и встроенные функции PHP.
  Это означает, что в директиве declare(strict_types=1) не было ничего плохого, но проблема заключалась в том, что я вызывал функцию ini_set() .  Он ожидает, что второй параметр будет иметь тип string . 
 string ini_set ( string $varname , string $newvalue ) 
  Вместо этого я передавал int , и, следовательно, настройка, необходимая для отображения самих ошибок, не была установлена, и, следовательно, я попал с пустой страницей в строгом режиме PHP.  Затем я немного изменил код и передал строку "1" как показано ниже, и это сработало. 
 <?php declare(strict_types=1); ini_set('display_errors', "1"); function test(): string { return []; } echo test(); 
поскольку ошибка заявляет, что ваша функция ожидает, что вы вернете строку, но вместо этого вы вернете массив! И функция жалуется, что нормально. Поэтому при возврате просто введите строковое значение. Это оно!