我正在处理部署在不同位置的应用程序。
根据位置,某些控制器/模型/视图中的某些功能的工作方式不同,有没有办法覆盖/扩展这些类? (我不想直接更改代码库,因为它会在将来的版本中导致问题) 我正在寻找类似于MY_覆盖核心类/函数的方法。
由于我无法展示实际代码,这里有一个我想要实现的简单示例:
普通基本控制器,在大多数部署中使用:
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值中)
答案 0 :(得分:0)
如果您只是更改变量,而不是基于location
(a.k.a独立环境)覆盖您的类,请尝试使用环境变量。为此,我建议通过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。