我有两个班级:
class A {
function __construct() {
$B = new B;
$ArgumentReflection = new ReflectionMethod($B, "b");
$ArgumentArray = array();
foreach($ArgumentReflection->getParameters() as $ArgumentName) {
if(isset($Request[$ArgumentName->name])) {
$ArgumentArray[$ArgumentName->name] = $_REQUEST[$ArgumentName->name];
}
}
}
}
class B {
function b($one, $two, $three) {
...
}
}
这是一个简化的例子。我的想法是,我可能想要在多个方法中定义多个函数,并使用不同数量的参数调用它们。我需要找到一个如何调用方法并传递它的解决方案,例如,需要$_REQUEST
个变量。例如,如果我在B类中有三个函数,如下所示:
class B {
function a($seven, $six) {
}
function b($one, $two, $three) {
}
function c($zebra, $cat, $monkey) {
}
}
如果我将"a"
传递给ReflectionMethod,我希望调用函数a
,如下所示:$B->a($_REQUEST["seven"], $_REQUEST["six"])
。
如果我通过"b"
,那么就像这样:$B->b($_REQUEST["one"], $_REQUEST["two"], $_REQUEST["three"]);
等等。
很明显,php 5.6中提供的...
令牌不是解决方案,
任何提示?感谢名单
答案 0 :(得分:0)
好的,因为在PHP中的反思中没有记录太多,我发布了自己的答案,所有的答案都是Jack,指出我正确的方向。
ReflectionMethod继承invokeArgs函数,通过它传递一组参数。所以,最后做了我的想法,我只是在发布的代码之后添加了一行,现在它看起来像这样:
class A {
function __construct() {
$B = new B;
$ArgumentReflection = new ReflectionMethod($B, "b");
$ArgumentArray = array();
foreach($ArgumentReflection->getParameters() as $ArgumentName) {
if(isset($Request[$ArgumentName->name])) {
$ArgumentArray[$ArgumentName->name] = $_REQUEST[$ArgumentName->name];
}
}
$ArgumentReflection->invokeArgs($B, $ArgumentArray);
}
}
class B {
function b($one, $two, $three) {
...
}
}
全部完成。祝大家好运。