2013-03-19 121 views
1

我想通过继承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; 
} 
+0

你试过'var_dump(Yii :: app() - > user-> student)'? – user1477388 2013-03-19 20:05:35

+3

其私有财产。因此,您无法直接从对象外部访问它。可能有一种方法允许您检查访问级别。看看你的'CWebUser'类。 – datasage 2013-03-19 20:05:47

+0

你应该学习关于对象的基本知识,并且很容易找到它。没有这一点,你可能无法管理该网站。另外它看起来很奇怪,'CWebUser'有一些'_access'字段,因为'CWebUser'是核心Yii类,但是某些派生类可能有这样的字段。 – 2013-03-19 20:09:53

回答

1

'学生' 是$ _ACCESS阵列的一部分的部分。但$ _access是私有的,所以你不能直接访问它。

但是必须有一个方法(函数)来获取它! 看在CWebUser类应该有像

getStudent(); 

isStudent(); 

的方法,也可以是

$access = getAccess(); 
$access['student']; 

编辑: checkAccess 似乎是用来成才这样checkAccess('student');

+0

我在问题中添加了什么,我在CWebUser类中看到的与_access – rgbflawed 2013-03-19 20:16:03

+0

@ d.raev有关因为你猜测,这应该是一个评论而不是答案 – ernie 2013-03-19 20:47:00

+0

@ernie它看起来像一个简单的PHP OOP问题一开始,但你是对的。 – 2013-03-19 21:16:10

3

下应该告诉你是否用户有'学生'访问:

$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