Sederhana, cepat dan SANGAT fungsional. minasrouter adalah komponen rute PHP untuk proyek MVC! Itu dibuat untuk mengabstraksi kata kerja RESTfull
(GET, POST, PUT, PATCH, DELETE)
dan merendernya dengan cara yang sederhana dan mudah di pengontrol aplikasi.
minasrouter
bekerja dan memproses semua informasi secara terpisah, membuat proses lebih mudah bagi pengembang dan mempercepat pengembangan/kemajuan proyek.
Sederhana, cepat dan SANGAT fungsional. minasrouter adalah komponen rute PHP untuk proyek MVC! Ini dirancang untuk mengabstraksi kata kerja RESTfull (GET, POST, PUT, PATCH, DELETE) dan merendernya secara sederhana dan mudah di pengontrol aplikasi.
minasrouter bekerja dan memproses semua informasi secara terpisah, memfasilitasi proses bagi pengembang dan mempercepat pengembangan/kemajuan proyek.
(Yes, it really is a few minutes)
Dengan dua baris Anda mulai menggunakan rute!
Mungkin Anda termasuk orang yang belajar sambil menonton, Anda bisa mengakses folder contoh yang berisi contoh arsitektur folder bagaimana kita menggunakan minasrouter .
Anda dapat memeriksa semua tes yang dilakukan di sini. Menikmati!
minasrouter tersedia melalui Composer require
:
" require " {
"nicollassilva/ minasrouter " : " ^1.0 "
}
atau jalankan di terminal :
composer require nicollassilva/ minasrouter
Untuk mulai menggunakan minasrouter , semua manajemen navigasi harus dialihkan ke file rute default sistem Anda, yang akan menjalankan seluruh proses pemrosesan rute dan mengembalikan apa yang telah dikonfigurasi secara default. Konfigurasikan sesuai contoh di bawah dan sesuai dengan server Anda.
Untuk mulai menggunakan minasrouter , semua manajemen navigasi harus dialihkan ke file rute default sistem Anda, yang akan melakukan seluruh proses penanganan rute dan mengembalikan apa yang telah dikonfigurasi secara default. Konfigurasikan sesuai contoh di bawah dan sesuai dengan server Anda.
RewriteEngine on
Options All -Indexes
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} (www.)?localhost
RewriteRule (.*) https:// %{HTTP_HOST} [L,R=301]
RewriteCond %{REQUEST_URI} !public/
RewriteRule (.*) /public/$1 [L]
RewriteEngine On
# Options All -Indexes
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# URL Rewrite
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?route=/$1 [L,QSA]
# ## Do not use the settings below if you are using developing in a local environment, use only in production.
# # WWW Redirect
# RewriteCond %{HTTP_HOST} !^www. [NC]
# RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# # HTTPS Redirect
# RewriteCond %{HTTP:X-Forwarded-Proto} !https
# RewriteCond %{HTTPS} off
# RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
location / {
if ( $script_filename !~ "-f" ){
rewrite ^(.*)$ /index.php?route=/ $1 break;
}
}
Untuk memulai komponen:
<?php
require __DIR__ . " /../vendor/autoload.php " ;
use minasrouter Router Route ;
// The second argument is optional. It separates the Controller and Method from the string
// Example: "Controller@method"
Route:: start ( " http://yourdomain.com " , " @ " );
Route:: get ( " / " , function () {
// ...
});
// ... all routes here
// You will put all your routes before this function
Route:: execute ();
Metode:
Fungsi | Parameter | Parameter | Parameter |
---|---|---|---|
mendapatkan | Tali $uri | $panggilan balik | |
pos | Tali $uri | $panggilan balik | |
meletakkan | Tali $uri | $panggilan balik | |
tambalan | Tali $uri | $panggilan balik | |
menghapus | Tali $uri | $panggilan balik | |
cocok | Larik $httpVerbs | Tali $uri | $panggilan balik |
setiap | Tali $uri | $panggilan balik |
Contoh:
Route:: get ( ' /users ' , [ App Controllers User::class, ' index ' ]);
Route:: post ( ' /users ' , [ App Controllers User::class, ' store ' ]);
Route:: put ( ' /users/{id} ' , [ App Controllers User::class, ' update ' ]);
Route:: patch ( ' /users/{id} ' , [ App Controllers User::class, ' update ' ]);
Route:: delete ( ' /users/{id} ' , [ App Controllers User::class, ' delete ' ]);
// The router allows you to register routes that respond to any HTTP verb:
Route:: any ( ' / ' , function () {
// ...
});
// Sometimes you may need to register a route that responds to multiple HTTP verbs:
Route:: match ([ " GET " , " POST " ], " / " , function () {
// ...
});
Metode:
Fungsi | Parameter |
---|---|
nama | String $nama |
ke | String $nama |
Contoh:
Route:: get ( " /users/create " , function () {
// ...
})-> name ( " user.create " );
Route:: get ( " /users/2 " , function () {
// ...
})-> as ( " user.show " );
Route:: get ( " / " , function () {
// ...
})-> name ( " web.index " );
Route:: get ( " /user/{id} " , function ( $ id ) {
echo $ id ;
})-> name ( " user.show " );
Route:: get ( " /post/{id?} " , function ( $ id ) {
if (! $ id ) {
// ...
}
// ...
})-> name ( " post.show " );
Metode:
Fungsi | Parameter | Parameter |
---|---|---|
Di mana | Larik $params | |
dimanaParam | Rangkaian $param | Rangkaian $regex |
di manaNomor | Rangkaian $param | |
dimanaAlpha | Rangkaian $param | |
dimanaAlphaNumeric | Rangkaian $param | |
dimanaUuid | Rangkaian $param |
Contoh:
Route:: get ( " /user/{id} " , [ App Controllers UserController::class, " show " ])
-> name ( " user.show " )
-> where ([ " id " => " [0-9]+ " ]);
// whereParam is alias of where method
Route:: get ( " /profile/{slug} " , [ App Controllers UserController::class, " profile " ])
-> name ( " user.profile " )
-> whereParam ( " id " , " [0-9]+ " );
Route:: get ( " /book/{id} " , [ App Controllers BookController::class, " show " ])
-> name ( " book.show " )
-> whereNumber ( " id " );
Bekerja dengan middleware di sini cukup mudah, kita hanya perlu meneruskan nama lengkap kelas atau menetapkannya sebagai global, dan dari sana, kita menggunakan aliasnya.
CATATAN: Penting bagi Anda untuk menempatkan semua rute di bawah. Rute di atas kelas ini tidak akan memiliki middleware global.
Route:: globalMiddlewares ([
' isLogged ' => App Middlewares isLogged::class,
' isAdmin ' => App Middlewares isAdmin::class
]);
// ... all routes
Anda dapat menggunakan metode middleware untuk menetapkan middleware ke suatu rute.
Route:: get ( " /musics " , function () {
// ...
})-> middleware ( " isLogged " );
Route:: get ( " /musics " , function () {
// ...
})-> middleware ([ " isLogged " ]);
Anda dapat menetapkan beberapa middleware ke rute dengan meneruskan serangkaian nama middleware ke metode middleware.
Route:: get ( " /musics " , function () {
// ...
})-> middleware ( " first, second " );
Route:: get ( " /movies " , function () {
// ...
})-> middleware ([ " first " , " second " ]);
Saat menugaskan middleware, Anda juga dapat memberikan nama kelas yang sepenuhnya memenuhi syarat:
use App Middlewares VerifyCsrfToken ;
Route:: get ( " /series " , function () {
// ...
})-> middleware (VerifyCsrfToken::class);
Route:: get ( " /series " , function () {
// ...
})-> middleware ( App Middlewares VerifyCsrfToken::class);
Terkadang Anda membuat grup rute dengan middleware, tetapi Anda hanya ingin satu atau beberapa rute tanpa middleware tertentu, Anda bisa melakukannya.
Route:: middleware ([ ' auth ' , ' api ' ])-> group ( function () {
Route:: get ( ' / ' , function () {
// All middlewares will works in this route
});
Route:: get ( ' /no-api ' , function () {
// Only the auth middleware works here
})-> withoutMiddleware ( ' api ' );
});
Semua metode:
Fungsi | Parameter | ::fungsi | -> fungsi |
---|---|---|---|
ruang nama | String $namespace | Ya | Ya |
awalan | String $awalan | Ya | Ya |
nama | String $nama | Ya | Ya |
perangkat tengah | String $perangkat tengah | Ya | Ya |
Metode grup bisa disebut cara statis atau normal, jangan lupa memanggil fungsi grup untuk disisipkan sebagai rute di dalam penutupan.
Contoh:
Route:: name ( " admin. " )-> group ( function () {
Route:: get ( " / " , function () {
// admin.index
})-> name ( " index " );
});
Route:: prefix ( " admin/ " )-> group ( function () {
Route:: get ( " /index " , function () {
// http://localhost/admin/index
})-> name ( " index " );
});
Route:: namespace ( " AppControllers " )-> group ( function () {
Route:: get ( " /user/{id} " , [ " User " , " show " ])-> name ( " show " );
// AppControllersUser
});
Route:: middleware ( App Middlewares isLogged::class)-> group ( function () {
Route:: get ( " /user/{id} " , [ " User " , " show " ])-> name ( " show " );
});
Route:: namespace ( " AppControllersAdmin " )
-> middleware ([ " isLogged " , " isAdmin " ])
-> name ( " admin. " )
-> prefix ( " admin " )
-> group ( function () {
// ...
});
Anda dapat menggunakan rute dengan middleware individual dalam grup rute.
Route:: namespace ( " isLogged " )-> group ( function () {
Route:: get ( " /posts " , function () {
// ...
})-> middleware ( " isAdmin " );
// ...
});
Mungkin Anda menginginkan rute yang mengabaikan nama grup, Anda dapat menggunakan parameter kedua dari metode nama untuk itu.
Route:: name ( " admin. " )-> group ( function () {
Route:: get ( " /posts " , function () {
// name: app.posts
})-> name ( " app.posts " , true );
});
Metode:
Fungsi | Parameter | Parameter | Parameter |
---|---|---|---|
mengarahkan ulang | Tali $uri | String $pengalihan | Ke dalam $statusCode = 302 |
pengalihan permanen | Tali $uri | String $pengalihan |
Contoh:
// Returns 302 status code by default.
Route:: redirect ( " /here " , " /there " );
Route:: redirect ( " /here " , " /there " , 301 );
// permanentRedirect always returns 301
Route:: permanentRedirect ( " /here " , " /there " );
// You can return an existing route
Route:: redirect ( " /index " , " web.index " );
Rute cadangan bertanggung jawab ketika tidak ada rute yang terdaftar dengan alamat url tersebut. Setiap kali tidak ada rute yang diminta oleh pengguna, rute cadangan akan dipanggil.
Route:: fallback ( function () {
echo ' Route error! ' ;
// ...
});
CATATAN: Hati-hati jika Anda ingin mengalihkan ke rute yang ada, jika berisi argumen dinamis, itu akan mengembalikan seluruh regex dan akan menyebabkan kesalahan.
Berhati-hatilah saat Anda mengalihkan ke rute yang ada, karena jika rute tersebut memiliki argumen dinamis, maka seluruh regex akan dikembalikan dan kesalahan akan dikembalikan.
Setiap kali rute dipanggil dan metode Penutupan atau pengontrol dipanggil, Anda akan memiliki instance minasrouter HttpRequest sebagai parameter. Jika rute memiliki parameter dinamis (wajib atau opsional), parameter tersebut harus dilewati sebelum menerima instance Permintaan.
Fungsi | Parameter | Parameter |
---|---|---|
dapatkanParams | ||
jalur | ||
url | ||
Url penuh | ||
tajuk | Rangkaian $header | Tali $default |
memilikiHeader | Rangkaian $header | |
aku p | ||
pertanyaan | ?String $query | ?String $default |
semua | ?String $kecuali | |
dapatkanMetode | ||
adalahMetode | String $ metode yang diharapkan |
Parameter dinamis dari rute secara langsung diteruskan dalam metode bersama dengan instance Permintaan.
Contoh:
use minasrouter Http Request ;
Route:: get ( " / " , function ( Request $ request )) {
// ...
});
Route:: get ( " /user/{id} " , function ( $ id , Request $ request )) {
// ...
});
Route:: get ( " /posts/{slug?} " , function ( $ slug , Request $ request )) {
// ...
});
Route:: get ( " /book/{slug} " , function ( $ slug , Request $ request ) {
// Retrieving all dynamic parameters
print_r ( $ request -> getParams ());
});
Metode Permintaan adalah metode yang memiliki semua data formulir, parameter kueri, parameter rute dinamis, dan keseluruhan header permintaan.
Metode jalur mengembalikan informasi jalur permintaan. Jadi, jika permintaan masuk ditargetkan pada http://localhost/foo/bar , metode path akan mengembalikan foo/bar :
$ uri = $ request -> path ();
Untuk mengambil URL lengkap untuk permintaan masuk Anda dapat menggunakan metode url atau fullUrl . Metode url akan mengembalikan URL tanpa string kueri, sedangkan metode fullUrl menyertakan string kueri:
$ url = $ request -> url ();
$ urlWithQueryString = $ request -> fullUrl ();
Anda dapat mengambil header permintaan dari instance minasrouter HttpRequest menggunakan metode header. Jika header tidak ada pada permintaan, null akan dikembalikan. Namun, metode header menerima argumen opsional kedua yang akan dikembalikan jika header tidak ada pada permintaan:
$ value = $ request -> header ( " Header-Name " );
$ value = $ request -> header ( " Header-Name " , " default " );
Metode hasHeader dapat digunakan untuk menentukan apakah permintaan berisi header tertentu:
if ( $ request -> hasHeader ( " Header-Name " )) {
// ...
}
Metode bearerToken dapat digunakan untuk mengambil token pembawa dari header Otorisasi. Jika tidak ada header seperti itu, null akan dikembalikan.
$ token = $ request -> bearerToken ();
Metode ip dapat digunakan untuk mengambil alamat IP klien yang membuat permintaan ke situs web Anda:
$ ipAddress = $ request -> ip ();
Metode kueri hanya akan mengambil nilai dari string kueri:
$ id = $ request -> query ( " id " );
Jika data nilai string kueri yang diminta tidak ada, argumen kedua untuk metode ini akan dikembalikan:
$ developer = $ request -> query ( " developer " , " Nicollas " );
Anda dapat memanggil metode kueri tanpa argumen apa pun untuk mengambil semua nilai string kueri.
$ query = $ request -> query ();
Anda dapat mengakses queryString dan memasukkan data secara langsung, sebagai properti kelas Permintaan.
// http://localhost/?foo=bar
$ foo = $ request -> foo ;
// <input type="text" name="title" value=" minasrouter ">
$ title = $ request -> title ;
Anda dapat mengambil semua data masukan permintaan masuk sebagai array menggunakan metode all. Metode ini dapat digunakan terlepas dari apakah permintaan masuk berasal dari formulir HTML atau permintaan XHR. Jika Anda ingin membatalkan beberapa data, Anda dapat meneruskannya sebagai parameter kedua.
$ data = $ request -> all ();
// all, except csrf_token, page
$ data = $ request -> all ( " csrf_token, page " );
Metode getMethod akan mengembalikan kata kerja HTTP untuk permintaan tersebut. Anda dapat menggunakan metode isMethod untuk memverifikasi bahwa kata kerja HTTP cocok dengan string yang diberikan:
$ httpMethod = $ request -> getMethod ();
if ( $ request -> isMethod ( ' POST ' )) {
// ...
}