Ниже приведено небольшое сравнение скорости (только для Mac Os) ...:)
Для chrome 'plus' и 'mul' являются самыми быстрыми, Math.floor - самый медленный (> 700 000,00 оп / сек). Для Firefox 'plus' самый медленный (!) 'Mul' самый быстрый (> 900 000 000 оп / сек). В Safari «parseInt» - это посты, «число» является самым медленным (но resulats очень похожи,> 13 000 000 и 31 000 000). Таким образом, Safari для строки cast для int более чем в 10 раз медленнее, чем другие браузеры. Итак, победителем является «mul»:)
Вы можете запустить его в своем браузере по этой ссылке https://jsperf.com/casttonumber
Хотя этот ответ должен работать для вас, я настоятельно рекомендую вам убедиться, что пользователи могут вызывать только определенные функции на вашем сервере. Это может быть ОГРОМНАЯ угроза безопасности, позволяющая пользователям передавать любое имя функции php и получать ответ от сервера.
Для этого я добавил массив $allowedFunctions
, где вы можете указать, какие функции может вызывать пользователь.
Или вы можете создать класс, в котором вы можете определить методы, которые могут выполнять пользователи, а затем проверить, существует ли данный метод $function
в вашем классе. Если это так, выполните функцию.
Вот как вы можете запустить свою функцию в представлении
В вашем routes/web.php
добавьте это
Route::get('/someroute/{function?}', function($function = null) {
// check that parameter is passed and that function exists
if ( empty($function) || ! function_exists($function) ) {
return 'Function not found';
}
/*
here you can list functions that user can call
- don't allow users to run any function that's not on this list
*/
$allowedFunctions = [
'test',
];
if ( ! in_array($function, $allowedFunctions) ) {
return 'Function not allowed';
}
return view('directory.phpfilename', [
'function' => $function,
]);
})->where('function', '.*');
По вашему мнению, для запуска функции используйте
[ 111]или
{{ call_user_func($function) }}