我有一个后端控制器和其他扩展后端控制器的控制器,我试图找出如何在后端控制器中设置变量并在扩展它的控制器中使用它。
如果我在后端控制器中设置一个配置值变量,子控制器如何访问它。
编辑:
http://philsturgeon.co.uk/blog/2010/02/CodeIgniter-Base-Classes-Keeping-it-DRY
我正在使用phil sturgeon基类保持干燥方法与我的应用程序和控制器显示如下,当我加载我的登录控制器时,我得到500错误,但如果我加载CI控制器欢迎,包括在应用程序中它加载得很好。
为什么在访问登录控制器时出现500错误。
<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class MY_Controller extends CI_Controller {
public function __construct()
{
parent::__construct();
}
public function index()
{
}
}
<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Backend_Controller extends MY_Controller
{
public function __construct()
{
parent::__construct();
}
public function index()
{
}
}
<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Login extends Backend_Controller {
public function __construct()
{
parent::__construct();
}
public function index()
{
}
}
答案 0 :(得分:1)
如果您的后端控制器(父级)具有可见性为public或protected的实例变量,则扩展后端控制器的控制器将能够使用$this
关键字访问这些变量。
示例:
<?php
class ParentController {
protected $foo = "bar";
}
class ChildController extends ParentController {
public function indexAction() {
echo $this->foo;
}
}