BFF:快速且轻量级的PHP框架,用于完成任务

dev-master 2022-04-12 14:57 UTC

README

一个轻量且快速的PHP框架,用于完成任务

配置 - 多环境配置管理,生产环境为基础环境,其他环境可以覆盖或添加到生产环境的配置值

数据库 - 通过MysqliFactory和PdoFactory创建自定义MySQL连接,通过传递您的配置引用或通过Service::pdo()Service::mysqli()获取默认连接

Memcache - 与Memcache存储交互

TaggedMemcache - 使用标签集获取和设置;通过无效化标签来无效化缓存

队列 - 队列实现(目前仅支持Redis后端实现)

注册表 - 一个全局的、带标签的单例对象存储

服务 - 根据需要将单例服务实例化到注册表中;从任何地方访问的简单干净接口

导出 - 通过Redis队列将数据(日志、CSV)导出到文件(不同的导出在exporters数组中定义)

日志记录器 - 包装导出以格式化日志消息并发送到正确的导出器

文本 - 有用的文本函数

时间 - 有用的时间常量和函数

示例用法

将项设置为缓存

use BFF\Service;

$user = [
    'name' => 'Joe Bloggs',
    'email' => 'joe@example.com'
];

$cache = Service::cache();
$cache->set('user-joebloggs', $user, Time::ONE_HOUR);

加载自定义应用服务

use BFF\Registry;
use BFF\Service as BffService;

namespace App;

class Service extends BffService {
    const MYSERVICEA = 'myservicea';
    const MYSERVICEB = 'myserviceb';
    
    public function myservicea() : MyServiceA
    {
        if (!Registry::isset(Service::MYSERVICEA)) {
            $obj = new MyServiceA();
            Registry::set(Service::MYSERVICEA, $obj);
            return $obj;
        } else {
            return Registry::get(static::MYSERVICEA);
        }
    }
    
    public function myserviceb() : MyServiceB
    {
        if (!Registry::isset(Service::MYSERVICEB)) {
            $obj = new MyServiceB();
            Registry::set(Service::MYSERVICEB, $obj);
            return $obj;
        } else {
            return Registry::get(static::MYSERVICEB);
        }
    }
}
namespace App;

$myservicea = Service::myservicea();
$myservicea()->someAction();