Skip to content
This repository was archived by the owner on Jan 3, 2022. It is now read-only.

syfxlin/xkphp

Folders and files

NameName
Last commit message
Last commit date
Mar 17, 2020
May 30, 2020
May 11, 2020
Apr 29, 2020
May 1, 2020
May 11, 2020
May 15, 2020
Apr 26, 2020
May 1, 2020
Mar 23, 2020
May 30, 2020
Mar 19, 2020
May 10, 2020
May 10, 2020
Mar 19, 2020
Apr 17, 2020
Apr 24, 2020
Jun 8, 2020

Repository files navigation

XK-PHP

一个轻量的 PHP 框架

描述 Description

一个简单的 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。

安装 Install

  1. 克隆本仓库
git clone https://github.com/syfxlin/xkphp.git
  1. 安装 PHP 依赖
composer install

某些情况下 laminas/laminas-httphandlerrunner 可能无法正常安装,此时就需要先安装 laminas/laminas-diactoros

  1. 若您也需要使用 ReactJS,那么就需要安装 Node 依赖
yarn
  1. 修改 .env 文件配置,并配置 API Key(可以通过 Laravel 生成,暂时还没制作生成脚本),或者执行以下代码生成
php -r "echo base64_encode(openssl_random_pseudo_bytes(32));"
  1. 运行数据库迁移
composer migration:up
  1. 将 PHP 运行目录切换到 public,或者也可以通过 PHP 内置服务器启动。
php -S 0.0.0.0:8000 -t public

TODO

  • 发送请求(不使用第三方库)
  • 终止流程
  • Aop 注解
  • 兼容 PSR-17
  • 适配 Swoole

文档 Doc

暂无

维护者 Maintainer

XK-PHP 由 Otstar Lin 和下列 贡献者 的帮助下撰写和维护。

Otstar Lin -Personal Website · Blog · Github

许可证 License

Lincense

根据 Apache License 2.0 许可证开源。