Biz php bir işlev diğer ad miyim?

9 Cevap php

PHP farklı bir isimde bir fonksiyon diğer ad mümkün mü? nasıl evet eğer?

Bu fonksiyon uyku var varsayalım ();

Beklemek adında bir takma ad () yapmak için herhangi bir hızlı yolu yoktur;

Bu kodu yazmadan

function wait ($seconds)  {
    sleep($seconds);
}

9 Cevap

PHP'yi 5.3 varsa lambdas also bakabilirsiniz

$wait = function($v) { return sleep($v); };

evet, function wait ($seconds) { sleep($seconds); } gitmek için yoludur. Eğer beklemek değiştirmek zorunda endişe Ama eğer () sen () o zaman yerine aşağıdakileri yapmak isteyebilirsiniz uyku için parametrelerin sayısını değiştirmek gerekir:

function wait() { 
  return call_user_func_array("sleep", func_get_args());
}

Hayır, ama bunu yapabilirsiniz:

$wait = 'sleep';
$wait($seconds);

Ayrıca argümanlar-sayı-sorunlarını gidermek Bu şekilde

Hayır, PHP bunu yapmak için herhangi bir hızlı yolu yoktur. Dil sarıcı işlevi yazmadan takma işlevlerine yeteneği sunmuyor.

Eğer gerçekten gerçekten gerçekten bu ihtiyaç varsa, write a PHP extension sizin için bunu alırdım. Ancak, uzatma derlemek ve bize uygulamanızın taşınabilirliği büyük ölçüde azaltılmış olacaktır demektir bu uzantıyı, PHP yapılandırmanız gerekir ediyorum uzantısı kullanmak.

PHP'nin "eval" komutu (millet bir sürü ile gerçek bir sorun var, ama yok ki) kullanımı ile ilgili değilseniz, o zaman böyle bir şey kullanabilirsiniz:

function func_alias($target, $original) {
    eval("function $target() { \$args = func_get_args(); return call_user_func_array('$original', \$args); }");
}

Bazı simple testlerinde kullanılan ve oldukça iyi iş gibi görünüyordu. İşte bir örnek:

function hello($recipient) {
    echo "Hello, $recipient\n";
}

function helloMars() {
    hello('Mars');
}

func_alias('greeting', 'hello');
func_alias('greetingMars', 'helloMars');

greeting('World');
greetingMars();

Eğer runkit uzantısını kullanabilirsiniz

http://us.php.net/manual/en/function.runkit-function-copy.php

Örneğin Javascript gibi bir wait = sleep orada öylesine hayır, fonksiyonlar 1. sınıf vatandaş değildir. Siz temelde size söz koymak ne yapmak zorunda:

function wait ($seconds) { sleep($seconds); }

hayır. yazdığın şekilde yapmak için en iyi yoldur.

En azından PHP v5.3 önce herhangi bir şey için, ve o da bunu yapmak için özellikle iyi bir fikir değil - Hayır, bunu yapmak için herhangi bir hızlı yolu. Bu sadece işini zorlaştırır.