php 内置接口,LyApi: LyAPI是一款轻量级的PHP 接口开发框架,可快速开发出易维护、高性能的API接口。内置缓存、日志、数据库操作、国际化等功能。 - 2.0已推出!!...

LyApi 2.X 🍭

LyApi 2.X 是全新的 LyApi 版本,更新了整体的架构和代码,让框架变得更加灵活!

🍑序言

LyApi 1.X 版本已经维护了将近三年了,也是我很重视的一个项目。但是这个项目始终有着很多问题,很多功能并没有很好的去实现。在这三年里我也学到了很多新东西。渐渐也发现了 LyApi 1.X 的局限性,它无法让我去完成很多我想做的事情。包括一些用户给我的提出的意见:路由系统太水,开发不够灵活,仅仅局限于简单的接口开发。于是乎我决定开发了这个 2.X 版本,它是一个从头开始的框架,所有的代码都进行了重写:路由系统、缓存系统、视图系统、控制器系统、模板引擎、以及部分常用的数据结构模板。

🍍特点

路由系统:丰富的自定义选项。支持动态参数定义,动态控制器等。

日志系统:轻量级日志生成系统,支持类型分类等功能。

缓存系统:文件缓存支持简单的增删改查,以及缓存分类等功能。

结果类型:根据不同父类可生成不同的返回数据,自带 JSON 和 HTML 。

数据结构:内置 堆、栈、树、字典树等常用数据结构程序,可快速创建与调用。

数据访问:内置 Medoo 轻量级库,可快速对各种数据库进行访问以及操作。

异常处理:框架对所有异常信息进行分类处理,并可调用不同的自定义控制器。

PS: 本框架引入了很多 PHP 的新特性,所以需要使用 7.X 以上的版本运行。

🥝演示

以下提供部分代码演示,可自行查看需要的功能。

🌈​ 路由系统

// 基础路由注册(访问根目录则指向 Main.index 控制器)

Route::rule("/", "Main.index");

// 动态控制器注册(根据路径不同,注册到不同控制器)

Route::rule("/{letter}", "Main.{1}");

// 类似于 LyApi 1.X 的自动指向控制器 的实现

Route::rule("/{any}", "{1}")::afterDefine(function ($c) {

$c = str_replace("/", ".", $c);

return $c;

});

// 过滤器,当闭包结果为 False 则会拦截请求并报出相应的异常信息

Route::rule("/debug/{letter}", "Debug.{1}")::filter(function () {

return Config::dotConfig('app.open_debug');

}, HTTP_NOT_FOUND);

🍩控制器

// 根据不同继承的类,本控制器所生成的数据结果将不一样

// ViewCon 是普通的HTML代码,ApiCon 则会生成JSON代码 (可自定义)

class Main extends ViewCon

{

// 接受两个参数,Request 和 Response

public function index($req, $resp)

{

// 返回结果不会直接输出,框架将根据父类的生成规则进行处理后再输出结果。

// View::render 会使用模板引擎进行渲染。

return View::render('index', []);

}

}

🎨 错误抛出

// 框架支持在任何地方抛出异常,并结束处理程序

Response::abort(404); // 抛出一个 404 异常

Response::abort(HTTP_NOT_FOUND); // 使用常量表示会更加的优雅

abort(HTTP_NOT_FOUND); // 使用助手函数可直接使用 abort 函数

// Abort 后会调用到定义的 Exception 对象处理,结束后将结束程序运行

⚾错误处理

class Exception extends ViewCon

{

// 当错误处理器无法查找到相关函数,则会默认调用 _default 函数

public function _default($req, $resp)

{

// 通过 HTTP_CODE 可以取得本次的错误代码

$http_code = $req->options['HTTP_CODE'];

// 通过 EXCEPTION 可以取得本次的错误对象

$exception = $req->options['EXCEPTION'];

// 返回的最终结果(HTTP状态码会自动更新,不需要手动提交 header)

return "

" . $http_code . " Error!

";

}

// 通过 _[HTTP_CODE] 的方式可以定义每个状态码的处理程序

public function _404($req, $resp)

{

// 当你不返回任何值时,浏览器会渲染默认的 404 页面

// return "404 Not Found";

// 这里还是建议渲染自定义的错误文件内容。

}

}

🎲事件系统

// 框架支持你在一些程序前后进行自定义操作。

Event::on("event_name",function ($name) {

// 当 event_name 被触发时,本闭包函数将被调用

echo "Hello World";

});

// 触发一个事件,可以传递参数

Event::trigger("event_name","mrxiaozhuox");

💾数据库操作

$conn = Connector::connect("mydb");

// 查询表中所有的数据

$conn->select("table_name","*");

// 删除 id 为 1 的数据

$database->delete("table_name", [

"id" => 1

]);

// 插入一条数据

$last_user_id = $database->insert("table_name", [

"user_name" => "mrxiaozhuox",

"email" => "mrxzx@qq.com",

"age" => 16

]);

👨‍🎓作者

作者: mr小卓X

Q Q: 3507952990

交流群: 769094015 (加群提问)

PS: 任何问题直接联系我就行,我会第一时间解决问题。

📔文档

文档整理中,近期将完成编写工作。

📡合作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值