0

我有一个奇怪的错误,我希望这里有人可以帮助我,或者至少解释它为什么会发生。

我正在使用 __call 方法;

public function __call($method, $params) {
    var_dump($params);
    echo '<br/><br/>';
}

我用每个例子来称呼它:

$params = array('index' => 0, 'apikey' => 'aasdf');
$client->notAFunction($params)

这是一个不存在的方法,因此它将进入 __call 与 $method = notAFunction 和 $params 中的我的数组。

我预期的 __call 输出将是;

array(2) { ["index"]=> int(0) ["apikey"]=> string(5) "aasdf" } 

但是,我得到的输出是;

array(1) { [0]=> array(2) { ["index"]=> int(0) ["apikey"]=> string(5) "aasdf" } } 

现在,我知道使用 $params[0] 很容易“解决”这个问题,所以我不会寻找任何类似的答案。我在找;

  1. 为什么会这样?
  2. 我可以指望这总是发生吗?
  3. 我能做些什么让 __call 接收原始数组吗?
4

1 回答 1

4

这是预期的功能。$params方法中的参数__call接收方法得到的参数数组。

有关说明,请参见http://php.net/manual/en/language.oop5.overloading.php#language.oop5.overloading.methods

于 2013-06-10T08:59:33.787 回答