PHP __call调整数组

时间:2013-06-10 08:56:55

标签: php

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

我正在使用__call方法;

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

我用每个例子来称呼它:

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

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

__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收到原始数组吗?

1 个答案:

答案 0 :(得分:4)

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

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