firestark / project
专注于业务逻辑的 PHP7+ 非MVC 框架。
Requires
- php: ^7.1.3
- firestark/http: *
- firestark/ioc: *
- firestark/support: *
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-22 03:08:53 UTC
README
Firestark 是一个 非 MVC PHP7 框架,将业务逻辑与实现逻辑分离。Firestark 通过提供完全消除业务逻辑外部依赖的应用程序架构来实现这种分离。在 Firestark 的应用程序架构中,实现逻辑负责依赖关系,并与业务逻辑通信以构建工作应用程序。这样,业务逻辑是一个简单易读的工作层。
<?php use function compact as with; when ( 'i want to add a todo', then ( apply ( a ( function ( todo $todo, todo\manager $manager ) { if ( $manager->has ( $todo ) ) return [ 2000, with ( 'todo' ) ]; $manager->add ( $todo ); return [ 1000, with ( 'todo' ) ]; } ) ) ) );
Firestark 的业务逻辑代码示例
Firestark 的主张
以业务驱动的架构
Firestark 首先考虑业务逻辑。在最顶层,您将立即看到应用程序打算做什么。技术实现可以在较低层级找到。
你不需要它
Firestark 是基于 YAGNI 构建的。添加更多代码会增加更多复杂性,通常是无用的。Firestark 只提供您需要的功能,而不添加任何多余的代码。
灵活性
默认情况下,Firestark 非常小,并使用以下组件
- IOC 容器
- 小型 HTTP 层(请求和响应模型、路由和内核)
- 状态匹配器
通过这些组件,firestark 为您提供了一个基本架构,以构建结构良好、以业务驱动的应用程序。该架构是按照易于使用您自己的首选组件进行扩展的方式构建的。
快速
由于 firestark 不包含任何不必要的代码,因此可以轻松地使用 firestark 构建快速且健壮的应用程序。
入门
服务器要求
- PHP >= 7.1.3
- 指向 / 的主机(例如:虚拟主机)(默认情况下不处理子目录)
安装
composer create-project firestark/project
- 确保应用程序可以写入
/storage
目录。
目录结构
总体思路
总体思路是将整个应用程序分成两层
- 业务逻辑
- 实现逻辑
业务逻辑
业务逻辑是应用程序中执行业务规则的部分。这一层分为两个不同的部分
- 协议
- 程序
程序
程序将业务规则应用到应用程序中。以下是一些此类规则的示例
- 具有给定描述的任务只能出现一次。
- 拥有青铜账户的人在其总购买中享有10%的价格折扣。
- 在假日季节预订航班会增加基础价格的15%额外费用。
除了应用这些规则外,程序通常调用一些方法来创建、读取、更新或删除系统中的某些实体。最后,程序根据应用规则的结果返回一个状态,根据需要附带一些与该状态相关的数据。
协议
协议是普通的 PHP 对象。一个协议可以是一个实体,它描述了属于该实体的所有属性,或者是一个与实体交互的业务服务。
实体
实体的一个示例是:待办事项。该待办事项实体描述了属于待办事项的所有数据。例如,待办事项可能包括描述、完成状态和到期日期。
业务服务
一个服务示例是待办事项管理器。待办事项管理器是对待办事项的访问点,类似于仓库。待办事项管理器描述了可以对待办事项执行的所有操作。例如,可以检索、添加、更新或删除待办事项。这里的关键点是,这项业务服务不得依赖于具体的实现。这意味着这项业务服务不知道底层使用的持久化机制(例如数据库、平面文件)。这项业务服务仅描述可以对待办事项执行的操作。
实现逻辑
实现逻辑负责实现业务逻辑创建工作应用程序所需的所有内容。以下内容位于此层:
- 服务:业务服务的实现
- 容器绑定
- 状态匹配器:响应业务逻辑返回的状态
- HTTP路由
- 视图
- 门面
服务
服务是业务服务的实现。业务服务声明了服务需要实现的一些功能。例如:实现待办事项管理器的服务可以是平面文件待办事项管理器。平面文件待办事项管理器实现了业务逻辑中声明的待办事项管理器所有功能,并将结果存储在平面文件中。
绑定
绑定将服务绑定到应用程序中的业务服务。这样我们可以选择在应用程序中使用哪种实现。例如,如果我想在我的应用程序中使用平面文件待办事项管理器作为待办事项管理器,我会使用绑定来实现这一点。
状态匹配器
状态匹配器匹配业务逻辑返回的特定状态。在这个状态匹配器中,我们可以在向客户端发送响应之前进行一些最终的计算。
更多信息
更多信息可以在这里找到。
示例应用程序
灵感来源
多年的失落架构
关键要点
一个好的架构立即显示出它的意图
一个好的架构允许将重大决策推迟
数据库是细节
—— 罗伯特·C·马丁
贡献
非常欢迎贡献和反馈,请随意提出问题。