PHP 4 anonim fonksiyonlar (lambdas kapanışları)

0 Cevap php

Fonksiyonları dönmek fonksiyonlarını uygulamak için PHP 4 bir hile var mı? Ben aşağıdaki kod işe beklenmektedir:

function xxx($a) {
  return function($b) {
    print "a=$a, b=$b \n";
  }
}

$f1 = xxx(1);
$f1(2);

Ne yazık ki, PHP 4 hiç şans yok. Muhtemelen PHP 5 çalışır, ama PHP 4 ile sınırlıdır.

Ben OO ile çözüm için çalıştı, ancak yine (sınıf bildirimleri iç içe olabilir) başarısız oldu:

class Closure {
  function run($a) {
    print "raise: NotImplementedException, instead: $a\n";
  }
}

class WantCheckNesting extends Closure {
  function run($a, $b) {
    class Nested extends Closure {
      function run($c) {
        print "a=$a, b=$b, c=$c\n";
      }
    }
    $o = new Nested();
    return $o;
  }
}

$d = new WantCheckNesting();
$e = $d->run(2, 3);
$e->run(4);

Orada bir işlev "create_function", ama çok sınırlıdır: vücudun bir dize olmalıdır.

Diğer fikirler?

0 Cevap