>  기사  >  PHP 프레임워크  >  ThinkPHP6 기반 주석 라우팅 + 인터페이스 문서 자동 생성 + 모의 테스트 데이터 자동 생성 도입

ThinkPHP6 기반 주석 라우팅 + 인터페이스 문서 자동 생성 + 모의 테스트 데이터 자동 생성 도입

藏色散人
藏色散人앞으로
2021-06-21 16:49:403200검색

다음 튜토리얼 칼럼인 thinkphp Framework에서는 ThinkPHP6 기반의 주석 라우팅 + 자동 인터페이스 문서 생성 + 자동 모의 테스트 데이터 생성에 대해 소개하겠습니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다!

ThinkPHP6 기반 주석 라우팅 + 자동 인터페이스 문서 생성 + 자동 테스트 데이터 생성

Author

zsw zswemail@qqcom

홈페이지 https://zsw.ink

github https://github.com/iszsw/ mock

gitee https://gitee.com/iszsw/mock

Use

1. Install

composer require iszsw/mock:dev-master

2. 테스트 코드를 추가하고 app/controller 디렉토리에 Test.php 파일을 추가하세요
<?php
namespace app\controller;

use app\BaseController;
use iszsw\mock\annotation\illustrate\AutoValidate;
use iszsw\mock\annotation\illustrate\Route;
use iszsw\mock\annotation\illustrate\Mock;
use iszsw\mock\annotation\illustrate\MockPack;
use iszsw\mock\annotation\illustrate\WikiItem;
use iszsw\mock\annotation\illustrate\WikiMenu;

/**
 * @WikiMenu("测试")
 * @package app\controller
 * Author: zsw zswemail@qq.com
 */
class Test extends BaseController
{

    /**
     * @Route("test", method="GET")
     * @WikiItem("首页", description="首页详情")
     *
     * @AutoValidate({"username":"require|chsAlpha"}, message={"username":"请输入用户名"})
     * @Mock("username", mode="request", title="用户名", example="name")
     * @Mock("name", mode="response", title="名字", example="name", description="文章ID")
     */
    public function index($username){
        return "hello " . $username;
    }

    /**
     * @Route("mock", method="GET")
     * @WikiItem("详情", description="文章详情")
     *
     * @Mock("id", title="ID", example="numberBetween", description="文章ID")
     * @MockPack("articles", mode="response", title="文章列表", description="文章列表", limit=5)
     * @Mock("id", mode="response", title="ID", example="randomDigitNotNull", description="文章ID")
     * @Mock("title", mode="response", title="标题", example="name")
     * @Mock("create_time", mode="response", title="创建时间", example={"date": {"Y-m-d", "now"}})
     * @Mock("content", mode="response", title="内容", example={"sentence": 10})
     * @Mock("image", mode="response", title="图片", example="randomDigit")
     * @MockPack("user", main=true, mode="response", title="用户", description="发布者信息", limit=0)
     * @Mock("username", mode="response", title="用户名", example="name")
     * @MockPack("user")
     * @MockPack("articles")
     * @Mock("page", mode="response", title="页码", example="randomDigitNotNull", description="当前页码")
     */
    public function mock(){}
}
3. 문서 리소스 파일 Vendor/iszsw/mock/src/static 폴더를 public
<br>如果路径不不是 /static 可以在config/mock.php配置文件中修改
에 복사하세요. 4.
注解路由:/test?username=zsw

测试数据:/mock?mock=1

接口文档:/wiki

Function Description

구성 파일 config/mock.php

1을 방문하세요. 라우팅 주석 모델 주석 자동 주입은 Tp6 공식 주석과 동일합니다

New AutoValidate 주석

@AutoValidate({"username":"require|chsAlpha"}, message={"username":"请输入用户名"})
2. 인터페이스 테스트 데이터 생성

MockPack 중첩 데이터 생성은 무제한 중첩을 지원합니다

@MockPack extends MockBase
    // 数据长度 0表示单层数据
    @var int limit 
    
    /*
     * 置顶 (limit > 1 时有效)
     * false:['fields'=>[["a"=>"b"], ["aa"=>"bb"]]]
     * true:[["a"=>"b"], ["aa"=>"bb"]]
     */
    @var boolean main
예:
/**
 * @MockPack("articles", mode="response", title="文章列表", description="文章列表", limit=3)
 * @Mock("title", mode="response", title="标题", example="name")
 * @Mock("content", mode="response", title="内容", example={"sentence": 10})
 *
 * @MockPack("user", main=true, mode="response", title="用户", description="发布者信息", limit=0)
 * @Mock("username", mode="response", title="用户名", example="name")
 * @MockPack("user")
 * 
 * @MockPack("articles")
 */
 
生成结果

{
    "articles": [{
        "title": "乔阳",
        "content": "Vero impedit et consequatur quasi doloribus dolores illum sit expedita doloremque fugiat esse deleniti quisquam.",
        "user": {
            "username": "方建明"
        }
    }, {
        "title": "蒙桂花",
        "content": "Iure explicabo officiis minima et impedit sunt dignissimos necessitatibus ratione animi nam aperiam dolorum.",
        "user": {
            "username": "谷致远"
        }
    }, {
        "title": "郑文",
        "content": "Minus cum unde exercitationem sunt laudantium eveniet voluptatem magni ut cum non.",
        "user": {
            "username": "宁丽娟"
        }
    }]
}

Mock 데이터 생성

@Mock extends MockBase
    /**
      * 自定义字符串 example="zsw"
      * Faker方法名 参考https://github.com/fzaninotto/Faker
      * 自定义方法名 \app\logic\Mock::name
      * example="方法名" || example={"方法名": {"参数1", "参数2"}}
      */
    @var string|array example
3. 인터페이스 생성
<?php
/**
 * @WikiMenu("测试")
 */
class Test extends BaseController
{
    /**
     * @Route("test", method="GET")
     * @WikiItem("首页", description="首页详情")
     * @Mock("name", mode="response", title="名字", example="name", description="名字")
     */
    public function index(){
        return "zsw";
    }
}
age reference

1

위 내용은 ThinkPHP6 기반 주석 라우팅 + 인터페이스 문서 자동 생성 + 모의 테스트 데이터 자동 생성 도입의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제