这个问题已经在这里有了答案:




已关闭8年。






在PHP 5中,可以使用魔术方法,重载某些类等。在C++中,只要参数类型不同,就可以实现存在的函数。有没有办法在PHP中做到这一点?

我想做的一个例子是:

class a {
    function a() {
        $this->list = array("1", "2");
    }
}

$blah = new a();

count($blah);

我想等等返回2。IE计算类中特定数组的值。因此,在C++中,我执行此操作的方式可能如下所示:
int count(a varName) { return count(varName->list); }

基本上,我正在尝试简化大型应用程序的数据调用,因此我可以调用此操作:
count($object);

而不是
count($object->list);

该列表将可能是对象列表,因此,取决于使用方式,如果有人必须以当前方式进行操作,则该声明可能真是令人讨厌:
count($object->list[0]->list[0]->list);

因此,我可以做些类似的事情:
function count(a $object) {
    count($object->list);
}

我知道PHP的count接受混合的var,所以我不知道我是否可以覆盖单个类型。

最佳答案

听起来您想实现 Countable 接口(interface):

class a implements Countable {
    public function __construct() {
        $this->list = array("1", "2");
    }

    public function count() {
      return count($this->list);
    }
}

$blah = new a();

echo count($blah); // 2

关于php - 在某些对象上调用时,重载count()的行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8510061/

10-11 23:15
查看更多