count不是可以计算一个普通类中的成员属性吗?为什么老是的课程里会报错呐?为什么我count一个类的对象没有报错,但是不管成员属性是多少个,始终返回1呐?

来源:4-7 【Container容器类剖析】Countable巧用

梦里江山

2019-06-27

count不是可以计算一个普通类中的成员属性吗?为什么老是的课程里会报错呐?为什么我count一个类的对象没有报错,但是不管成员属性是多少个,始终返回1呐?

写回答

3回答

ADAll

2020-06-09

//img1.sycdn.imooc.com/szimg/5edfa65f09c2a23506140257.jpg

这是PHP源码上的说明,不是数组和未实现countable接口时始终返回1;网上说的可以计算普通类中的成员属性数量应该是很久的版本了。

0
1
ADAll
至于老师的课程里为什么会报错就不知道了,我这边测试时都是正常打印出1。
2020-06-09
共1条回复

梦里江山

提问者

2019-06-27

<?php
namespace app\index\controller;

use di\Car;

class Index
{
     public function buy()
    {
        $obj = new Car();
        var_dump($obj);
        echo count($obj);
    }
}

extend\di\Car :

<?php
namespace di;

class Car
{
    public $a = 1;
    public $b = 2;

    public function pay()
    {
        return 123;
    }

    public function count()
    {
        return 3;
    }
}

然后执行结果:

//img.mukewang.com/szimg/5d14d9f00001516a02450144.jpg

0
1
慕村5515322
为啥我的代码跟你一样,打印就报错了呢?tp5.1.41 LTS,php7.4.难道跟这两个有关么?
2021-07-09
共1条回复

singwa

2019-06-27

您好。不是计算普通类中的成员属性的。

您代码可以全部贴下。

0
2
singwa
回复
梦里江山
您PHP哪个版本?
2019-10-25
共2条回复

BAT资深工程师解析Tp5+Tp6底层源码

一门课掌握主流Tp5+最新Tp6框架底层,拥抱新潮流

686 学习 · 145 问题

查看课程