piotrpolak/codeigniter-symfony2-bridge

一个CodeIgniter库,它以紧凑而优雅的方式促进Symfony2服务集成到CodeIgniter应用程序中。

1.0.0 2018-10-24 14:37 UTC

This package is auto-updated.

Last update: 2024-08-25 07:34:13 UTC


README

Build Status Maintainability Test Coverage

一个库,它以紧凑的方式促进将Symfony服务集成到旧框架应用程序中。

作为1.0.0版本,该包与composer兼容,代码已从CodeIgniter框架解耦。

如果您想使用最初的CodeIgniter库,请检查0.1.0发布

一些历史和最常见场景

该库是为一个长期支持项目编写的,该项目必须与全新的Symfony2+应用程序集成。业务逻辑封装在由Symfony2+依赖注入组件管理的服务中,并由Symfony2+组件包和一些旧CodeIgniter组件使用。

尽可能的情况下,服务方法接受原始类型的变量作为输入,以便于使用。

方法输出可以是原始类型和复杂对象,因为桥接和Symfony2+内核本身管理PSR类自动加载。桥接不会创建与通信和参数序列化相关的任何开销。

兼容性

CodeIgniter:2.0 - 3.1+

Symfony:2.0+, 3.0+, 4.0+

测试

composer install --prefer-dist && ./vendor/bin/phpunit -v

为了测试任意版本组合,请使用(可能需要sudo权限连接到Docker守护进程)

PHP_VERSION=7.2 bin/test_in_docker.sh

示例

获取Symfony2+服务容器

$bridge = new \PiotrPolak\CodeIgniterSymfonyBridge\Bridge('./symfonyRootDir');
try {
    // \Symfony\Component\DependencyInjection\Container
    $container = $bridge->getKernel()->getContainer();
} catch(\PiotrPolak\CodeIgniterSymfonyBridge\Exception\KernelInitializationException $e) {
    // Unable to initialize Symfony2+ kernel
}

有关Symfony服务容器和依赖注入的更多信息

使用服务

$bridge = new \PiotrPolak\CodeIgniterSymfonyBridge\Bridge('./symfonyRootDir');
try {
    $result = $bridge->getKernel()->getContainer()->get('my_service')->businessLogicServiceMethod('parameter of a primitive type'));
} catch(\PiotrPolak\CodeIgniterSymfonyBridge\Exception\KernelInitializationException $e) {
    // Unable to initialize Symfony2+ kernel
}

在设计服务时,优先使用原始类型的参数 - 这会创建最小的开销,并使服务集成变得容易。服务方法输出可以是任何类型。

获取Doctrine2实体管理器

$bridge = new \PiotrPolak\CodeIgniterSymfonyBridge\Bridge('./symfonyRootDir');
try {
    $em = $bridge->getKernel()->getContainer()->get('doctrine')->getManager();
} catch(\PiotrPolak\CodeIgniterSymfonyBridge\Exception\KernelInitializationException $e) {
    // Unable to initialize Symfony2+ kernel
}

获取Doctrine2实体管理器的访问权限,您将能够访问实体及其相关存储库。

加载在Symfony2+组件包中定义的任意类

$bridge = new \PiotrPolak\CodeIgniterSymfonyBridge\Bridge('./symfonyRootDir');
try {
    $container = $bridge->getKernel()->getContainer(); // Initializes Symfony2+ PSR class loader
    $imageHelper = new \Pepis\ImageManipulationBundle\Helpers\ImageHelper();
} catch(\PiotrPolak\CodeIgniterSymfonyBridge\Exception\KernelInitializationException $e) {
    // Unable to initialize Symfony2+ kernel
}

许可

该软件根据以下许可证双许可