Я заметил некоторые несоответствия в руководстве по PHP; задокументировано несколько сигнатур основных функций для приема аргументов по ссылке, однако они принимают аргументы по значению.
Ранее я опубликовал более конкретный вопрос , и @cweiske предоставил отличный ответ ( со ссылкой на соответствующий источник PHP ), однако эти несоответствия кажутся более распространенными.
На это влияет ряд функций ( Я обновлю этот список как ордера; также обратите внимание, что эти тесты были выполнены в error_reporting(-1)
среде )
Теперь я обеспокоен не тем, что занимаюсь анализом документации, а тем, что боюсь, что разработчики PHP находятся на грани детали реализации этих функций ( или что-то столь же ненадежное )
Я использую array_replace_recursive()
, например, чтобы взять аргумент массива и применить его к другому массиву, содержащему значения по умолчанию. Некоторые из моих кодовых баз воспользовались этим несоответствием, чтобы просто сделать:
$values = array_replace_recursive(array(
'setting_1' => array(
'sub-setting_1' => '',
'sub-setting_2' => '',
'sub-setting_3' => '',
),
'setting_2' => array(
'sub-setting_1' => 0,
'sub-setting_2' => 0,
),
'setting_3' => true,
), $values);
Таким образом, создается правильно отформатированный массив ( для обхода безвозмездных isset()
вызовов )
Должен ли я быть обеспокоен этим? Я подумываю о том, чтобы отправить запрос об ошибке, связанной с документацией, но сначала мне любопытно, если кто-то на SO ( смотрит в вашу сторону @ cweiske ) имеет представление о , почему это было сделано .