Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeigniter超越自己的控制器_Php_Codeigniter - Fatal编程技术网

Php Codeigniter超越自己的控制器

Php Codeigniter超越自己的控制器,php,codeigniter,Php,Codeigniter,我正在开发一个部署在不同位置的应用程序 根据位置的不同,某些控制器/模型/视图中的某些功能工作方式不同,是否有方法覆盖/扩展此类?(我不想直接更改代码库,因为这会在将来的版本中导致问题) 我正在寻找一种类似于核心类/函数的MY_uu覆盖的方法 由于我无法展示实际的代码,下面是一个我想要实现的简单示例: 与大多数部署中一样使用的普通基本控制器: class SomeController extends CI_Controller { ... public function inde

我正在开发一个部署在不同位置的应用程序

根据位置的不同,某些控制器/模型/视图中的某些功能工作方式不同,是否有方法覆盖/扩展此类?(我不想直接更改代码库,因为这会在将来的版本中导致问题) 我正在寻找一种类似于核心类/函数的MY_uu覆盖的方法

由于我无法展示实际的代码,下面是一个我想要实现的简单示例:

与大多数部署中一样使用的普通基本控制器:

class SomeController extends CI_Controller {
    ...
    public function index() 
    {
        $data['var'] = 10;
        $this->load->view('someview',$data);
    }
    ...
}
以下是一个用于现场的特殊控制器的外观:

class SomeController extends CI_Controller {
    ...
    public function index() 
    {
        $data['var'] = 5;
        $this->load->view('someview',$data);
    }
    ...
}

(在这种情况下,唯一的更改是var值)

如果您只更改变量,那么请尝试使用环境变量,而不是基于
位置重写您的类。为此,我建议通过composer使用库

composer require vlucas/phpdotenv
安装后,在加载引导文件之前,将其添加到底部的
index.php

index.php

require_once './vendor/autoload.php';

$dotenv = new Dotenv\Dotenv(__DIR__);
$dotenv->load();

/*
 * --------------------------------------------------------------------
 * LOAD THE BOOTSTRAP FILE
...
设置完成后,可以使用
getEnv()
函数检索变量:

.env示例

CONTROLLER_VAR=5
DB_HOST=localhost
DB_PORT=3306
...
SomeController

class SomeController extends CI_Controller {
    ...
    public function index() 
    {
        $data['var'] = getEnv("CONTROLLER_VAR");
        $this->load->view('someview',$data);
    }
    ...
}

另外,请确保Composer是自动加载的。

您可能想显示一些代码,并解释“某些控制器的工作方式不同”的含义?只是,某些函数将有一些不同的结果-根据参数,我可以预测它们将发生变化(因此将所有内容都放在配置文件中不是一个解决方案),这对我们毫无帮助。你在说什么方法?在什么情况下会发生这种情况?你说的“不同结果”是什么意思?请用一些真实的信息更新您的问题。使用环境变量如何?如果您不想根据不同的位置更改每个不同部署的应用程序代码,我认为这是一个很好的选择:这意味着什么?不同的url,不同的登录,还是什么?