2013-04-27 280 views
0

是否可以將變量的訪問權限從public更改爲另一個類中的protected。 在我看來,根據我的小知識,這是不可能的,但我希望有人在PHP的專家可以幫助我發現是真的嗎?PHP:更改變量範圍

class A 
{ 
    var $myvar; 
} 

Class B 
{ 
    function __Construct() 
    { 
     $A = new A(); 
     // Can I change scope of $A->myvar to protected? 
    } 
} 

回答

1

不是最好的方式,也許,但它會做你的需要:

class A 
{ 
    protected $myvar; 
    protected $isMyVarPublic; 

    function __construct($isMyVarPublic = true) 
    { 
     $this->isMyVarPublic = $isMyVarPublic; 
    } 

    function getMyVar() 
    { 
     if (!$this->isMyVarPublic) { 
      throw new Exception("myvar variable is not gettable"); 
     } 
     return $this->myvar; 
    } 

    function setMyVar($val) 
    { 
     if (!$this->isMyVarPublic) { 
      throw new Exception("myvar variable is not settable"); 
     } 
     $this->myvar = $val; 
    } 
} 

class B 
{ 
    function __construct() 
    { 
     $A = new A(false); 
    } 
} 
+0

太謝謝你了!是否可以直接從'B類'改變範圍?我想隱藏'A類'的所有更改。 – 2013-04-27 03:26:59

+0

不是我知道的,沒有擴展課程。 「隱藏A級的所有更改」是什麼意思? – 2013-04-27 03:31:20

+0

我的意思是說,我需要隱藏大部分關於A類變量的過程。相反,我在B類中完成了我的工作,並給出了使用A類最後一個結果的人。謝謝,我終於接受這是不可能的要求。 – 2013-04-27 08:18:20