为什么在实例化时调用PHP类方法?

时间:2016-09-17 20:11:12

标签: php class

需要一些帮助来了解我的PHP代码中发生了什么。

的index.php

include("cache.php");
$cache = new Cache();

cache.php

class Cache {
    private static $URL_CACHE;

    public function cache($url, $entityId) {
        echo '<br>caching '.$url.' as '.$entityId;
    }

当我请求index.php时,我得到&#39;缓存为&#39;显示,这是一个惊喜。我从未打电话给$cache->cache('', '');

调用方法的是什么?

根据Blake的回答,由于方法名称(稍微)匹配类名,因此在实例化时调用它。对于Java开发人员来说,这肯定是一个惊喜。

1 个答案:

答案 0 :(得分:1)

这是使用已弃用的PHP功能来充当__contruct()方法。在旧版本的PHP中(在7中删除)如果您有一个名为Foo的类和一个名为foo()的函数,那么您将其称为构造函数。

简而言之,您可以通过实例化该类来调用它。如果您将cache()方法更改为makeCache(),我打赌它会消失。

另一个解决方案是拥有一个空的构造函数,感谢JimL。

public function __construct() {

}