Laravel 라우팅에서 주석을 사용하는 방법

이 기사는?



라라벨의 라우팅은 web.php를 사용하는 것이 일반적이지만 LaravelCollective/annotations
이 기사는 주석에서 라우팅을 수행하는 이점과 그 방법을 요약합니다.

어노테이션으로 라우팅하는 이점



web.php를 사용한 라우팅은 1파일로 라우팅을 관리하는 것으로 일람성이 있어 보기 쉬운 반면, 여러 사람이 개발을 하려고 했을 때 web.php가 충돌하는 확률이 높아져 버립니다.
어노테이션을 사용하여 라우팅을 설명하는 파일을 구분하여 충돌을 줄일 수 있습니다.

어노테이션으로 라우팅하는 방법



전제



이 기사에서는 Laravel에서 프로젝트를 만들 수 있고 어떤 방식으로 배포하는 방법이 있다고 가정합니다.

Laravel 프로젝트 만들기



Laravel 프로젝트 만들기 명령


composer create-project laravel/laravel sample_laravel_annotation

배포해 보고 welcome 화면이 표시되는지 확인해 봅니다.
아래와 같이 welcome 화면이 표시되면 프로젝트 작성에 성공하고 있습니다.


Laravel Collective 설치



Laravel Collective 설치 명령


cd sample_laravel_annotation
composer require laravelcollective/annotations

Service Provider 만들기



Service Provider 만들기 명령


php artisan make:provider AnnotationsServiceProvider

위의 명령을 실행하면 app/Providers/AnnotationsServiceProvider.php가 생성됩니다.

Service Provider 편집



작성한 Service Provider를 기초로 아래와 같이 편집을 실시합니다.

app/Providers/AnnotationsServiceProvider.php
<?php

namespace App\Providers;

use Collective\Annotations\AnnotationsServiceProvider as ServiceProvider;

class AnnotationsServiceProvider extends ServiceProvider {

    /**
     * The classes to scan for event annotations.
     *
     * @var array
     */
    protected $scanEvents = [];

    /**
     * The classes to scan for route annotations.
     *
     * @var array
     */
    protected $scanRoutes = [];

    /**
     * The classes to scan for model annotations.
     *
     * @var array
     */
    protected $scanModels = [];

    /**
     * Determines if we will auto-scan in the local environment.
     *
     * @var bool
     */
    protected $scanWhenLocal = true;

    /**
     * Determines whether or not to automatically scan the controllers
     * directory (App\Http\Controllers) for routes
     *
     * @var bool
     */
    protected $scanControllers = true;

    /**
     * Determines whether or not to automatically scan all namespaced
     * classes for event, route, and model annotations.
     *
     * @var bool
     */
    protected $scanEverything = true;

}


Service Provider 등록



추가한 Service Provider를 config/app.php에 기재합니다.

config/app.php
      (中略)
    'providers' => [
      (中略)
      App\Providers\AnnotationsServiceProvider::class,
    ],
      (中略)

컨트롤러 작성



지금까지 준비가 되어 있기 때문에 실제로 주석을 달는 Controller를 작성합니다.
모처럼이므로 여러 개의 Controller를 만들어 라우팅할 수 있도록 합니다.

작성 명령


php artisan make:controller HogeController
php artisan make:controller FugaController

위를 실행하면 app/Http/Controllers/HogeController.phpapp/Http/Controllers/FugaController.php가 만들어집니다.

HogeController 편집 내용



HogeController를 아래와 같이 주석을 사용하여 편집합니다.

app/Http/Controllers/HogeController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HogeController extends Controller
{
  /**
   * @Get("/hoge")
   */
  public function index()
  {
    return 'hoge';
  }
}


FugaController 편집 내용



FugaController를 아래와 같이 주석을 사용하여 편집합니다.

app/Http/Controllers/FugaController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class FugaController extends Controller
{
  /**
   * @Get("/fuga")
   */
  public function index()
  {
    return 'fuga';
  }
}


이제 준비가 되었으므로 각각의 화면으로 전환해 보려고 합니다.

/hoge로 전환





/fuga로 전환





무사히 어노테이션을 사용하여 라우팅을 할 수있었습니다.

끝에



이 기사에서는 주석을 사용하여 라우팅을 수행하는 것을 메인에게 말하고 있기 때문에 단점은 언급하지 않았습니다만, 코멘트 아웃 부분에 주석이 있는 것은 이 기법을 모르는 사람으로부터 보면 직관적입니다. 아니기 때문에 이것이 기인한 버그가 일어나거나 하는 것은 아닐까라고도 생각했습니다.
사용할지 사용하지 않을지는 프로젝트 멤버의 스킬셋이나 인원수를 잘 생각한 후에 결정하는 것이 좋을 것이라고 생각합니다.

이번에 사용한 코드의 샘플은 아래에 배치합니다.
htps : // 기주 b. 코 m / 키하라 타카 히로 / 사 mp 〇

좋은 웹페이지 즐겨찾기