dongliu8559 2014-09-11 13:31
浏览 425
已采纳

Yii:使用getIsGuest()或isGuest

So far, when I wanted to know if the user is logged in or not I used Yii::app()->user->isGuest.

However, there is a method called getIsGuest(), which returns the isGuest variable.

if (!Yii::app()->user->getIsGuest())

My question is, should I use getIsGuest() instead? Using getIsGuest() is the proper way? Or it does not matter and they both correct ways?

  • 写回答

2条回答 默认 最新

  • dongyin2885 2014-09-11 14:38
    关注

    Actually, there is no difference between $class->getAttribute() and $class->attribute. But this is good to know what is going on in behind.

    Yii widely uses php magic methods. In this case, it uses __set and __get magic methods to implement getters and setters. As php's official documents defines __get() :

    __get() is utilized for reading data from inaccessible properties.

    Consider an example:

    class Test{
        private $attribute;
        private $attribute2;
        private $attribute3;
        public function getAttribute(){
            return $this->attribute;
        }
        public function getAttribute2(){
            return $this->attribute2;
        }
        public function getAttribute3(){
            return $this->attribute3;
        }
    }
    

    If you want to get the attribute property value you must call getAttribute() method and you can not get attribute like below (since you have no access to attribute property):

    $test=new Test();
    echo $test->attribute;    
    

    But with __get magic method it can be implemented as:

    class Test{
        private $attribute;
        private $attribute2;
        private $attribute3;
        //__GET MAGIC METHOD
        public function __get($name)
        {
            $getter='get'.$name;
            if(method_exists($this,$getter))
            return $this->$getter();
        }
    
        public function getAttribute(){
            return $this->attribute;
        }
        public function getAttribute2(){
            return $this->attribute2;
        }
        public function getAttribute3(){
            return $this->attribute3;
        }
    }
    

    Now, you are able to get attribute value like below:

    $test=new Test();
    echo $test->attribute;
    

    To find more about php's magic methods take a look at the php's official document:

    Magic Methods

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法