PHP değişkenleri ile sınıf fonksiyonları içerir

2 Cevap php

Ben bir uzun sınıfta bir işlevi almak için bir değişken kullanmak çalışıyorum, bu benim yapmak istediğim şey ama ben, o iş için yardım için teşekkür alınamıyor.

class topclass {
    function mode() {
        $mode = 'function()';

        $class = new extendclass;
        $class->$mode;
    }
}

2 Cevap

$ Mode değişkeni parantez "()" dahil etmeyin.

class topclass {
    function mode() {
        $mode = 'functionx';

        $class = new extendclass;
        $class->$mode();
    }
}

Ayrıca örnek bir dizi başlığın ve işlevini adlandırma bir dize bir geri kullanabilirsiniz. Amaçlanan çağrı $ foo-> bar () ise, geri arama olacaktır:

$callback = array($foo, 'bar');

Düzenli fonksiyonları (bir yöntem) ve statik yöntemleri düz dizeleri olarak depolanır:

// Function bar
$callback = 'bar';
// Static method 'bar' in class Foo
$callback = 'Foo::bar';

Bu call_user_func veya call_user_func_array ile denir, geri arama işlevi geçirilecek ikinci sağlayan parametreleri:

// No parameters
call_user_func($callback);
// Parameters 'baz' and 'bat'
call_user_func_array($callback, array('baz', 'bat');

Bu gereksiz bir komplikasyondur gibi görünebilir, ancak birçok durumda, programlı bir işlev çağrısı inşa etmek, ya da size bazı işlevler, böyle (bir fonksiyona geçen olacaktır kaç tane parametre vaktinden bilmiyor olabilir muktedir isteyebilirsiniz array_merge ve sprintf parametreleri değişken sayıda izin gibi).