我估计我们所有人都遇到过这样的情况,即我们有一个写满路由的超大文件。不骗你,这让我很长一段时间几近抓狂,我不得不想个办法解决这个问题。 因此,这就是我最终用来构造路由文件的方法。
推荐教程:《laravel教程》
最初,我想到了利用路由组方法可以接收文件,这就是 laravel 在 RouteServiceProvider 处拆分路由的方式。
<?php namespace App\Providers; use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider; use Illuminate\Support\Facades\Route; class RouteServiceProvider extends ServiceProvider { /** * This namespace is applied to your controller routes. * * In addition, it is set as the URL generator's root namespace. * * @var string */ protected $namespace = 'App\Http\Controllers'; /** * Define your route model bindings, pattern filters, etc. * * @return void */ public function boot() { // parent::boot(); } /** * Define the routes for the application. * * @return void */ public function map() { $this->mapApiRoutes(); $this->mapWebRoutes(); // } /** * Define the "web" routes for the application. * * These routes all receive session state, CSRF protection, etc. * * @return void */ protected function mapWebRoutes() { Route::middleware('web') ->namespace($this->namespace) ->group(base_path('routes/web.php')); } /** * Define the "api" routes for the application. * * These routes are typically stateless. * * @return void */ protected function mapApiRoutes() { Route::prefix('api') ->middleware('api') ->namespace($this->namespace) ->group(base_path('routes/api.php')); } }
我将与用户有关的路由抽象到了一个名为 users.php 的文件中,并将 mapApiRoutes 复制为 mapUsersRoutes 并指向到我的 users.php 文件。
/** * Define the routes for the application. * * @return void */ public function map() { $this->mapApiRoutes(); $this->mapWebRoutes(); $this->mapUsersRoutes(); // } /** * Define the "api" routes for the application. * * These routes are typically stateless. * * @return void */ 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
乍一看,您可能会认为 “嗯,它并没有太大变化,我们还是需要去映射这些文件”。 但是,实际上我们可以利用 php 原生提供的名为 glob 的函数,这是一种开箱即用的解决方案,因为我们没有与 laravel 的解决方案耦合。
glob 接收一个正则,并且可以在与我们的正则匹配的路径下找到文件名。 因此,我们的路由是在特定文件夹下组织的,我们现在可以在这些文件夹下找到所有文件,并将它们注册到其中间件。
<?php namespace App\Providers; use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider; use Illuminate\Support\Facades\Route; class RouteServiceProvider extends ServiceProvider { /** * This namespace is applied to your controller routes. * * In addition, it is set as the URL generator's root namespace. * * @var string */ protected $namespace = 'App\Http\Controllers'; /** * Define the routes for the application. * * @return void */ public function map() { $this->mapAuthRoutes(); $this->mapGuestRoutes(); $this->mapPublicRoutes(); // $this->mapWebRoutes(); // } /** * Define the "web" routes for the application. * * These routes all receive session state, CSRF protection, etc. * * @return void */ protected function mapWebRoutes() { Route::middleware('web') ->namespace($this->namespace) ->group(base_path('routes/web.php')); } /** * Define the "api" routes for the application. * * These routes are typically stateless. * * @return void */ 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 请求的生命周期的一部分,我们可以利用此功能动态注册我们的路线。
就是这样!我希望您喜欢它。
原文地址:https://dev.to/secmohammed/how-to-separa...
译文地址:https://learnku.com/laravel/t/42989
Atas ialah kandungan terperinci 一种颗粒度很小的 Laravel 路由文件划分方式(翻译). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Jika anda mencari alternatif untuk Laravel, node.jswithexpress.js, Django, Rubyonrails dan ASP.Netcore adalah pilihan pilihan. 1.Node.jSwithExpress.js sesuai untuk projek yang memerlukan prestasi dan skalabilitas yang tinggi. 2.Django sesuai untuk projek yang memerlukan perkembangan pesat dan fungsi penuh. 3.RubyonRails sesuai untuk prototaip pesat dan pembangunan fleksibel. 4. ASP.Netcore sesuai untuk pembangunan lalu lintas dan lintas platform yang tinggi, tetapi lengkung pembelajaran adalah curam.

TheKeyChallengesinManagingDistributedTeamSarecommunicationGaps, TimeZonedifferences, andTaskmanagement.ProjectManagementToolShelPoverComethesechallengesby: 1) EnhancingCommunicationThoughplatformsLikesLackandMicteams, 2)

Kunci untuk memimpin pasukan terpencil ialah menggunakan teknologi, membina kepercayaan dan membangunkan strategi peribadi. 1) Gunakan alat komunikasi dan sistem pengurusan tugas untuk memastikan peruntukan tugas dan kemas kini status yang jelas. 2) Elakkan kebakaran melalui komunikasi tak segerak dan meningkatkan produktiviti. 3) Ahli pasukan insentif melalui kebenaran dan menetapkan matlamat yang jelas. 4) Perhatikan kepuasan dan kerjasama pasukan, dan menjalankan pemeriksaan komprehensif secara teratur.

Kaedah untuk memastikan bahawa ahli pasukan yang diedarkan mempunyai akses yang saksama kepada alat dan sumber termasuk: 1) menggunakan alternatif jalur lebar rendah, seperti video asynchronous atau kemas kini teks, untuk menyelesaikan masalah sambungan; 2) menubuhkan waktu kerja yang bertindih teras dan menyediakan waktu kerja yang fleksibel untuk menguruskan perbezaan zon waktu; 3) menyesuaikan diri dengan keperluan budaya yang berbeza melalui fungsi terjemahan dan latihan kesedaran budaya. Strategi ini membantu mewujudkan persekitaran kerja jauh yang inklusif dan cekap.

Forenhancingremotecollaboration, aninstantmessagingtoolmusthave: 1) kebolehpercayaan yang tidak konsistenmessagedelivery, 2) anintuitiveuserinterforeasynavigation, 3) real-timenotificationstostostayupdated, 4) seamlessfilesharingfierfientfientdocumentexchange

TheBiggestChallengeOfManagingDistributedTeamSiscommunication.toaddressthis, usetoolslikeslack, zoom, andgithub; setClearExpectations; FosterTrustandautonomy; pelaksanaanSynchronousworksworkpatterns; andintegratetaskmanagementWithCommunicationPlatflationPlatformsfeFiance

Versi terbaru Laravel telah meningkatkan keselamatan dengan ketara, termasuk: 1. Perlindungan CSRF yang dipertingkatkan, melalui mekanisme pengesahan token yang lebih mantap; 2. Perlindungan suntikan SQL yang lebih baik, melalui kaedah pembinaan pertanyaan yang dipertingkatkan; 3. Penyulitan sesi yang lebih baik untuk memastikan keselamatan data pengguna; 4. Sistem pengesahan yang lebih baik, menyokong pengesahan pengguna berbutir yang lebih baik dan pengesahan multi-faktor (MFA).

Tonavigateschedulingconflictsinaglobalworkforce, usetechnology, empati, andstrategicplanning: 1) prouptytoolsLikeworldtimeBuddyorcalendlyforscheduling; 2) rotatemeetingtimestoensurefairness;


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Pelayar Peperiksaan Selamat
Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.
