PHP parametre olarak işlev geçmek

4 Cevap php

PHP parametre olarak bir işlev geçmek mümkün olup olmadığını merak ettik; Ben JS programlama yaparken gibi bir şey istiyorum:

object.exampleMethod(function(){
    // some stuff to execute
});

İstediğim yerde exampleMethod bu işlevini yürütmek için. Bu PHP mümkün mü?

4 Cevap

PHP 5.3.0 veya daha yüksek kullanarak eğer bu mümkün.

Sorularınızı Anonymous Functions bakın.

Sizin durumda, exampleMethod Böyle tanımlarsınız:

function exampleMethod($anonFunc) {
    //execute anonymous function
    $anonFunc();
}

Ayrıca create_function bir değişken olarak bir işlev oluşturmak ve çevresinde geçmek için kullanabilirsiniz. Ama, ben anonymous functions daha iyi hissi gibi. Zombat gidin.

Sadece başkalarına eklemek için, bir işlev adı iletebilirsiniz:

function someFunc($a)
{
    echo $a;
}

function callFunc($name)
{
    $name('funky!');
}

callFunc('someFunc');

Bu PHP4'te çalışacaktır.

Sadece bu gibi kod:

function example($anon) {
  $anon();
}

example(function(){
  // some codes here
});

Eğer (Laravel Aydınlatmak esinlenerek) böyle bir şey icat eğer harika olurdu:

Object::method("param_1", function($param){
  $param->something();
});