Доступ к константе класса и статическому методу из строки

У меня есть строка, содержащая имя класса, и я хочу получить константу и вызвать (статический) метод из этого класса.

<?php
$myclass = 'b'; // My class I wish to use

$x = new x($myclass); // Create an instance of x
$response = $x->runMethod(); // Call "runMethod" which calls my desired method

// This is my class I use to access the other classes
class x {
    private $myclass = NULL;

    public function __construct ( $myclass ) {
        if(is_string($myclass)) {
            // Assuming the input has a valid class name
            $this->myclass = $myclass;
        }
    }

    public function runMethod() {
        // Get the selected constant here
        print $this->myclass::CONSTANT;

        // Call the selected method here
        return $this->myclass::method('input string');
    }
}


// These are my class(es) I want to access
abstract class a {
    const CONSTANT = 'this is my constant';

    public static function method ( $str ) {
        return $str;
    }
}

class b extends a {
    const CONSTANT = 'this is my new constant';

    public static function method ( $str ) {
        return 'this is my method, and this is my string: '. $str;
    }
}
?>

Как я и ожидал (более или менее), использование $ variable :: CONSTANT или $ variable :: method (); не работает.

Прежде чем спросить, что я пробовал; Я столько всего перепробовал, что практически забыл.

Как лучше всего это сделать? Заранее спасибо.

9
задан Tim S. 21 February 2012 в 15:49
поделиться