2013-03-19 170 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