swiftx/orm

PHP模型层映射组件

dev-master 2016-05-19 19:03 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:53:08 UTC


README

Swiftx是一款PHP开发框架,该项目是该框架的核心项目之一,提供PHP依赖注入功能。该项目可以作为Swiftx Framework框架的组件使用,也可以独立于框架作为第三方类库使用。项目建议使用Composer进行管理,开发规范遵循PSR-4命名规范,基于PHP7作为开发起点:

  • 应用程序接口调用与容器初始化
  • 绑定到容器与从容器获取对象
  • 预绑定配置文件详细配置项说明

1 安装与使用

项目运行环境基于PHP7+,理论上PHP5.5+也能运行,但在新项目重构过程中并未进行太多旧版本运行环境的兼容性测试,因此请开发者根据开发环境进行适当的调整。PHP5.5以下的版本请谨慎使用。建议使用Composer,不熟悉Composer的请先查阅Composer中文网。项目依赖于Swiftx\System项目,遵循PSR-4命名规范,手动安装的开发者请根据情况自行注册自动加载方式。

1.1 Composer安装

composer global require "swiftx/ioc"

1.2 对象模式初始化


1.3 装饰器模式调用

namespace DemoProject;
use Swiftx/Ioc/Facade;

class MyIoc extends Facade {

}

2 容器注册依赖

在大多数情况下,Ioc容器可以通过主配置文件或服务提供者进行注册。对于需要动态注册的实例,可以使用以下方法进行动态注册,动态注册的对象仅在当前请求的生命周期内有效。注册后的对象可以通过容器对象获取,另外,你还可以使用Facade全局访问容器。

2.1 回调方法绑定到容器

通过将回调方法绑定到容器中,容器每次获取对象时都会调用回调方法来生成一个新的对象实例提供给使用者,对象的生产过程和初始化均由回调工厂完成。

2.1.1 匿名函数闭包回调

$ioc->factory('MyDemo', function($ioc){
    return new MyDemo($ioc['Demo']);
});

2.1.2 预定义函数回调

function DemoFunction($ioc){
    return new MyDemo($ioc['Demo']);
}
$ioc->factory('MyDemo', 'DemoFunction');

2.1.3 静态方法工厂回调

class Demo{
    public static function DemoMethod($ioc){
        return new MyDemo($ioc['Demo']);
    }
}
$ioc->factory('DemoMethod', 'Demo::DemoMethod');

2.1.4 静态方法工厂回调

class Demo{
    public static function DemoMethod($ioc){
        return new MyDemo($ioc['Demo']);
    }
}
$ioc->factory('DemoMethod', ['Demo','DemoMethod']);

2.1.5 对象方法工厂回调

class Demo{
    public function DemoMethod($ioc){
        return new MyDemo($ioc['Demo']);
    }
}
$demo = new Demo();
$ioc->factory('DemoMethod', [$demo,'DemoMethod']);

2.2 绑定单例到容器

绑定单例到容器的方法和上文所述绑定工厂到容器的方法和使用一致,都是将一个对象工厂绑定到容器进行管理。容器在获取对象时通过工厂来产生,区别在于此时容器仅产生单例,即第一次获取对象时调用工厂生成对象,之后缓存该对象,直接调用。

2.2.1 匿名函数闭包回调

$ioc->singleton('MyDemo', function($ioc){
    return new MyDemo($ioc['Demo']);
});

2.2.2 预定义函数回调

function DemoFunction($ioc){
    return new MyDemo($ioc['Demo']);
}
$ioc->singleton('MyDemo', 'DemoFunction');

2.2.3 静态方法工厂回调

class Demo{
    public static function DemoMethod($ioc){
        return new MyDemo($ioc['Demo']);
    }
}
$ioc->singleton('DemoMethod', 'Demo::DemoMethod');

2.2.4 静态方法工厂回调

class Demo{
    public static function DemoMethod($ioc){
        return new MyDemo($ioc['Demo']);
    }
}
$ioc->singleton('DemoMethod', ['Demo','DemoMethod']);

2.2.5 对象方法工厂回调

class Demo{
    public function DemoMethod($ioc){
        return new MyDemo($ioc['Demo']);
    }
}
$demo = new Demo();
$ioc->singleton('DemoMethod', [$demo,'DemoMethod']);

2.3 绑定已存在的对象到容器

将一个程序中生成的对象绑定到容器,接下来的访问都将直接获取该对象。

$demp = new Demo();
$ioc->instance('Demo', $demo);

2.3 绑定已存在的对象到容器

将一个程序中生成的对象绑定到容器,接下来的访问都将直接获取该对象。

$demp = new Demo();
$ioc->instance('Demo', $demo);

3 容器实例解析

从容器中获取已成功注册的对象实例。

3.1 使用fetch方法获取实例

$demo = $ioc->fetch('Demo');

3.2 使用数组方式获取实例

$demo = $ioc['Demo'];

3.3 使用注解方式解析实例

$demo = $ioc->make('MyDemo.Demo');

感谢您的支持!

作者:胡永强 邮箱:odaytudio@gmail.com 2016年05月18日