composer 包 slim使用案例,一个简单的路由解决方案

nginx配置文件修改

location / {
        try_files $uri /index.php$is_args$args;
    }

设置好nginx伪静态,把所有的请求方式都转向到index.php文件

然后在目录里建index.php文件

在目录里安装如下三个composer包

composer require slim/slim guzzlehttp/psr7 http-interop/http-factory-guzzle

然后打开index.php文件,修改内容为如下:

<?php

use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Slim\Factory\AppFactory;

require "vendor/autoload.php";

$app = AppFactory::create();

// Define app routes
$app->get(‘/hello/{name}‘, function (Request $request, Response $response, $args) {
    $name = $args[‘name‘];
    $response->getBody()->write("Hello, $name");
    return $response;
});
$app->get(‘/welcome/{name}‘, function (Request $request, Response $response, $args) {
    $name = $args[‘name‘];
    $response->getBody()->write("welcome, $name");
    return $response;
});
$app->get(‘/json‘,function (Request $request, Response $response){
    $query = $request->getQueryParams();

    $data = array(‘name‘ => $query[‘name‘] ?? ‘null‘, ‘age‘ => 40);
    $payload = json_encode($data);

    $response->getBody()->write($payload);
    return $response
        ->withHeader(‘Content-Type‘, ‘application/json‘);
});
$app->get(‘/form‘,function (Request $request, Response $response){
    $html = <<<EOT
<html>
<head>form demo
</head>
<body>
    <form action="/action" method="post" enctype="multipart/form-data">
        <input type="text" name="name" value="tu6ge" />
        <input type="text" name="language" value="php" />
        <input type="file" name="avatar" />
        <button type="submit" >submit</button>
    </form>
</body>
</html>
EOT;
    $response->getBody()->write($html);
    return $response;
});
$app->post(‘/action‘,function (Request $request, Response $response){
    $info = $request->getParsedBody();
    print_r($info);
    $files = $request->getUploadedFiles();
    foreach ($files as $file){
        $file->moveTo(‘./upload/‘.date(‘H-i-s‘).‘.txt‘);
    }
    $response->getBody()->write(‘file save success‘);
    return $response;
});

// Run app
$app->run();

输入对应的路由,比如/hello/tu6ge即可访问对应的内容

原文地址:https://www.cnblogs.com/tu6ge/p/11373347.html

时间: 2024-10-24 01:37:01

composer 包 slim使用案例,一个简单的路由解决方案的相关文章

PHP实现一个简单url路由功能

如果一个页面的内容呈现,需要根据url上传递的参数来进行渲染.很多时候可能是这样子写:xxx.com/xx?c=x&m=x& t=..,而我们看到的url往往是这样子的(以新浪微游戏的咖啡恋人为例) game.weibo.com/ilovecoffee….这种URL设计看上去比前一种更好一点:) 如果我们访问一下不存在的游戏应用,例如game.weibo.com/ilovecoffee222,则会输出如下的错误提示: game.weibo.com后面匹配到的项,指向了某个php页面,然后根

为Dynamics 365写一个简单程序实现解决方案一键迁移

关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复258或者20170627可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me . 在我们做项目的过程中,一般会涉及到多个Dynamics 365环境,一般包括一个开发环境.一个SIT环境,一个UAT环境和一个生产环境,经常涉及到解决方案从开发环境迁移到SIT环境,从开发环境迁移到UAT环境,从开发环境迁移到UAT环境等等.一般手工操作是先更改解决方案版本,保存后发布解决

一个简单粗暴的前后端分离方案

项目背景 刚刚参加完一个项目,背景:后端是用java,后端服务已经开发的差不多了,现在要通过web的方式对外提供服务,也就是B/S架构.后端专注做业务逻辑,不想在后端做页面渲染的事情,只向前端提供数据接口.于是协商后打算将前后端完全分离,页面上的所有数据都通过ajax向后端取,页面渲染的事情完全由前端来做.另外还有一个紧急的情况,项目要紧急上线,整个web站点的开发时间只有两周,两周啊!于是在这样的背景下,决定开始一次前后端完全分离的尝试. 之前开发都是同步渲染和异步渲染混搭的,有些东西可以有后

一个简单粗暴的前后端分离方案(转)

项目背景 刚刚参加完一个项目,背景:后端是用java,后端服务已经开发的差不多了,现在要通过web的方式对外提供服务,也就是B/S架构.后端专注做业务逻辑,不想在后端做页面渲染的事情,只向前端提供数据接口.于是协商后打算将前后端完全分离,页面上的所有数据都通过ajax向后端取,页面渲染的事情完全由前端来做.另外还有一个紧急的情况,项目要紧急上线,整个web站点的开发时间只有两周,两周啊!于是在这样的背景下,决定开始一次前后端完全分离的尝试. 之前开发都是同步渲染和异步渲染混搭的,有些东西可以有后

模拟搭建简单的路由环境

新司机要开车上路啦...... 这次模拟单间一个简单的路由环境,我使用了三个路由器,分别是R1.R2.R3;以及使用了两台主机为A.B:同时还需要路由器和主机都不在一个网段.那行,下面直接上图比较简单明了: 由上图可以分析出:A主机ip为100.0.0.100/16:R1第一个端口ip为100.0.0.200,说明A主机和R1第一个端口在同一个网段(以上ip纯属自己胡乱编的,只为了测试路由环境罢了):同理,下面的大家就可以直接脑补了...... 接下来分析完了,开始模拟搭建路由环境: ①打开五台

2.Lucene3.6.2包介绍,第一个Lucene案例介绍,查看索引信息的工具lukeall介绍,Luke查看的索引库内容,索引查找过程

 1  Lucen目录介绍 2  lucene-core-3.6.2.jar是lucene开发核心jar包 contrib  目录存放,包含一些扩展jar包 3  案例 建立第一个Lucene项目:lucene3_day1 (1)需要先将数据转换成为Document对象,每一个数据信息转换成为Field(String name, String value, Field.Store store, Field.Indexindex) (2)指定索引库位置Directorydirectory =

动手开发自己的第一个 composer 包

原文:http://blog.jayxhj.com/2016/05/basic-composer-package-development/ composer 是 PHP 的依赖管理工具,本篇文章就来说明如何构建一个包,并提交到 Packagist ,这样别人就可以方便地通过 composer 使用你的包了. 开发 composer 包有以下几个步骤: 初始化 composer.json 文件 定义命名空间及包名 实现包需要实现的功能 提交到 GitHub 在 Packagist 注册包 初始化

创建一个简单的银行程序包.........未完善,待续

2练习1:创建一个简单的银行程序包   练习目标-Java 语言中面向对象的封装性及构造器的使用. 任务 在这个练习里,创建一个简单版本的(账户类)Account类.将这个源文件放入banking程序包中.在创建单个帐户的默认程序包中,已编写了一个测试程序TestBanking.这个测试程序初始化帐户余额,并可执行几种简单的事物处理.最后,该测试程序显示该帐户的最终余额. 1. 创建banking 包 2. 在banking 包下创建Account类.该类必须实现上述UML框图中的模型. 声明一

利用原始套接字实现一个简单的采集网络数据包

//利用原始套接字实现一个简单的采集网络数据包,并进行反向解析IP,MAC地址#include <stdio.h>#include <sys/socket.h>#include <unistd.h>#include <sys/types.h>#include <linux/if_ether.h>#include <linux/in.h> #define BUFFER_MAX 2048 int main(int argc, char *