安装参照文档: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',
],//定义日志文件
],
);

最新文章

  1. Target-Action回调模式
  2. iOS7时代我们用什么来追踪和识别用户?
  3. jquery实现页面动态切换的方法--toggleClass(className)
  4. CAS认证原理图
  5. 存量数据处理结果查询.txt
  6. eclipse安装android sdk后工具栏没有图标的设置
  7. .net缓存应用与分析
  8. linux如何开机以命令行形式启动?
  9. url中去掉index.php,方便redirect()
  10. python 全栈开发,Day71(模型层-单表操作)
  11. 【Android】Android处理Home键方法小结
  12. [C++]“error C2712: 无法在要求对象展开的函数中使用__try”解决方案
  13. Asterisk 11 chan_sip.c: Failed to authenticate device 看不到IP的问题
  14. python 中的列表(list)
  15. max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
  16. TZOJ 4085 Drainage Ditches(最大流)
  17. Guava 的EventBus示例代码(简单笔记,后期补充)
  18. c# winform+wcf代理上网的处理
  19. (LeetCode)旋转数组
  20. ojdbc14.jar 放在kettle那个目录下面

热门文章

  1. C++进阶--静态初始化的惨败
  2. pyqt4 利用信号槽在子线程里面操作Qt界面
  3. Jenkins小试
  4. IIS性能优化篇
  5. 计时器setTimeout()
  6. selector的小箭头去除
  7. Redis 在线管理工具(phpRedisAdmin)介绍 两次git
  8. 猴哥来了-游戏开发记录17-微信排行榜bug
  9. MybatisUtil的使用,便于产生SqlSession
  10. C#对windows的IP网络测试(ping ip)