How should I access this variable ?
class BaseController
{
public function __construct()
{
$view = new Views;
$view->layout = 'master';
}
}
So I want to access $view on my other controller
class HomeController extends BaseController
{
public function showForm()
{
// Access $view
}
}
This way you cannot. $view
is a local variable in your function. But you can make it a protected
property so it is not accessible from the outside but can be inherited:
Members declared protected can be accessed only within the class itself and by inherited and parent classes.
So your class would be like:
class BaseController
{
protected $view;
public function __construct()
{
$this->view = new Views;
$this->view->layout = 'master';
}
}
and then access it:
class HomeController extends BaseController
{
public function showForm()
{
echo $this->view->layout;
}
}
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;
}
}
class BaseController
{
public function __construct()
{
$this->view = new Views;
$this->view->layout = 'master';
}
}
class HomeController extends BaseController
{
public function showForm()
{
echo $this->view->layout;
}
}
Define $view with protected in class and avoid this code because you increse the dependency
class BaseController{
public function __construct(){
$view = new Views;
$view->layout = 'master';
}
}
change you code to:
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;
}
}