PHP轻量级框架 Slim 使用(一)
安装参照文档:https://wizardforcel.gitbooks.io/slim3-doc/content/1.html
项目目录

其中主要业务操作在app目录中完成,可根据需求划分 我这里分成了两个目录 controller (控制器目录) lib(类库目录),如有需要可以添加 model(模型层)

controller 下可以根据需求划分成 Admin Home Common(公共目录,里面存放一些公用函数)
入口文件
在项目public目录下创建index.php(入口文件) 和 .htaccess(路径重写)
在入口文件我实例化APP类,并注册路由
<?php
//导入自动加载
require '../vendor/autoload.php'; //导入配置文件
$setting = require '../config/config.php'; //创建实例,传入配置项
$app = new \Slim\App($setting); //增
$app->post('/', '\Controller\home\GoodsController:addGoods');
//查
$app->get('/', '\Controller\home\GoodsController:showGoods');
//条件查询
$app->get('/{id}', '\Controller\home\GoodsController:searchGoods');
//改
$app->post('/modify', '\Controller\home\GoodsController:modifyGoods');
//删
$app->delete('/{id}', '\Controller\home\GoodsController:deleteGoods'); $app->run();
注册路由需要传入两个参数,1. 路由地址 2. 回调函数
回调函数支持:
1. 普通函数
2. 匿名函数
3. 类调用
这里使用的是第三种方式
如果回调函数已类名调用,需要先注册自动加载:
在根目录下composer.json中添加
{
"require": {
"slim/slim": "^3.0",
"monolog/monolog": "^1.23"
},
"autoload": {
"files": ["app/controller/common/function.php"],
"psr-4":{
"Controller\\":"app/controller/",
"Lib\\":"app/lib/"
}
}
}
这个配置文件中有一个autoload段,用于自动加载
其中又包含主要的两个选项: files 和 psr-4。
files就是需要composer自动帮我们加载的函数库(不含类),只要在后面的数组中将函数库的文件路径写入即可。
psr-4顾名思义,是一个基于psr-4(http://www.php-fig.org/psr/psr-4/)规则的类库自动加载对应关系,只要在其后的对象中,以 “命名空间”: “路径” 的方式写入自己的类库信息即可。
修改完成后,需要composer install才能生效
回调函数中支持传入三个参数
请求/Request
第一个参数是一个 Psr\Http\Message\ServerRequestInterface 对象,表示当前的 HTTP 请求。 响应/Response
第二个参数是一个 Psr\Http\Message\ResponseInterface 对象,表示当前的 HTTP 响应。 参数数组/Arguments
第三个参数是一个关联数组,包含包含当前路由的命名占位符。
实例化 Slim\App 时可以传入一个参数,该参数可以是容器实例或者用于配置自动创建的默认容器的数组。
通常可以传入一个数组配置项
<?php
//配置文件
return array(
'settings' => [
'displayErrorDetails' => true,
'debug' => true, //开启debug模式
'logger' => [
'name' => 'slim-app',
'level' => Monolog\Logger::DEBUG,
'path' => __DIR__ . '/../logs/app.log',
],//定义日志文件
],
);
PHP轻量级框架 Slim 使用(一)的更多相关文章
- FluentData,它是一个轻量级框架,关注性能和易用性。
http://www.cnblogs.com/zengxiangzhan/p/3250105.html FluentData,它是一个轻量级框架,关注性能和易用性. 下载地址:FlunenData.M ...
- 初步了解学习flask轻量级框架,
关于flask我有话说 flask作为一个轻量级框架,它里面有好多扩展包需要下载,比较麻烦,而且有的时候flask需要在虚拟环境下运行,但是他的优点还是有滴 ,只要是用过Django的人,都会觉得fl ...
- DDD实战进阶第一波(四):开发一般业务的大健康行业直销系统(搭建支持DDD的轻量级框架三)
上一篇文章我们讲了经典DDD架构对比传统三层架构的优势,以及经典DDD架构每一层的职责后,本篇文章将介绍基础结构层中支持DDD的轻量级框架的主要代码. 这里需要说明的是,DDD轻量级框架能够体现DDD ...
- DDD实战进阶第一波(三):开发一般业务的大健康行业直销系统(搭建支持DDD的轻量级框架二)
了解了DDD的好处与基本的核心组件后,我们先不急着进入支持DDD思想的轻量级框架开发,也不急于直销系统需求分析和具体代码实现,我们还少一块, 那就是经典DDD的架构,只有了解了经典DDD的架构,你才能 ...
- 互联网轻量级框架SSM-查缺补漏第六天【级联+延迟加载特辑】
简言:本来这是昨天看的,但是因为想好好写一下[级联]这个东西,所以就看完之后今天来整理一下. 级联 1. 什么是级联 级联是一个数据库实体的概念.比如教师就需要存在学生与之对应,这样就有教师学生表,一 ...
- 互联网轻量级框架SSM-查缺补漏第八天(MyBatis插件plugin使用及原理)
简言:今天进行第八天的记录(只是写了八天).有的时候看的多,有的时候看的少,看的少的时候就攒几天一起写了.而今天这个插件我昨天写了一下午,下班没写完就回去了,今天把尾收了,再加上一个过程图方便下面原理 ...
- CQRS轻量级框架【CQRSlite】学习使用小记
前言 这几天在研究DDD和CQRS.快把我绕晕了.发现国外的好文质量还是挺高的.之所以先体验CQRSlite这个小框架,是因为看了一位大神写的文章:https://www.codeproject.co ...
- 互联网轻量级框架SSM-查缺补漏第一天
简言:工欲其事必先利其器,作为一个大四的准毕业生,在实习期准备抽空补一下基础.SSM框架作为互联网的主流框架,在会使用的基础上还要了解其原理,我觉得会对未来的职场会有帮助的.我特意的买了一本<J ...
- Mysql limit 优化,百万至千万级快速分页,--复合索引的引用并应用于轻量级框架
MySql 性能到底能有多高?用了php半年多,真正如此深入的去思考这个问题还是从前天开始.有过痛苦有过绝望,到现在充满信心!MySql 这个数据库绝对是适合dba级的高手去玩的,一般做一点1万篇新闻 ...
随机推荐
- 第一篇Docker博文
Docker组件 Docker引擎 Docker是一个客户端/服务器(C/S)架构的程序.Docker客户端只需向Docker服务器或叫守护进程发出请求,服务器将完成所有工作并返回结果. Docker ...
- HTTP API网关选择之一Kong介绍
为什么需要 API 网关 在微服务架构之下,服务被拆的非常零散,降低了耦合度的同时也给服务的统一管理增加了难度.如上图左所示,在旧的服务治理体系之下,鉴权,限流,日志,监控等通用功能需要在每个服务中单 ...
- eKingCloud 从 OpenStack 到 OpenInfra 演进之路
本内容首发于 2016/06/21 北京 OpenInfra 大会上本人的演讲 发文章要求至少150个字,那就把最后一页说明一下吧. 我前面介绍了我们的5大产品,包括企业的私有云架构和实践,包括企业数 ...
- 廖雪峰Java3异常处理-2断言和日志-3使用Commons Logging
Commons Logging是Apache创建的日志模块: 可以挂接不同的日志系统 可以通过配置文件指定挂接的日志系统 自动搜索并使用Log4j 如果Log4j不存在,使用JDK Logging(J ...
- 百度地图api公交路线,IE下跳转百度地图后中文变成乱码的解决办法
百度开放的公交路线的链接,IE跳转会出现中文变成乱码的问题.如图: //创建InfoWindow function createInfoWindow() { var desDiv = []; desD ...
- js多次触发事件,在一定延迟内只执行一次 (事件累加)
js多次触发事件,在一定延迟内只执行一次的案例: <!DOCTYPE html> <html> <head> <meta charset="UTF- ...
- Linux下的文件操作——基于文件描述符的文件操作(2)
文件描述符的复制 MMAP文件映射 ftruncate修改文件大小 文件描述符的复制 系统调用函数dup和dup2可以实现文件描述符的复制,经常用来重定向进程的stdin(0), stdout(1 ...
- git遇到的问题之“Please make sure you have the correct access rights and the repository exists.”
对于git的提交一直很小心翼翼,感觉一不小心就会踩到莫名的坑. 这不, 某天commit 就遇到了On branch master nothing to commit (working directo ...
- eclipse调试的时候怎么后退?
原文转载至:https://blog.csdn.net/qq_21262611/article/details/52121270 个人分类: myeclipse 前些天和同事交流调试技巧时,知道了 ...
- MySQL查询表的所有列名,用逗号拼接
问题场景 在MySQL中,需要以逗号拼接一个表的所有字段 sql语句 SELECT GROUP_CONCAT(COLUMN_NAME SEPARATOR ",") FROM inf ...