У меня есть следующий код:
$file_check_method_func = function($n) { $n = absint($n); if(1 !== $n) { $n = 0; } return $n; }; $valid['file_check_method'] = array_map($file_check_method_func, $input['file_check_method']);
Это работает на моей установке PHP 5.3.5, но когда я запускаю этот код при установке PHP 5.2.15, я получаю:
Parse error: syntax error, unexpected T_FUNCTION in /home/xxxx/public_html/xxxx/xxxxxxx/wp-content/plugins/wordpress-file-monitor-plus/classes/wpfmp.settings.class.php on line 220
Строка 220 является первой строкой вышеуказанного кода.
Итак, мой вопрос (ы), есть ли что-то неправильно написанное в моем коде, которое дало бы эту ошибку? Если это не из-за ошибки или не поддерживается функция в PHP 5.2.15? Если да, то как я могу написать вышеприведенный код, чтобы не генерировать ошибку?
Вышеприведенный код находится в функции в классе.
Анонимные функции – это функция, добавленная в 5.3
Для более ранних версий создайте именованную функцию и укажите ее по имени. Например.:
function file_check_method_func($n) { $n = absint($n); if(1 !== $n) { $n = 0; } return $n; } $valid['file_check_method'] = array_map('file_check_method_func', $input['file_check_method']);
или внутри класса:
class Foo { protected function file_check_method_func($n) { $n = absint($n); if(1 !== $n) { $n = 0; } return $n; } function validate($input) { $valid = array(); $valid['file_check_method'] = array_map(array($this, 'file_check_method_func'), $input['file_check_method']); return $valid; } }
Я настоятельно рекомендую не полагаться на create_function
.
Синтаксис анонимных функций в примере может использоваться только в PHP> = 5.3. Перед PHP 5.3 анонимные функции могут быть созданы только с помощью create_function()
.
Добавлены анонимные функции с использованием этого синтаксиса функций 5.3. Но вы можете определить анонимные функции, используя http://www.php.net/manual/en/function.create-function.php