2010-08-13 56 views

回答

1

還有Reflection API。例如:

<?php 
$rc = new ReflectionClass('A'); 
// question 1) create an instance of A 
$someArgs = array(1,2,3); 
$obj = $rc->newInstanceArgs($someArgs); 

// question 2) invoke static method of class A 
$rm = $rc->getMethod('foo'); 
if (!$rm->isStatic()) { 
    echo 'not a static method'; 
} 
else { 
    $rm->invokeArgs(null, $someArgs); 
} 

class A { 
    public function __construct($a, $b, $c) { echo "__construct($a,$b,$c)\n";} 
    public static function foo($a, $b, $c) { echo "foo($a,$b,$c)\n";} 
} 
+0

哦,我沒想到這個被接受。請記住,如果IMO符合你的需求,那麼'new $ className()'沒有任何問題。 ReflectionClass可以讓你做更多的事情,但它也增加了一些複雜性。 – VolkerK 2010-08-13 10:48:18

+0

我接受你的答案,因爲我的編輯器$ className :: method()被標記爲錯誤... – liysd 2010-08-13 11:51:35

4
$obj = new $className(); 

$var = $className::method(); 
3

的靜態方法1: $ obj = new $ className

2: $ className :: someMethod($ parameter)

相關問題