function mainFunction() {
functionA(5, "blah");
functionB("ok", "whatever");
}
如何编写函数GetFunctions
返回mainFunction
内的函数?是否有可能在PHP中使用方法获取语句?
如何用mainFunction
中给出的参数调用它们?
如何给他们打电话如下?
foreach (GetFunctions(mainFunction) as $function) {
print "Calling function $function: ";
call($functionA); // called with parameters(5, "blah")
}
在PHP 5.2.8工作
编辑:好的,这里有一个更完整的解释。我试图让它容易理解,但显然这不是一个好主意。
目标是在给定的静态方法内调用每个断言。我正在编写一个测试框架。每个断言都返回true或false。
我打电话的方法如下。
$methods = get_class_methods('LibraryTests');
foreach ($methods as $method) {
if (StartsWith($method, 'Test')) {
print "calling: " . $method . ": ";
call_user_func('LibraryTests::' . $method);
}
}
上面的代码调用类中的每个方法,但我想分别调用每个断言并跟踪结果(true/false)。 CallAssertion
应该调用每个断言(如TestUnit::AssertEqual(GetFormattedHour(5), "5 PM");
)。这是我正在问的方法。
这里是类:
class LibraryTests extends TestUnit {
static $success = 0;
static $failure = 0;
static $total = 0;
static function CallAssertion($assertion) {
self::$total += 1;
if ($assertion) { self::$success += 1; }
else { self::$failure += 1; }
}
static function TestGetFormattedHour() {
TestUnit::AssertEqual(GetFormattedHour(5), "5 PM");
TestUnit::AssertEqual(GetFormattedHour(16), "4 PM");
}
所以,问题是,如何写CallAssertion?
请不要这样做,有一定更好的方法做,你实际上是试图完成。 – Nicole 2012-03-16 20:02:44
你想达到什么目的?有一个非常(非常)很好的机会,有比这更好的方法。 – 2012-03-16 20:04:28
@NickC - 是的,这可能是一个坏主意,但你不知道情况,也许没有别的选择。也许他所做的是完全安全的。 – 2012-03-16 20:04:59