####

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

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相关推荐

  1. Dubbo入门介绍---搭建一个最简单的Demo框架

    Dubbo入门---搭建一个最简单的Demo框架 置顶 2017年04月17日 19:10:44 是Guava不是瓜娃 阅读数:320947 标签: dubbo zookeeper 更多 个人分类: ...

  2. 一个很简单的淘宝优惠券搜索助手 大家看看有没有用吧

    一个很简单的淘宝优惠券搜索助手 大家看看有没有用吧 下载地址:http://pan.baidu.com/s/1skRHTDF 转载于:https://www.cnblogs.com/devgis/p/ ...

  3. 一个很简单的淘宝优惠券搜索助手 大家看看有没有用吧 下载地址:http://pan.baidu.com/s/1skRHTDF

    一个很简单的淘宝优惠券搜索助手 大家看看有没有用吧 下载地址:http://pan.baidu.com/s/1skRHTDF

  4. 一个很简单的基于栈式过程虚拟机的实现,它运行目标平台【x86】的原生代码。

    本文提供的 "栈式过程虚拟机" 的实现,挂在本人的 github 上面,对想要深入了解 "栈式过程虚拟机" 的人,它或许可以起到一个不错的作用,但是本人建议一般 ...

  5. python写一个很简单的Atm机系统,使用pickle模块和json模块来保存数据

    我做的是一个很简单的Atm系统,很多都没约束条件 目的: 用面向对象思维来处理 运用文件的读写 文件的读写用pickle模块和json模块来处理 pickle模块: pickle模块处理数据功能很强大 ...

  6. html案例:模拟一个很简单的聊天框

    html案例:模拟一个很简单的聊天框 实现的代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "htt ...

  7. go html ui,GoUI:一个非常简单的 GUI 框架

    最近,我一直想开发一些桌面(主要是 Windows,但也可以考虑 MacOS 或 Linux)应用程序.虽然 Go 不是开发 UI 应用程序时首选语言,但是该语言的简单性和健壮性仍然使它成为我的首选语 ...

  8. 64位游戏找call_网络小游戏怎么修改技能满级,满血?教大家一个很简单的修改方法!...

    最近去忙着给小弟培训,都忘记上来发文章了,刚好小弟找了个小游戏练练逆向数据分析,下面就给大家讲讲他是怎么做到修改数据后,达到无限满血,全技能升级完的. 首先介绍几个概念: 网络游戏的变态功能的一般实现 ...

  9. 一个很简单的问题:遍历int数组并删掉所有偶数

    一开始想的很简单,使用for循环和if判断进行遍历,如果是偶数则remove.后来发现和arraylist记混了,数组删除的话必须依次向前移一位,然后去掉最后一位. int[] line = {1,2 ...

  10. php怎么实现简单的mvc框架,php实现简单的MVC框架实例

    这篇文章主要介绍了php实现简单的MVC框架,较为详细的分析了php实现MVC框架的相关实现技巧与注意事项,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了php实现简单的MVC框架.分享给 ...

最新文章

  1. html5基础知识文档,HTML5基础知识(1)
  2. fastjson对json操作
  3. 金立云服务器维护,今天,咱们聊聊金立amigo的防盗功能!
  4. 安卓按钮设置背景颜色不管用_MIUI10新功能:时钟背景黑白自选、公交卡自定义时段唤起...
  5. android返回页面代码实现,Intent携带信息返回上一个界面实现基本信息的设置
  6. 【中国互联网江湖30年历史】再无风清扬,再有少年郎
  7. excel表格末尾添加一行_Excel2007:给excel表格添加边框线
  8. 科技论文写作课程笔记
  9. Windows 技术篇-cmd命令查看系统启动时间、操作系统信息、内存使用情况、电脑配置信息
  10. macbook键盘失灵_如何使用MacBook的键盘在所有设备上键入
  11. 李宏毅2021机器学习笔记——Local Minimum And Saddle Point
  12. Blender 2.8 白色背景的处理方式
  13. 《Java编程思想》读书笔记之第7章-复用类
  14. XMD DTD约束 实体学习X1 普通实体 参数实体 内部实体 外部实体 内置实体 解析实体 不解析实体 实体声明 实体引用 字符引用...
  15. 【Practical】随机过程
  16. 百度mp3下载链接解密
  17. android请求广告展示失败,玩咖优盟移动广告平台
  18. 透过现象看本质,HuntingNFT缘何具备成为爆款链游的潜力?
  19. 李银河:我想让自由和美丽把生命填满
  20. vue处理图片添加水印

热门文章

  1. 微信小程序电商实战-购物车(下)
  2. 已处理证书链,但是在不受信任提供程序信任的根证书中终止 - Windows 7安装.Net Framework 4.7.2时出现此问题
  3. C# List集合排序、去重方法小结
  4. 练字第一方案失败,转向第二方案
  5. 全网首发:制作LINUX安装软件包,要处理哪些系统目录和文件(2)
  6. IBM/ORACLE/EMC在银行业的重要性
  7. JAVA中两个数组比较可以使用Arrays.equals()
  8. 越南也自研5G设备,有这么容易?
  9. LINUX加载静态库so,取得函数地址并调用
  10. 吾智商低,对于VS的char实在是不知所云