Download the PHP package icesoft/lark without Composer
On this page you can find all versions of the php package icesoft/lark. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package lark
PHP micro framework - v0.5.1
一个PHP微服务框架, 支持自定义系统组件. 本框架还在不断完善中, 基本核心功能已经完成90%
- 依赖: swoole, composer, php7.3
- 作者: kelezyb
Features
- 高性能
- 异步, 基于协程
- 依赖注入
- RPC服务支持
Quick Start
初始化 Lark框架大部分的配置采用注解的方式, 框架依赖composer来管理包.
依赖注入
@InjectService 注入开发者提供服务 @Inject 注入系统(beans)中对象
Controller
每个Controller必须继承与BaseController, 有3个注解来表达注释相关操作.
@Controller 表示控制器注解, 是路由的前缀 @Route 是方法注解, 对于路由的后缀 @Response 是Http请求返回注解, 表示返回的数据类型, 有json, raw, template
BaseController有request和response对象, 一个用来对请求输入参数读取, 一个为响应输出相关操作 本框架暂时无session操作. 一般用Token的方式替代
Demo:
对应地址
http://host:port/test/index
http://host:port/test/test
小技巧: 用命令php lark.php router 可以看到系统中相关路由表信息
Command
命令行组件, 每个命令行组件需要继承于Lark\Command\Command类, 该类是一个抽象类, 需要实现registry方法和execute方法, registry是用来注册命令行参数的. 需要返回一个Lark\Command\CommandDescribe对象, 他需要提供模块名称, 命令名称, 和命令行描述. 如果该命令行需要注入服务相关组件, 需要加上@Bean注解, 其他的则和控制器雷同. execute方法是具体命令执行的方法, 返回是对应命令行的退出码. 必须是有符号的int值. 不返回则为0 执行命令的方法是: ./bin/lark 模块名:命令名称 --参数. 具体细节可以输入 ./bin/lark help查看
Service
服务是一组业务逻辑的集合, 我们把相关的代码集成在一起, 减少控制器的业务逻辑降低系统的耦合性. 本身他并没有什么特殊性的地方. 主要还是用来写数据操作的一些业务逻辑
EventManager::Instance()->trigger(new UserLoginEvent(['id' => 200]));
Event
事件模式是一种经过了充分测试的可靠机制,是一种非常适用于解耦的机制,分别存在以下 3 种角色:
事件(Event) 是传递于应用代码与 监听器(Listener) 之间的通讯对象 监听器(Listener) 是用于监听 事件(Event) 的发生的监听对象 事件管理器(EventManager) 是用于触发 事件(Event) 和管理 监听器(Listener) 与 事件(Event) 之间的关系的管理者对象
用通俗易懂的例子来说明就是,假设我们存在一个 UserService::register() 方法用于注册一个账号,在账号注册成功后我们可以通过事件调度器触发 UserRegistered 事件,由监听器监听该事件的发生,在触发时进行某些操作,比如发送用户注册成功短信,在业务发展的同时我们可能会希望在用户注册成功之后做更多的事情,比如发送用户注册成功的邮件等待,此时我们就可以通过再增加一个监听器监听 UserRegistered 事件即可,无需在 UserService::register() 方法内部增加与之无关的代码。
定义一个事件, 他主要的作用是事件传递中需要传递的对象封装:
定义一个监听器:
定义系统需要监听的事件列表, 在配置Configs/events.php中
然后我们就可以在我们需要触发事件的地方, 直接调用:
事件是运行在协程中的代码, 不会阻塞主线程的代码. 运行时间比较长而且不在意结果的操作都可以放到此处(比如发送邮件等). 特别主要, 不要在事件中再次触发事件, 代码有Bug的情况容易造成死循环.
Middleware
中间件, 主要用于编织从 请求(Request) 到 响应(Response) 的整个流程, 需要继承 Lark\Middleware\Middleware; 下面的例子实现了请求需要JWT验证, 以及白名单等功能
Exception
在Lark框架中, 需要返回一些错误数据的时候我们推荐使用异常, 系统会直接返回对应的json数据. 参考例子如下
我们在控制器中直接抛出异常即可, 参考例子如下:
Entitys
这个是一个简单的ORM模型, 需要定义对于表所有需要的字段, 参考例子(推荐用开发工具生成set,get方法):
然后我们就可以直接调用,
Config
系统所有的配置都放到Configs中, 类似于
日志
系统日志系统采用monolog, 我们可以直接在利用注解@Bean在服务中, @Inject一个系统对象(logger). 其这个对象可以输出日志到Console或者文件中, 具体细节可以参考monolog
All versions of lark with dependencies
ext-curl Version *
ext-redis Version *
ext-openssl Version *
doctrine/annotations Version ^1.6
monolog/monolog Version ^1.24
twig/twig Version ~1.0
symfony/console Version ^5.1
ext-gd Version *
ext-zip Version *
phpunit/phpunit Version ~6.0
graze/guzzle-jsonrpc Version ~3.0
nette/mail Version ^3.1
ext-bcmath Version *
symfony/yaml Version ^5.1
illuminate/database Version ^8.11
phpoption/phpoption Version ^1.7
vlucas/phpdotenv Version ^5.2