Beans配置


beans模块是herosphp的独创,主要模拟java的spring开发框架的beans服务或者对象托管,然后通过Beans::get(), Beans::delete()去获取和删除对象或者服务。可以很方便的实现资源的管理。虽然配置的时候有那么一丢丢繁琐,凡是使用的时候你会发现是相当方便的,你会慢慢依赖上她。

下面我们就看看Beans的配置规则,可能有那么一丢丢小复杂,请耐心看完。首先看一个配置栗子:

$beans = array(
    'test.user.service' => array(
        '@type' => Beans::BEAN_OBJECT,
        '@class' => 'test\service\UserService',
        '@attributes' => array(
            '@bean/modelDao'=>array(
                '@type'=>Beans::BEAN_OBJECT,
                '@class'=>'test\dao\UserDao',
                '@params' => array('User')
            )
        ),
    )
);
return $beans;

1. Bean属性名必须与@作为开头

2. 一个Bean的配置包括下面属性:

  • @type[string]:指定bean的类型,BEAN_OBJECT为对象,BEAN_OBJECT_ARRAY为对象数组,暂时只支持这两种,如果不指定,则当普通对象
  • @class[string]:指定Bean的类名
  • @params[array]:初始化时传递给构造函数的的值
  • @attributes[array]:创建Bean时需要设置的属性列表,列表项语法参考[attributes项语法说明]
  • @invokes[array]:创建Bean时需要调用的方法列表,列表项语法参考[invokes项语法说明]
  • @single[boolean]:是否单例,如果不指定,默认为true.

3. attributes项语法说明

  • 属性名可以是简单的字符串,如果是简单的字符串,则不会对属性值进行任何的处理。
  • 属性名也可以是以"@*/"开头的Bean属性,这种格式相当于对属性值类型进行说明,现支持两种类型:
  • @id:说明属性值是一个id指向的Bean项,需要调用Beans::get($id)获得正确的bean.
  • @bean:说明属性值是一个Bean项配置,程序需要创建这个bean,这个类型通常用于创建匿名Bean

4. invokes项语法说明

  • 方法名可以是简单的字符串,如果是简单的字符串,则不会对参数值进行任何的处理。
  • 方法名也可以是以"@*/"开头的Bean属性,这种格式相当于对参数值类型进行说明,现支持两种类型:
  • @id:说明属性值是一个id指向的Bean项,需要调用Beans::get($id)获得正确的bean.
  • @bean:说明属性值是一个Bean项配置,程序需要创建这个bean,这个类型通常用于创建匿名Bean

简单说就是这样的:

  • 对象的类型可以是对象或者对象数组
  • 对象可以包含多个属性,属性有可以是各种数据类型,也可以是另一个Beans对象的引用,用@id表示
  • 创建Beans对象的时候可以默认初始化调用一些方法,这些方法是通过@invokes属性配置的
  • @invokes 可以指定传入一个或者多个参数,如果是多个参数就用数组传入,参数类型那个可以任意数据类型或者某个Beans的引用,用@id表示
Copyright © HerosPHP 2016 all right reserved,powered by Gitbook最后更新时间: 2016-08-30 22:43:47

results matching ""

    No results matching ""