getsky/phalcon-autoload-services

依赖注入中自动注册服务的组件

v1.1.0 2014-10-07 10:27 UTC

This package is not auto-updated.

Last update: 2024-09-24 01:07:41 UTC


README

此组件允许使用设置文件在DI中注册服务。

组件的主要功能

  • 服务可以通过字符串、对象或服务提供者进行初始化;
  • 服务通过配置文件进行连接;
  • 服务可以作为“共享”服务进行注册;

要求

  • PHP 5.4
  • Phalcon 框架

Phalcon 框架: http://phalconphp.com/

使用

注册执行代码所需的必要服务

$services = new Ini('services.ini');
$dic = new FactoryDefault();

$registrant = new Registrant($services);
$registrant->setDi($dic);
$registrant->registration();

配置服务

注册服务有三种方式

  1. 通过类名。此方法不允许向构造函数传递参数或调整参数。

    [response]
    string = "Phalcon\Http\Response"
  2. 直接注册实例。当使用此方法时,容器已放置依赖关系已经完成的对象。

    [request]
    object = "Phalcon\Http\Response"
  3. 通过服务提供者。它必须实现接口 GetSky\Phalcon\AutoloadServices\Provider。根据计划,提供者是容器中匿名函数注册的中间件,但有机会实现任何其他支持Phalcon的方式。

    [route]
    provider = "RouteProvider"

对于第二种和第三种方法,可以指定传递给构造函数的参数,并从其创建到放置在DI之前调用方法。下面是一个如何使用ini实现的示例

[first-service]
provider = "SomeNamespace\FirstClass"
arg.0.service = "config"
arg.1.var = "24"
arg.2.di = 1
arg.3.s-service = "shared-service"
arg.4.object.object = "SoeNamespace\SecondClass"
arg.4.object.arg.0.var = "42"
arg.4.object.call.0.method = "run"

在上面的示例中,我们注册了名为 first-service 的服务 SomeNamespace\FirstClass,并传递了5个参数:服务 config、变量 24、DI(实现 DiInterface 的对象)、由方法 getShared 造成的共享服务 shared-services 以及首先使用传递 42 并调用 run 创建的 SomeNamespace\SecondClass 的实例。