Dinamik PHP bir yöntemini çağırmak nasıl?

2 Cevap

Örnek: Ben gibi bir değişken var

$method = "doSomething";

Ben bir $ a nonstatic, genel bir yöntem doSomething bilir myObject () olduğunu varsayalım

Ben o zaman sadece bu yaparak bu yöntemi diyebiliriz?

$myObject->$method();

Ya da başka bir / daha iyi bir yolu var mı?

2 Cevap

Evet, bunu yapabilirsiniz:

$myObject->$method();

Bu {[(0)] olarak adlandırılır}


And here is the code that proves it :

class ClassA {
    public function method() {
        echo 'glop';
    }
}

$a = new ClassA();
$methodName = 'method';
$a->$methodName();

Bu çıktıyı alır:

glop

Hangi yöntemi denir demektir ;-)


Another way would be to use call_user_func or call_user_func_array :

call_user_func(array($a, $methodName));

İşte, bu gerekmez - ama kullanmak zorunda kalacak senin yöntem static ise, en azından PHP <= 5.2 için

Evet, ancak bu ilk yöntem, önce onu çağıran var sağlanması önerilir:

if (method_exists(array($myObject, $method)) {
    $myObject->$method();
}