一个轻量的 PHP 框架
一个简单的 PHP "框架"?又或者可以说是应用模板。
ORM 使用 Eloquent ORM ,路由使用 FastRoute
大部分的接口设计参考了 Laravel,采用门面模式 (Facade) ,单例模式 (Singleton) ,控制反转 (IoC) ,以及 依赖注入 (DI) 的设计,部分也用到了其他的设计模式。
集成了一个 IoC 容器,兼容 PSR-11
支持和 ReactJS 集成,其他前端框架也是可以的,不过我只写了 ReactJS 的配置。
支持 PSR-15 标准的中间件。
封装了请求和响应,根据 PSR-7 标准进行设计,但增加了类似 Laravel 的接口。
支持通过注解设置依赖注入,路由以及中间件
支持 Aop,但是由于没有使用继承代理的方式,所以支持切入的范围有限,目前支持门面切入和控制器切入,同时在容器中也添加了相应的方法提供切入的功能。
之所以不使用继承代理的方式,是因为 PHP 没有类似 Java 中的 Proxy 反射接口,PHP 继承代理需要使用 eval 或 require 的方式动态声明 class,会有安全的风险。
提供一个简单的观察者实现,虽然说一般也没啥用。
使用 APCu 来缓存注解
提供了一个任务队列的实现,类似于协程,可以主动让出,但是由于 PHP 没有多线程机制所以无法实现非阻塞。
由于首次写这种项目,所有会有很多设计缺陷和漏洞,不建议将该项目用于任何生产环境,仅用于学习就可以啦,若您有更好的建议或者发现不足的地方欢迎反馈。
写这个项目的目的是为了下一个博客项目准备的,因为不打算用任何框架,所以就有了这个项目 2333。
- 克隆本仓库
git clone https://github.com/syfxlin/xkphp.git
- 安装 PHP 依赖
composer install
某些情况下 laminas/laminas-httphandlerrunner
可能无法正常安装,此时就需要先安装 laminas/laminas-diactoros
- 若您也需要使用 ReactJS,那么就需要安装 Node 依赖
yarn
- 修改 .env 文件配置,并配置 API Key(可以通过 Laravel 生成,暂时还没制作生成脚本),或者执行以下代码生成
php -r "echo base64_encode(openssl_random_pseudo_bytes(32));"
- 运行数据库迁移
composer migration:up
- 将 PHP 运行目录切换到 public,或者也可以通过 PHP 内置服务器启动。
php -S 0.0.0.0:8000 -t public
- 发送请求(不使用第三方库)
- 终止流程
- Aop 注解
- 兼容 PSR-17
- 适配 Swoole
暂无
XK-PHP 由 Otstar Lin 和下列 贡献者 的帮助下撰写和维护。
Otstar Lin -Personal Website · Blog · Github
根据 Apache License 2.0 许可证开源。