工作生活

关于调用model中的方法讨论

2019-07-04  本文已影响0人  句小芒

之前在阅读代码的时候发现代码中大量出现类似于ModelName::instance()方法。所以特意去查看了一下该方法的实现。代码如下:

/**
     * Returns static class instance, which can be used to obtain meta information.
     * @param bool $refresh whether to re-create static instance even, if it is already cached.
     * @return static class instance.
     */
    public static function instance($refresh = false)
    {
        $className = get_called_class();
        if ($refresh || !isset(self::$_instances[ $className ])) {
            self::$_instances[ $className ] = Yii::createObject($className);
        }
        return self::$_instances[ $className ];
    }

我们平时在调用model类中的方法时,可能会采用以下方式:

$model = new ModelName();
$model ->funName();

那么使用instance有什么优势呢?
看一下官方对该方法的解释:返回静态类实例,可用于获取meta信息。就是通过单例模式来返回类实例。从而去调用类里面的方法。单例模式的作用就不多说了(一个类只有一个实例)。

上一篇下一篇

猜你喜欢

热点阅读