Laravel 경로 파일 구분 방식
<?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 경로 의 파일 구분 방식 에 관 한 자 료 는 저희 의 다른 관련 글 을 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
단순 Laravel+Vue.js에서 VueUI를 사용하여 로그인 및 등록Laravel에는 웹 팩과 같은 Laravel-Mix가 있는데, 이를 이용해서 Laravel에 Vue.js를 실현할 수 있다. 이번에는 몇 가지 명령을 통해 간단하게 VueUI로 로그인하여 로그인을 할 수 있습니다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.