UserFunc для создания алиасов для любых функций

Varg

Guest
UserFunc для создания алиасов для любых функций

День добрый, господа.
Такая вот задача.

В итоге должно выйти:

alias("trim","my_trim");

$test = my_trim(" here it is ");

echo $test;

Ессно без спэйсов уже.

Как написать alias()?
Что-то я никак не придумаю, да и может уже в ядре ПХП есть уже, но что-то я порывшись там не обнаружил ничего похожего.
 

KR

alive in new life
хм..
честно говоря не совсем понятно зачем тебе это нужно.
 

KR

alive in new life
хотя в крайнем случае можно сделать так

function my_trim($val){
return trim($val);
}
 

Varg

Guest
Зачем мне это надо можно не спрашивать. Надо и вот так :)

И вообще. Я же не спрашиваю "как вы считаете, нужно ли мне такая функция?"
 

Varg

Guest
Подозреваю, что придётся через eval() собирать, только как быть с аргументами?
 

KR

alive in new life
Автор оригинала: Varg
Зачем мне это надо можно не спрашивать. Надо и вот так :)

И вообще. Я же не спрашиваю "как вы считаете, нужно ли мне такая функция?"
Во-первых, я не спрашивал, а высказал свое удивление.
А во-вторых, я тебе дал конкретный ответ.
 

Varg

Guest
Ты дал мне ответ только если я хочу сделать алиас для одного трима.

А мне нужно для _любой_ существующей функции, ибо я не знаю наперёд, какую функцию придётся алиасить.
 

young

Новичок
Попробуй по такой методике
PHP:
function alias($old, $new) {
  eval('
  function '.$new.'() {
    return '.$old.'('.$args.');
  }
  ');
}
$args тебе надо формировать внутри кода новой функции
Внутри кода
 

Varg

Guest
young, это уже лучше :)
Только вот $args в этом примере будет содержать $old и $new как я понимаю. Что в общем будет нехорошо.

Может

....
return ' . $old . '($args); }
...

?
 

young

Новичок
Нет, $args тебе надо строить самому типа
PHP:
$args_old = func_get_args();
$args = "";
foreach ($args_old as $arg) {
  switch (gettype($arg)) {
    case "stinng":...
    default:...
 }
}
Я это вижу как-то так
 

Varg

Guest
По предварительным проверка это вроде как рабочий вариант, если кого-нить случаем заинтересует.

PHP:
function Alias($FuncName,$UserFuncName) {
	if (!function_exists($UserFuncName)) {
		eval('function '.$UserFuncName.'() {$args = func_get_args(); $args=implode(",",$args);return '.$FuncName.'($args);}');
	} else {
		// Generate Error Here.
	}
}
Alias ("trim","my_trim");
echo "-" . my_trim(" test ") . "-";
exit;
Хм.... забэкслэшил все мои доллары зачем-то....
В общем надо обрезать все "\" перед "$"
:)
 

Demiurg

Guest
create_function - спациально для этого предназначена.
 

young

Новичок
create_function - насколько я понял из мануала, ей нельзя указать как назвать результирующую функцию, а в данном случае это важно
 

Varg

Guest
И вообще, как её присобачить к данной проблеме?
И оно помоему не для этих целей.
И my_trim() выглядит понятнее чем $my_trim()

Если я не прав, готов всячески извиниться :)
 

Varg

Guest
Интересная логика :)
Оказывается нынче eval,args и create_function'ы являются темой для новичков. Забавно.
 

trent

Developer
если об этом написанно в мане, то это является темой для новичков..
 
Сверху