nercury / code-igniter-bundle
允许将 CodeIgniter 作为捆绑包加载,并简化迁移到 Symfony。
1.3.7
2022-03-30 05:43 UTC
Requires
- php: >=5.3.2
- symfony/symfony: >=2.0
This package is auto-updated.
Last update: 2024-08-29 03:55:18 UTC
README
它是什么
在 Symfony2 中集成 CodeIgniter 作为捆绑包。
使用方法
通过 composer 安装捆绑包,并在 AppKernel 中加载它
$bundles = array( ... new Nercury\CodeIgniterBundle\NercuryCodeIgniterBundle(), ... );
如果您仍在使用 Symfony 2.0,不要忘记在 autoload.php 中自动加载捆绑包
'Nercury' => __DIR__.'/../vendor/nercury/code-igniter-bundle',
在 config.yml 中,指定 CodeIgniter 目录的路径
nercury_code_igniter: application_path: %kernel.root_dir%/../CodeIgniter_210/application system_path: %kernel.root_dir%/../CodeIgniter_210/system
捆绑包使用一些来自 CodeIgniter 2.1.0 的代码,因此它最适合与 2.1.0 版本一起使用。捆绑包会自动尝试根据当前 URL 检测代码 igniter 控制器。要禁用此功能,请将以下行添加到 config.yml 中
nercury_code_igniter: ... detect_controllers: false
要在任何 symfony 控制器中获取 CI 响应,请使用
$response = $this->get("ci")->getResponse($request);
此方法将请求处理重定向到 CodeIgniter 和其路由。
可能需要仅使用一些旧的 CodeIgniter 代码来获取库、模块甚至助手。在这种情况下,您可以获取 CI 实例
$CI = & $this->get("ci")->getInstance();
如果之前调用了 "getResponse",它将返回使用的控制器。否则,将创建一个假的控制器实例。因此,如果调用了 "getInstance",则不能使用 "getResponse"。
Symfony2 容器可以作为库对 CodeIgniter 使用。例如,要在 CI 控制器中获取 doctrine 服务,请调用
$this->symfony->get('doctrine');
要在 CodeIgniter 中使用 Symfony2 数据库配置,请在此 database.php 配置文件中这样做
$connection = $GLOBALS['CI_symfony']->get('doctrine')->getConnection(); // :) $db['default']['hostname'] = $connection->getHost(); $db['default']['username'] = $connection->getUsername(); $db['default']['password'] = $connection->getPassword(); $db['default']['database'] = $connection->getDatabase();
这就是现在的情况。
欢迎贡献。