Statik bir yöntem çağırırken PHP değişkeni kullanarak

5 Cevap php

I have three classes that all have a static function called 'create'. I would like to call the appropriate function dynamically based on the output from a form, but am having a little trouble with the syntax. Is there anyway to perform this?

$class = $_POST['class'];
$class::create();

Herhangi bir tavsiye büyük mutluluk duyacağız.

Teşekkürler.

5 Cevap

call_user_func kullanın

İşte php.net bir örnek

class myclass {
    static function say_hello()
    {
        echo "Hello!\n";
    }
}

$classname = "myclass";

call_user_func(array($classname, 'say_hello'));
call_user_func($classname .'::say_hello'); // As of 5.2.3

$myobject = new myclass();

call_user_func(array($myobject, 'say_hello'));

Ne sizin gibi eserleri var PHP 5.3.

ps. Bunu ne olacağını emin olamaz beri $ _POST ['class'] temizlik düşünmelisiniz.

Ne istediğini, yanlış anlama ama bu nasıl olabilir?

switch ($_POST['ClassType']) {
    case "Class1":
    	$class1::create();
    	break;
    case "Class2":
    	$class2::create();
    	break;
    // etc.
}

Bu işe yaramazsa, sen (dikkatli olun, tehlikeli.) EVAL içine bakmalı

Ben bu sadece PHP 5.3.0 yapılabilir inanıyorum. Giriş this page ve $classname::$my_static örnek görmek için arayın.