从一个PHP对象获取信息
问题描述:
我想通过继承Yii框架网站的方式。以前很少有面向对象的知识。从一个PHP对象获取信息
我打印了一些用户信息,看看有没有这样的...
print_r(Yii::app()->user);
,这就是打印出这...
CWebUser Object (
[allowAutoLogin] => 1
[guestName] => Guest
[loginUrl] => Array
(
[0] => /site/login
)
[identityCookie] =>
[authTimeout] => 7200
[autoRenewCookie] =>
[autoUpdateFlash] => 1
[loginRequiredAjaxResponse] =>
[_keyPrefix:CWebUser:private] => 7c6285462394c9a141b5d66dce54e8f2
[_access:CWebUser:private] => Array
(
[Admin] =>
[Judge] =>
[Student] => 1
)
[behaviors] => Array
(
)
[_initialized:CApplicationComponent:private] => 1
[_e:CComponent:private] =>
[_m:CComponent:private] =>
)
我试图脱身该用户是学生的信息。我看到了!在那!
[Student] => 1
但是我怎样才能得到这些信息呢?
UPDATE:
这里的CWebUser的出现有事情做与_ACCESS
private $_access=array();
public function checkAccess($operation,$params=array(),$allowCaching=true)
{
if($allowCaching && $params===array() && isset($this->_access[$operation]))
return $this->_access[$operation];
$access=Yii::app()->getAuthManager()->checkAccess($operation,$this->getId(),$params);
if($allowCaching && $params===array())
$this->_access[$operation]=$access;
return $access;
}
答
'学生' 是$ _ACCESS阵列的一部分的部分。但$ _access是私有的,所以你不能直接访问它。
但是必须有一个方法(函数)来获取它! 看在CWebUser
类应该有像
getStudent();
isStudent();
的方法,也可以是
$access = getAccess();
$access['student'];
编辑: checkAccess 似乎是用来成才这样checkAccess('student');
答
下应该告诉你是否用户有'学生'访问:
$isStudent = Yii::app()->user->checkAccess('Student') == 1;
+0
为了完整起见,以下是[checkAccess()]的文档链接(http://www.yiiframework.com/doc/api/1.1/CWebUser#checkAccess-detail) – ernie 2013-03-19 20:46:02
你试过'var_dump(Yii :: app() - > user-> student)'? – user1477388 2013-03-19 20:05:35
其私有财产。因此,您无法直接从对象外部访问它。可能有一种方法允许您检查访问级别。看看你的'CWebUser'类。 – datasage 2013-03-19 20:05:47
你应该学习关于对象的基本知识,并且很容易找到它。没有这一点,你可能无法管理该网站。另外它看起来很奇怪,'CWebUser'有一些'_access'字段,因为'CWebUser'是核心Yii类,但是某些派生类可能有这样的字段。 – 2013-03-19 20:09:53