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?
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:
It doesn't really matter. If you call user->isGuest
the method user->getIsGuest()
gets internally called. It's just kind of an alias.