注釈を使用してルートを生成する


コメントが PHPDOC ルールに従って生成されている限り、貴重なルーティング情報を抽出できます

アノテーション ルーティング

ThinkPHP は、ルートを定義するためのアノテーションの使用をサポートしています (アノテーション ルーティングとも呼ばれます)。これは簡単なルート登録方法です (基本的なルート定義を完了できます)。デフォルトでは閉じられています。有効にする必要がある場合は、ルーティング設定ファイルに設定します。 :

// 开启注解路由
'route_annotation'       => true,

アノテーション ルーティングを使用する必要がある場合は、追加の拡張機能をインストールする必要があります:

composer require topthink/think-annotation

その後、メソッド アノテーションで直接定義するだけで済みます。例:

<?php
namespace app\controller;

class Index
{
    /**
     * @param  string $name 数据名称
     * @return mixed
     * @route('hello/:name')
     */
	public function hello($name)
    {
    	return 'hello,'.$name;
    }
}

@ Route('hello/:name') はアノテーション ルートの内容です。アノテーションの指定には必ず注意してください。それ以外の場合は、アノテーションがルート解析が失敗する可能性があるため、IDE を使用して標準化されたアノテーションを生成できます。 PHPStorm を使用する場合は、PHP 注釈プラグイン https://plugins.jetbrains.com/plugin/7320-php-annotations をインストールすることをお勧めします。これは、注釈の自動補完をサポートできます。

この方法で定義されたルートは、デバッグ モードでリアルタイムに有効になります。展開モードでは、optimize:route コマンドを使用してルーティング ルール ファイルを生成する必要があります。

@route(( は大文字と小文字が区別されます。route と () の間にスペースを入れることはできません。ルート定義はコメントの最後の段落に記述することをお勧めします。それ以外の場合は空行が入ります。

http://tp5.com/hello/thinkphp

ページ出力

hello,thinkphp

デフォルトで登録されているルーティング ルールは、すべてのリクエストをサポートします。リクエスト タイプ: 2 番目のパラメータで指定できます。リクエスト タイプ:

<?php
namespace app\controller;

class Index
{
    /**
     * @param  string $name 数据名称
     * @return mixed
     * @route('hello/:name','get')
     */
	public function hello($name)
    {
    	return 'hello,'.$name;
    }
}

定義する必要があるルーティング パラメータと変数ルールがある場合は、最後にメソッドを直接追加できます。例:

<?php
namespace app\controller;

class Index
{
    /**
     * @param string $name 数据名称
     * @route('hello/:name','get')
     * 	->https()
     * 	->pattern(['name' => '\w+'])
     * 	
     * @return mixed
     */
	public function hello($name)
    {
    	return 'hello,'.$name;
    }
}

ルーティング パラメーターと変数ルールの追加の最後に を追加する必要はないことに注意し、その後に続く他のコメントの間に空行があることを確認してください。クラス コメント (例:

<?php
namespace app\controller;

/**
 * @route('blog')
 */
class Blog
{
    public function index()
    {
    }

    public function read($id)
    {
    }

    public function edit($id)
    {
    }
}

ルーティング グループを定義する必要がある場合は、

<?php
namespace app\controller;

use think\annotation\route\Group;
use think\annotation\route\Route;

/**
 * @Group("blog")
 */
class Blog
{
    /**
     * @param  string $name 数据名称
     * @return mixed
     * @Route("hello/:name", method="GET")
     */
	public function hello($name)
    {
    	return 'hello,'.$name;
    }
}

を使用できます。現在のコントローラーの注釈ルーティングは、ブログ グループに自動的に追加されます。 blog/hello/:name のルーティング ルールが登録されます。このルーティング グループのパブリック パラメータを設定することもできます。例:

<?php
namespace app\controller;

use think\annotation\route\Middleware;
use think\annotation\route\Group;
use think\annotation\route\Route;
use think\middleware\SessionInit;

/**
 * @Group("blog",ext="html")
 * @Middleware({SessionInit::class})
 */
class Blog
{
    /**
     * @param  string $name 数据名称
     * @return mixed
     * @Route("hello/:name",method="GET")
     */
	public function hello($name)
    {
    	return 'hello,'.$name;
    }