PHP Pure функции
Я пытаюсь определить чистые функции в коде PHP.
Чистая функция - это та, в которой выполняются оба этих утверждения о функции:
- Функция всегда оценивает одно и то же значение результата, учитывая одно и то же значение аргумента. Значение результата функции не может зависеть от какой-либо скрытой информации или состояния, которое может изменяться по мере выполнения программы или между различными выполнениями программы, а также не может зависеть от какого-либо внешнего ввода от устройств ввода-вывода.
- Оценка результата не вызывает какого-либо семантически наблюдаемого побочного эффекта или вывода, такого как мутация изменяемых объектов или вывод на устройства ввода-вывода.
(определение из Википедии)
Достаточно ли сказать, что функция PHP чиста тогда и только тогда, когда
- все его аргументы передаются по значению (нет
&
в списке аргументов) - он не использует члены объекта (нет
$this
в теле функции) - он не использует глобалы (он не содержит
global
в теле функции) - это не использует суперглобальные (это не содержит
$_
переменные)
Верны ли эти утверждения? Я пропускаю какие-либо варианты использования?
1 ответ
Вы упускаете много вариантов использования
-
rand()
- взаимодействие с базой данных
- файловый ввод-вывод
-
static
переменные - вызовы других функций с
global
-
import
/require
операторы внутри функций - функции с внутренним состоянием, например
ob_get_contents()
- изменение указателей массива
Наверное, есть много вещей, о которых я не думаю. PHP имеет очень стабильный дизайн.