菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
0
0

一个很简单的PHP框架lyue

原创
05/13 14:22
阅读数 241

课程推荐:PHP开发工程师--学习猿地精品课程

项目空闲了两天就写了一下,目前只粗略写了一半,很多功能还确实后续慢慢完善。
github 地址 lyue

lyue,一个轻量级的 php restful api 开发框架
1、安装
git clone git@github.com:linyuee/lyue.git
到项目根目录执行依赖安装

composer install
2、目录结构
lyue
-app --逻辑代码
-Console --命令行代码
-Controller --控制器
-Exception --异常捕获处理
-Model --模型层
-config --配置
-public --框架入口
-route --路由
-storage --文件存储
-vender --扩展包
框架的核心内容打包成 composer 包 lyue/framework, 框架依赖于该包

3、核心
1、服务容器
框架一开始会初始化一个 Application 类,这个类便是框架核心类,继承与容服务器类 Container 类。
服务容器是一个用于管理类依赖和执行依赖注入的强大工具,我们在框架启动的时候将框架所需的类型绑定到容器中去,然后解析出来使用。
使用 singleton 方法将类绑定到容器中,类型是单例。这样我们管理服务模块、实现依赖注入这些问题全都交给容器来做就好了。我们想要
什么样的服务,就向容器中添加,在需要使用的时候,就利用容器解析使用就可以了。

2、门面
Facades 为应用的 IoC 服务容器 的类提供了一个静态的接口。实现内部仅仅定义了一个 getFacadeAccessor 方法,该方法返回了一个注册
组件的,当调用该门面类不存在的静态方法时,会触发门面的__callStatic 方法

public static function __callstatic($method, $arg) { $instance = static::getInstance(static::getFacadeAccessor(), $arg); return call_user_func_array(array($instance, $method), $arg); }```
然后便会调用门面的静态方法getInstance,该方法会尝试冲服务容器中获取实例,如果获取不到则会创建该实例

public static function getInstance($classname, $args)
 { $obj = Application::getInstance()->make($classname); if (!empty($obj)) { return $obj; } return new $classname($args); }

于是,你边可以在控制器里面轻松愉快地使用门面类了

\Lyue\Facades\Log::info('123');
3、路由
路由文件再 route 文件夹下面的 api.php 文件

Lyue\Route\Router::where('name', '[a-z]+')
 ->where('id', '\d{1,2}') // ->prefix("admin") ->namespace("Api") ->group(function (Lyue\Route\Router $router) { Lyue\Route\Router::get('dashboard', 'DashboardController@index'); Lyue\Route\Router::prefix("api") ->group(function () { Lyue\Route\Router::post('test', 'TestController@test'); }); });

4、ORM

首先在配置文件config/database.php填写数据库信息
然后命令行执行

php rookie create:models
便会在 app/Models 文件夹下面生成改数据库的表对应的 model 类了
在控制器中根据 model 类来操作对应的数据库

 $res = DB::table('user')->select(['id','phone','status'])->get(); $res->each(function($item){ $item->status = $item->status == 1?'正常':'异常';
 }); return $this->response($res);

5命令行

命令行基于symfony/console包扩展而来

基本命令

创建command文件,位于app/Console/Command
```$xslt
php rookies make:command Test
创建 Controller

php rookie create:controller TestController

————————————————
原文作者:linyue
转自链接:https://learnku.com/articles/51538
版权声明:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请保留以上作者信息和原文链接。

发表评论

0/200
0 点赞
0 评论
收藏
为你推荐 换一批