2013-12-18 148 views
2

我应该如何访问这个变量?访问父变量

class BaseController 
{ 
    public function __construct() 
    { 
     $view = new Views; 
     $view->layout = 'master'; 
    } 
} 

所以我想我的其他控制器

class HomeController extends BaseController 
{ 
    public function showForm() 
    { 
     // Access $view 
    } 
} 

回答

2

这样你就不能访问$视图。 $view是你函数中的局部变量。但是,你可以把它protected property,所以它不是从外面访问,但可以继承:

议员申报保护只能在类 本身和继承和父类访问。

所以,你的类将是这样的:

class BaseController 
{ 
    protected $view; 

    public function __construct() 
    { 
     $this->view = new Views; 
     $this->view->layout = 'master'; 
    } 
} 

,然后访问:

class HomeController extends BaseController 
{ 
    public function showForm() 
    { 
     echo $this->view->layout; 
    } 
} 
1
class BaseController { 
    protected $view = null; 
    public function __construct() { 
     $view = new Views; 
     $view->layout = 'master'; 
     $this->view = $view; 
    } 
} 
class HomeController extends BaseController { 
    public function showForm() { 
     // Access $view 
     echo parent::$view; 
    } 
} 
1
class BaseController 
{ 
    public function __construct() 
    { 
     $this->view   = new Views; 
     $this->view->layout = 'master'; 
    } 
} 

class HomeController extends BaseController 
{ 
    public function showForm() 
    { 
     echo $this->view->layout; 
    } 
} 
1

定义$视图在课堂上的保护,避免这个代码,因为你增加了依赖关系

class BaseController{ 
     public function __construct(){ 
     $view = new Views; 
     $view->layout = 'master'; 
     } 
    } 

改变你的代码:

class BaseController{ 
     protected $view; 
     public function __construct($view = null){ 
      $this->view = $view; 
      $this->view->layout = 'master'; 
     } 
} 



class HomeController extends BaseController{ 
    public function showForm(){ 
    echo parent::$view; 
    } 
}