Laravel 경로 파일 구분 방식

4538 단어 Laravel경로 파일
처음에 저 는 경로 그룹 방법 으로 파일 을 받 을 수 있다 는 것 을 생각 했 습 니 다.이것 이 바로 laravel 이 Route Service Provider 에서 경 로 를 나 누 는 방식 입 니 다.

<?php
namespace App\Providers;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Route;
class RouteServiceProvider extends ServiceProvider{
    protected $namespace = 'App\Http\Controllers';
    public function boot(){
        parent::boot();
    }
    public function map(){
        $this->mapApiRoutes();
        $this->mapWebRoutes();
    }
    protected function mapWebRoutes(){
        Route::middleware('web')
        ->namespace($this->namespace)
        ->group(base_path('routes/web.php'));
    }
    protected function mapApiRoutes(){
        Route::prefix('api')
        ->middleware('api')
        ->namespace($this->namespace)
        ->group(base_path('routes/api.php'));
    }
}
나 는 사용자 와 관련 된 경 로 를 users.php 라 는 파일 로 추상 화하 고 mapApiRoutes 를 mapUsers Routes 로 복사 하여 나의 users.php 파일 을 가리킨다.

public function map(){
    $this->mapApiRoutes();
    $this->mapWebRoutes();
    $this->mapUsersRoutes();
}
protected function mapUsersRoutes(){
    Route::prefix('api')
    ->middleware('api')
    ->namespace($this->namespace)
    ->group(base_path('routes/users.php'));
}
나 는 당신 이 무엇 을 생각 하고 있 는 지 알 고 있 습 니 다.분명히 이것 은 가장 좋 은 해결 방안 이 아 닙 니 다.왜냐하면 우리 가 새 파일 을 만들어 야 할 때마다 이전 처럼 등록 해 야 하기 때 문 입 니 다.그래서 나 는 이 최초의 생각 을 개선 해 야 했다.
나 는 전체 응용 프로그램의 공공 부분 을 단독 경로 파일 로 나 누고 우리 의 모든 경로 가 인증,방문객 과 공공 경로 의 범 위 를 초과 해 서 는 안 된다 고 생각 했다.
나 는 폴 더 의 구 조 를 다음 과 같이 최적화 시 켰 다.
├── routes  
│   ├── api   
│   │   ├── public
│   |   │   ├── users.php
│   │   ├── auth
│   |   │   ├── users.php
│   │   ├── guest
│   |   │   ├── users.php
언뜻 보기에,당신 은"응,그것 은 큰 변화 가 없 으 니,우 리 는 이 파일 들 을 비 추어 야 한다."라 고 생각 할 수도 있 습 니 다.그러나 실제로 우 리 는 phop 원생 이 제공 하 는 glob 라 는 함 수 를 이용 할 수 있 습 니 다.이것 은 상 자 를 열 면 바로 사용 할 수 있 는 해결 방안 입 니 다.왜냐하면 우 리 는 laravel 의 해결 방안 과 결합 하지 않 았 기 때 문 입 니 다.
glob 는 정규 를 받 고 우리 의 정규 와 일치 하 는 경로 에서 파일 이름 을 찾 을 수 있 습 니 다.따라서 우리 의 길 은 특정 폴 더 에서 조직 되 었 습 니 다.우 리 는 현재 이 폴 더 에서 모든 파일 을 찾 아 그 안에 등록 할 수 있 습 니 다.

<?php
namespace App\Providers;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Route;
class RouteServiceProvider extends ServiceProvider{
    protected $namespace = 'App\Http\Controllers';
    public function map(){
        $this->mapAuthRoutes();
        $this->mapGuestRoutes();
        $this->mapPublicRoutes();
    }
    protected function mapWebRoutes(){
        Route::middleware('web')
        ->namespace($this->namespace)
        ->group(base_path('routes/web.php'));
    }
    protected function mapAuthRoutes(){
        foreach (glob(base_path('routes/api/auth/*.php')) as $file) {
            Route::prefix('api')
            ->middleware(['api', 'auth:api'])
            ->group($file);
        }
    }
    protected function mapGuestRoutes(){
        foreach (glob(base_path('routes/api/guest/*.php')) as $file) {
            Route::prefix('api')
            ->middleware(['api', 'guest:api'])
            ->group($file);
        }
    }
    protected function mapPublicRoutes(){
        foreach (glob(base_path('routes/api/public/*.php')) as $file) {
            Route::prefix('api')
            ->middleware('api')
            ->group($file);
        }
    }
}
이 제 는 언제든지 새 파일 을 만 들 면 foreach 에서 찾 을 수 있 습 니 다.정규 일치(이 파일 은 해당 하 는 경로 에 있 고 PHP 확장자 가 있 기 때문에 정규 와 일치 합 니 다).정말 너무 경망스럽다!하지만 잠시 만 기 다 려 주세요.
이 서류 들 은 어떻게 등록 합 니까?
만약 에 귀하 가 laravel 의 생명 주 기 를 연구 한 적 이 있다 면 서비스 제공 자가 laravel 이 요청 한 생명 주기의 일부분 이라는 것 을 알 수 있 습 니 다.저 희 는 이 기능 을 이용 하여 저희 의 노선 을 동태 적 으로 등록 할 수 있 습 니 다.
이상 은 Laravel 경로 의 파일 구분 방식 에 대한 상세 한 내용 입 니 다.Laravel 경로 의 파일 구분 방식 에 관 한 자 료 는 저희 의 다른 관련 글 을 주목 하 십시오!

좋은 웹페이지 즐겨찾기