Php 使用来自其他类的变量的控制器类

Php 使用来自其他类的变量的控制器类,php,codeigniter,Php,Codeigniter,我试图找出如何处理这样一种情况:我有一个MY_控制器,后端控制器,当然后端扩展MY,我还有其他控制器,比如Login和其他扩展后端的较小控制器。我的问题是,如果您注意到登录控制器上需要能够访问后端控制器内部的变量?在这种情况下,如何使用该变量 在后端控制器中,我有: <?php if (! defined('BASEPATH')) exit('No direct script access allowed'); class Backend_Controller extends MY_Co

我试图找出如何处理这样一种情况:我有一个MY_控制器,后端控制器,当然后端扩展MY,我还有其他控制器,比如Login和其他扩展后端的较小控制器。我的问题是,如果您注意到登录控制器上需要能够访问后端控制器内部的变量?在这种情况下,如何使用该变量

在后端控制器中,我有:

<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');

class Backend_Controller extends MY_Controller
{
    function __construct ()
    {
        parent::__construct();

        $this->load->library('session');

        $cms_template = $this->config->item('cms_template');

        $this->data['template'] = $cms_template;
    }
}

如果您的意思是需要从后端控制器到登录控制器访问变量,因为您正在
Login\u控制器
中扩展
Backend\u控制器
,您可以执行以下操作: 在后端_控制器中

public function __construct() {
   parent::__construct();  
   $this->some_backend_var = "some_value_here";
   //OR
   ci()->some_backend_var = $this->some_backend_var = "some_value_here";
}
在登录控制器的某些功能中,您可以使用:

echo $this->some_backend_var; //shows "some_value_here"

您的意思是这样的吗。

如果您指的是
$cms\u template
,您应该能够通过以下几种方式之一访问它。假设
$data
数组和
$config
属性都不是
private
,请尝试其中一种

$cms_template = $this->config->item('cms_template');


此外,如果构造函数仅代理父级::u construct()

,则不需要构造函数,因为默认情况下,我的前缀由Codeigniter加载,而不需要非前缀控制器。您需要包括对后端控制器类的引用,如下所示:

如果(!defined('BASEPATH'))退出('不允许直接脚本访问')

包括一次(APPPATH.controllers/backend_controller.php)

类登录扩展了后端控制器{ 公共功能(构造) { 父项::_construct();
}

public function index()
{   
    $js_page_addons = '<script src="'.base_url().'assets/' .$cms_template. '/js/validation/login_form.js"></script>';

    $page_view = 'login_view';

    $this->data['js_page_addons'] = $js_page_addons;
    $this->data['page_view'] = $page_view;
    $this->load->view('cms/' . $cms_template . '/usermanagement/index_view', $this->data);
} }
公共功能索引()
{   
$js_页面_插件=“”;
$page_view='login_view';
$this->data['js_page_addons']=$js_page_addons;
$this->data['page\u view']=$page\u view;
$this->load->view('cms/'。$cms\u template'./usermanagement/index\u view',$this->data);
} }

最后一行是什么意思?@KevinSmith您的
Login
类有一个冗余构造函数。移除它将产生相同的结果。
$cms_template = $this->data['template'];
public function index()
{   
    $js_page_addons = '<script src="'.base_url().'assets/' .$cms_template. '/js/validation/login_form.js"></script>';

    $page_view = 'login_view';

    $this->data['js_page_addons'] = $js_page_addons;
    $this->data['page_view'] = $page_view;
    $this->load->view('cms/' . $cms_template . '/usermanagement/index_view', $this->data);
} }