2014-09-24 65 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