2014-09-24 39 views
0

我有一個mvc腳本。如何設置和從子類獲取父變量 - mvc

$load = new $controller($modelName, $action); 
if (method_exists($load, $action)){ 
    $load->{$action}($query); 
} 

和我創建擴展類:

class testController extends Controller 
{ 
    public function __construct($model, $action) 
    { 
     parent::__construct($model, $action); 
     $this->_setModel($model); 
    } 
} 

這裏是我的問題,我想設置一個變量的控制,並能得到和擴展類改變它。 例如:

class Controller 
{ 
var $myvar="defaultCaption"; 
} 

,並通過擴展類改變,例如,通過一個擴展類改變它,然後從另一個擴展類獲得新的價值。但它只是加載默認值。

我想要的東西的工作原理是這樣的:

class Controller 
{ 
    protected $myvar="defaultCaption"; 

    public function __construct() 
    { 
    } 
} 

class myController extends Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 
} 

class myController2 extends Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 
} 

$mc = new myController; 
$mc->myvar= "XXX"; 

$mc2= new myController2; 
echo ($mc2->myvar);//this should be XXX 

任何幫助,將不勝感激。

回答

0

這很容易,只需訪問從子類的東西你的父類項目不應該是private,否則它會工作:

class Controller 
{ 
    //protected $myvar="defaultCaption"; 
    public $myvar="defaultCaption"; // to access this from outside the class 

    public function __construct() 
    { 
     echo $this->myvar; 
    } 
} 

class myController extends Controller 
{ 
    public function __construct() 
    { 
     $this->myvar = 'myCaption'; 

     parent::__construct(); 
    } 
} 

$mc = new myController; // outputs: myCaption 
+0

不,我的問題是,我想類之間共享一些數據,但我不喜歡使用全局變量。 – poostchi 2014-09-25 10:19:38

+0

這只是一個例子,你如何訪問父類變量,它不是全局變量,它的類'屬性 – 2014-09-25 10:20:52

+0

你可以使用'$ this-> myvar ='myCaption';'子類中的任何地方 – 2014-09-25 10:21:40