nercury / code-igniter-bundle

允许将 CodeIgniter 作为捆绑包加载,并简化迁移到 Symfony。

安装: 734

依赖项: 0

建议者: 0

安全: 0

星级: 8

观察者: 6

分支: 8

开放问题: 0

类型:symfony-bundle

1.3.7 2022-03-30 05:43 UTC

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();

这就是现在的情况。

欢迎贡献。