首页 > 后端开发 > php教程 > yii2 - php什么情况下使用函数的静态变量?

yii2 - php什么情况下使用函数的静态变量?

WBOY
发布: 2016-06-06 20:14:48
原创
1135 人浏览过

假设获取网站的配置

<code>private function _getSettings()
{
    //static $_settings;
    $cache=Yii::$app->cache;
    $settings=$cache->get('settings');
    if(!$settings){
        //获取并设置setting
    }
    return $settings;
}</code>
登录后复制
登录后复制

这种情况下,是否应该设置一个静态变量?什么情况下最适合使用静态变量呢?

回复内容:

假设获取网站的配置

<code>private function _getSettings()
{
    //static $_settings;
    $cache=Yii::$app->cache;
    $settings=$cache->get('settings');
    if(!$settings){
        //获取并设置setting
    }
    return $settings;
}</code>
登录后复制
登录后复制

这种情况下,是否应该设置一个静态变量?什么情况下最适合使用静态变量呢?

<code>class .... {

    // 如果参数不多
    // 或者写到别的文件里
    // 其他地方共用也好用,不容易打错
    const SETTING_SOME = 'somePerporty';

    // 参数多其实应该用数据库了

    private function _getSettings()
    {
        //static $_settings;
        $cache=Yii::$app->cache;
        $settings=$cache->get({CLASSNAME}::SETTING_SOME);
        if(!$settings){
            //获取并设置setting
        }
        return $settings;
    }

}

</code>
登录后复制

个人觉得你这里不需要使用静态变量,
如果在函数里使用了static就属于静态局部变量,他是指每次执行这函数时那个值还在,函数外部是不能使用的。
你这里每次执行需要去更新这个Cache,所以没必要保留这个值。

注意静态变量要和全局变量区分开来。

<code>static $s_var;
global $g_var;
</code>
登录后复制
相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板