php l框架,一个很简单的PHP框架lyue
####
项目空闲了两天就写了一下,目前只粗略写了一半,很多功能还确实后续慢慢完善。
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,该方法会尝试冲服务容器中获取实例,如果获取不到则会创建该实例
```$xslt
public static function getInstance($classname, $args)
{ $obj = Application::getInstance()->make($classname); if (!empty($obj)) { return $obj; } return new $classname($args); }```
于是,你边可以在控制器里面轻松愉快地使用门面类了
```$xslt
\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填写数据库信息
然后命令行执行
```$xslt
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
php rookies make:command Test
创建Controller
php rookie create:controller TestController
本作品采用《CC 协议》,转载必须注明作者和本文链接
php l框架,一个很简单的PHP框架lyue相关推荐
- Dubbo入门介绍---搭建一个最简单的Demo框架
Dubbo入门---搭建一个最简单的Demo框架 置顶 2017年04月17日 19:10:44 是Guava不是瓜娃 阅读数:320947 标签: dubbo zookeeper 更多 个人分类: ...
- 一个很简单的淘宝优惠券搜索助手 大家看看有没有用吧
一个很简单的淘宝优惠券搜索助手 大家看看有没有用吧 下载地址:http://pan.baidu.com/s/1skRHTDF 转载于:https://www.cnblogs.com/devgis/p/ ...
- 一个很简单的淘宝优惠券搜索助手 大家看看有没有用吧 下载地址:http://pan.baidu.com/s/1skRHTDF
一个很简单的淘宝优惠券搜索助手 大家看看有没有用吧 下载地址:http://pan.baidu.com/s/1skRHTDF
- 一个很简单的基于栈式过程虚拟机的实现,它运行目标平台【x86】的原生代码。
本文提供的 "栈式过程虚拟机" 的实现,挂在本人的 github 上面,对想要深入了解 "栈式过程虚拟机" 的人,它或许可以起到一个不错的作用,但是本人建议一般 ...
- python写一个很简单的Atm机系统,使用pickle模块和json模块来保存数据
我做的是一个很简单的Atm系统,很多都没约束条件 目的: 用面向对象思维来处理 运用文件的读写 文件的读写用pickle模块和json模块来处理 pickle模块: pickle模块处理数据功能很强大 ...
- html案例:模拟一个很简单的聊天框
html案例:模拟一个很简单的聊天框 实现的代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "htt ...
- go html ui,GoUI:一个非常简单的 GUI 框架
最近,我一直想开发一些桌面(主要是 Windows,但也可以考虑 MacOS 或 Linux)应用程序.虽然 Go 不是开发 UI 应用程序时首选语言,但是该语言的简单性和健壮性仍然使它成为我的首选语 ...
- 64位游戏找call_网络小游戏怎么修改技能满级,满血?教大家一个很简单的修改方法!...
最近去忙着给小弟培训,都忘记上来发文章了,刚好小弟找了个小游戏练练逆向数据分析,下面就给大家讲讲他是怎么做到修改数据后,达到无限满血,全技能升级完的. 首先介绍几个概念: 网络游戏的变态功能的一般实现 ...
- 一个很简单的问题:遍历int数组并删掉所有偶数
一开始想的很简单,使用for循环和if判断进行遍历,如果是偶数则remove.后来发现和arraylist记混了,数组删除的话必须依次向前移一位,然后去掉最后一位. int[] line = {1,2 ...
- php怎么实现简单的mvc框架,php实现简单的MVC框架实例
这篇文章主要介绍了php实现简单的MVC框架,较为详细的分析了php实现MVC框架的相关实现技巧与注意事项,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了php实现简单的MVC框架.分享给 ...
最新文章
- html5基础知识文档,HTML5基础知识(1)
- fastjson对json操作
- 金立云服务器维护,今天,咱们聊聊金立amigo的防盗功能!
- 安卓按钮设置背景颜色不管用_MIUI10新功能:时钟背景黑白自选、公交卡自定义时段唤起...
- android返回页面代码实现,Intent携带信息返回上一个界面实现基本信息的设置
- 【中国互联网江湖30年历史】再无风清扬,再有少年郎
- excel表格末尾添加一行_Excel2007:给excel表格添加边框线
- 科技论文写作课程笔记
- Windows 技术篇-cmd命令查看系统启动时间、操作系统信息、内存使用情况、电脑配置信息
- macbook键盘失灵_如何使用MacBook的键盘在所有设备上键入
- 李宏毅2021机器学习笔记——Local Minimum And Saddle Point
- Blender 2.8 白色背景的处理方式
- 《Java编程思想》读书笔记之第7章-复用类
- XMD DTD约束 实体学习X1 普通实体 参数实体 内部实体 外部实体 内置实体 解析实体 不解析实体 实体声明 实体引用 字符引用...
- 【Practical】随机过程
- 百度mp3下载链接解密
- android请求广告展示失败,玩咖优盟移动广告平台
- 透过现象看本质,HuntingNFT缘何具备成为爆款链游的潜力?
- 李银河:我想让自由和美丽把生命填满
- vue处理图片添加水印
热门文章
- 微信小程序电商实战-购物车(下)
- 已处理证书链,但是在不受信任提供程序信任的根证书中终止 - Windows 7安装.Net Framework 4.7.2时出现此问题
- C# List集合排序、去重方法小结
- 练字第一方案失败,转向第二方案
- 全网首发:制作LINUX安装软件包,要处理哪些系统目录和文件(2)
- IBM/ORACLE/EMC在银行业的重要性
- JAVA中两个数组比较可以使用Arrays.equals()
- 越南也自研5G设备,有这么容易?
- LINUX加载静态库so,取得函数地址并调用
- 吾智商低,对于VS的char实在是不知所云