Bir PHP işlevin adını tanımlarken zaman kullanıcıya bir değişken mümkün mü?

0 Cevap php

Sanırım için CMS kullanmak sitelerin çoğu kullanılmaz özgü işlevlerle ilgili birçok hangi fonksiyonları büyük bir numarası vardır, bizim şirket için bir CMS inşa ettik. Amacım, o zaman, (işlev çağrıldığında) ihtiyaç olduğunda yalnızca bir fonksiyonun komut eklemektir.

Şu anda ben sadece gerçek içeren normal olarak her bir fonksiyonu çağırarak fonksiyonun gerçek komut dosyası bulunduğu dosyayı gerektiren, ve daha sonra ikinci bir işlevi çağırmadan (işlev olarak aynı isim, ama bir çizgi önek ile) ediyorum fonksiyonunun komut dosyası. Örneğin:

function foo($a,$b) {
    require_once "funtions-foo.php";
    return _foo($a,$b);
}

Ancak bu, bana biraz tekrarlayan görünüyor. Ne arıyorum 'yakalamak' a fonksiyonları diyoruz ve adını 'dahil' fonksiyonları bir dizi ise, ben doğru dosyayı içerir ve işlevini arayacağım ya bir yoludur. Örneğin:

catch_function_call($function,$arg1,$arg2) {
    $array = array(
        'foo' => 'functions-foo.php',
        'bar' => 'functions-bar.php'
    );
    if($array[$function]) {
        require_once $array[$function];
        return $function($arg1,$arg2);
    }
}

Orada ben bir işlev çağrıldığında 'catch_function_call' işlevi bir şekilde yakalayabilirsiniz varsayarak yaşıyorum. Ben böyle bir işlevi bildiği gibi, ancak, benim ikinci düşünce sadece değişkenleri kullanarak 'dahil' fonksiyonların her tanımlamak oldu. Örneğin:

$array = array(
    'foo' => 'functions-foo.php',
    'bar' => 'functions-bar.php'
);
foreach($array as $function => $file) {
    function $function($arg1,$arg2) {
        $_function = "_".$function;
        require_once $file;
        return $_function($arg1,$arg2);

    }
}

Onu tanımlarken görünüşte bir işlevin adına bir değişken kullanamazsınız gibi tabii ki, bu bana bir hata verir. Herhangi bir bu almak için nasıl düşünce ya da ihtiyaç duyulduğunda sadece bir işlev dahil olmak üzere diğer çözümleri?

0 Cevap