Есть два способа сделать это. Замыкания / анонимные функции возможны из PHP 5.3, и старый способ - использовать create_function()
- что довольно глупо.
Однако в вашем случае вы тоже не хотите. Нет никакой пользы в создании или воссоздании функции. Он вам нужен только один раз, так как он не зависит от состояния инициализации. Идиома, которую вы должны использовать, называется «dererred Definition» и возможна в PHP с:
if (!function_exists("prc")) {
function prc($param) {
...
}
}
Однако вы должны назвать его с родительской функцией в качестве префикса (например, prepare__prc
), чтобы избежать конфликтов и сигнализировать о его внутреннем использовании.
Да, и между прочим, это может быть также упрощено сжато в:
$param = join("+", array_map("urlencode", split(" ", trim($param))));