PHP Class phprs\util\IoCFactory

Author: caoym
Show file Open project: caoym/phprs-restful Class Usage Examples

Protected Properties

Property Type Description
$conf
$conf_file
$dict
$metas
$singletons

Public Methods

Method Description
__construct ( string | array $conf = null, array $dict = null, array $metas = null )
clearAnnotation ( unknown $text ) 去掉注解
create ( string $id, array $construct_args = null, array $properties = null, callable $injector = null, callable $init = null ) : object 根据id得到对象实例 TODO 单实例间互相引用会是问题
getClassName ( string $id = null )
getConf ( string $id = null ) : array | null 获取配置的属性
getConfFile ( ) : string | null 取配置文件路径, 如果是通过数组创建的, 则返回null
getDictKeys ( string $value ) : array 从字符串中获取模板变量
getMetaInfo ( string $class ) : array 获取元信息 会缓存
getPropertyValue ( $refl, object $ins, string $name ) : mixed 取属性值
hasClass ( string $id ) : boolean 配置中是否有指定id的类
injectDependent ( $refl, unknown $ins, unknown $meta, unknown $properties, $injector = null ) : void 注入依赖
setPropertyValue ( $refl, $ins, string $name, mixed $value ) 设置属性值, 允许设置private/protected属性

Private Methods

Method Description
buildConstructArgs ( ReflectionClass $class, array $properties ) : array 根据属性组合构造参数
getProperty ( string $value ) : object | string 获取属性 替换属性中的{}和@标记
replaceByDict ( string | array $value, $dict ) : void 替换字典

Method Details

__construct() public method

public __construct ( string | array $conf = null, array $dict = null, array $metas = null )
$conf string | array 文件或者配置数组 配置数组格式如下: [ id=>[ "class"=>类名, "singleton"=>false, 是否是单例, 如果是, 则只会创建一份(同一个工厂内) "pass_by_construct"=false, 属性是否通过构造函数传递, 如果不是, 则通过访问属性的方式传递 "properties"=>{ 属性名=>属性值 }
$dict array 设置字典 配置文件中, 属性值可以使用{key}的方式指定模板变量, 注入属性到实例是这些模板变 量会被替换成setDict方法设置的值
$metas array 类元信息, 如果不指定, 则自动从类文件中导出 ]

clearAnnotation() public static method

去掉注解
public static clearAnnotation ( unknown $text )
$text unknown

create() public method

根据id得到对象实例 TODO 单实例间互相引用会是问题
public create ( string $id, array $construct_args = null, array $properties = null, callable $injector = null, callable $init = null ) : object
$id string
$construct_args array 构造函数的参数
$properties array 类属性, 覆盖配置文件中的属性
$injector callable fun($src), 获取注入值的方法
$init callable fun($inst, &$got) 初始化实例, 在创建后, 调用构造函数前
return object

getClassName() public method

public getClassName ( string $id = null )
$id string

getConf() public method

获取配置的属性
public getConf ( string $id = null ) : array | null
$id string
return array | null

getConfFile() public method

取配置文件路径, 如果是通过数组创建的, 则返回null
public getConfFile ( ) : string | null
return string | null

getDictKeys() static public method

从字符串中获取模板变量
static public getDictKeys ( string $value ) : array
$value string
return array

getMetaInfo() public method

获取元信息 会缓存
public getMetaInfo ( string $class ) : array
$class string
return array

getPropertyValue() static public method

取属性值
static public getPropertyValue ( $refl, object $ins, string $name ) : mixed
$refl
$ins object
$name string
return mixed

hasClass() public method

配置中是否有指定id的类
public hasClass ( string $id ) : boolean
$id string
return boolean

injectDependent() public method

注入依赖
public injectDependent ( $refl, unknown $ins, unknown $meta, unknown $properties, $injector = null ) : void
$ins unknown
$meta unknown
$properties unknown
return void

setPropertyValue() static public method

设置属性值, 允许设置private/protected属性
static public setPropertyValue ( $refl, $ins, string $name, mixed $value )
$refl
$name string 属性名
$value mixed 属性值

Property Details

$conf protected property

protected $conf

$conf_file protected property

protected $conf_file

$dict protected property

protected $dict

$metas protected property

protected $metas

$singletons protected property

protected $singletons