这个问题已经在这里有了答案:
已关闭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/