学习swoft的第二天_注解

两盒软妹~` 提交于 2020-07-26 09:13:04

承接上文

第一天的时候,开启ws服务之后

php bin/swoft ws:start

可以通过ip加端口的方式进行访问

 

 

这是我们访问到的页面

我们知道要想学习一个新的框架,首先要知道的就是它的路由是怎么写的

文档上说,swoft框架使用的是注解,而不像laravel或者tp那样定义路由

先看一下 我们访问的首页是哪一个控制器中的哪一个方法

 

 这个就是我们访问到的控制器和方法,因为我们是访问的http服务,所以在http服务里面找,根据经验在home控制器中(猜)

我们可以测试一下

 

 然后再请求一次 记得重启服务

 

 这看起来像是一个错误,是说我们应该返回一个http的相应,却返回了一个整型,暂且不管结果,总之,这个方法就是首页访问到的方法

 

注解

然后我们看一下注解

注解路由应该是Java中最常用到的,对于纯php开发可能了解的不多

文档中说的比较简单

 

 

 

 首先就是要引入

use Swoft\Http\Server\Annotation\Mapping\Controller;
use Swoft\Http\Server\Annotation\Mapping\RequestMapping;

然后标注控制器 又叫类注解 需要在所有类注释后面

  

/**
 * Class Home
 *
 * @Controller(prefix="home")
 */

 

方法注解 位置在方法描述之后 其他注释之前

/**
     * 该方法路由地址为 /home/index
     *
     * @RequestMapping(route="/index", method="post")
     *
     * @param Request $request
     */

 

需要注意的是 注解的引号必须是双引号,单引号无效,报找不到路由的错误

完成注解之后需要重新启动服务

写个例子

新创建一个控制器 DemoController

<?php declare(strict_types=1);


namespace App\Http\Controller;


use Swoft\Http\Message\Response;
use Swoft\Http\Server\Annotation\Mapping\Controller;
use Swoft\Http\Server\Annotation\Mapping\RequestMapping;
use function context;



/**
 *Class DemoController
 *
 *
 * @Controller(prefix="demo")
 */
class DemoController
{
    /**
     *
     * @RequestMapping(route="baozi", method="post")
     *
     *@return Response
     */
    public function index(): Response
    {
        $response = context()->getResponse();
        return $response->withContent("Hello Swoft2.0");
    }
}

根据注解 这个路由是 demo/baozi  post请求方式

 

 至于请求与响应 在核心组件中的httpserver 中有说明

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!