Php 使用计数对可数对象进行计数
列出PHP文档中的链接,第一个示例是如何工作的Php 使用计数对可数对象进行计数,php,Php,列出PHP文档中的链接,第一个示例是如何工作的 <?php class myCounter implements Countable { private $count = 0; public function count() { return ++$this->count; } } $counter = new myCounter; for($i=0; $i<10; ++$i) { echo "I have been coun
<?php
class myCounter implements Countable {
private $count = 0;
public function count() {
return ++$this->count;
}
}
$counter = new myCounter;
for($i=0; $i<10; ++$i) {
echo "I have been count()ed " . count($counter) . " times\n";
}
这只是一个基本示例,每次运行count时都会增加一个变量。您可以很容易地用以下内容将其替换掉:
class Repository implements Countable {
private $data = [];
public function count() {
return count($this->data);
}
}
这是另一个存储库示例,其中包含$data
属性中的记录。使用count($instanceOfRepository)
将返回$data
count
函数不会访问类中的private
字段$count
。它调用Countable
接口中描述的public
方法count
这个特定的例子有点奇怪,因为它实际上计算了调用count
函数的次数,这可能会让读者感到困惑。PHPcount
函数没有访问私有$count
。实际发生的情况是:
count
(PHP函数)使用参数$counter
该函数测试$counter
是否为数组,而不是数组。它检查$counter
是否实现了接口Countable
因为$counter
实现了接口Countable
,所以它有一个公共方法count
(与PHP函数分离)
PHP调用$counter->count()
,然后返回结果
正如您所看到的,这里没有提到私有的$count
。publiccount
方法可以执行常规类方法可以执行的任何操作,包括访问实例的私有变量。考虑这一点:
class myCounter implements Countable {
public function count() {
return 42;
}
}
$counter = new myCounter;
echo "I have " . count($counter) . " items.";
这将导致:
I have 42 items.
php函数count(arg)
接受数组或可数对象作为参数。Countable是实现Countable接口的类的实例:这意味着它必须有一个返回整数的count
方法。如何实施,取决于你自己。您可以使用示例中的变量保持计数,也可以返回随机数,或者任何您想要的。为了回答您的问题,count()函数不访问私有字段$count,但它调用类实现的count方法 count()
函数返回次数。所以不完全是这样。当你说“函数<代码>计数
”时,你能澄清你指的是哪个函数吗?你是指myCounter
中包含的函数,还是指?一个有权访问$count
,另一个没有。该方法是在对实现可数的对象使用count()
函数时执行的。我想您想在自己的链接中执行$counter->count()
,对吧:“在实现可数的对象上使用count()函数时执行此方法。”。您只需调用$counter->count()
。