Ia membaca rute URL dan mem-parsing nilai jalur, sehingga dapat diinterpretasikan secara manual atau otomatis dengan cara tercepat (misalnya, untuk mengimplementasikan sistem MVC).
Tidak seperti perpustakaan lain, perpustakaan ini tidak memiliki ketergantungan, dan terkandung dalam satu kelas, sehingga kompatibel dengan proyek PHP apa pun, misalnya WordPress, Laravel, Drupal, proyek PHP khusus, dll.
Perpustakaan ini didasarkan pada Konvensi CoC tentang Konfigurasi . Ini mengurangi boilerplate tetapi memiliki fungsi tetap. Pustaka ini tidak mengizinkan penggunaan "rute" khusus tetapi mencakup hampir semua kasus, sehingga meningkatkan kinerja dan kegunaan sambil mengorbankan fleksibilitas.
Katakanlah kita memiliki URL berikutnya http://somedomain.dom/Customer/Update/2 Pustaka ini mengubah URL ini menjadi variabel yang dapat berupa proses atau pemanggilan langsung suatu metode.
rute.php
$ route = new RouteOne ( ' http://www.somedomain.dom ' );
$ route -> addPath ( ' api/{controller}/{action}/{id} ' );
$ route -> addPath ( ' {controller}/{action}/{id}/{idparent} ' );
$ route -> fetchPath ();
$ this -> callObjectEx ( ' cocacolacontroller{controller}Controller ' );
kelas controllerCustomerController.php
namespace cocacola controller ;
class CustomerController {
public function updateAction ( $ id = null , $ idparent = null , $ event = null ) {
echo " We want to update the customer $ id " ;
}
}
Katakanlah kita melakukan operasi berikutnya:
Seorang pengguna memanggil situs web berikutnya http://somedomain.com/Customer/Insert, dia ingin menunjukkan formulir untuk memasukkan pelanggan
use eftec RouteOne RouteOne ;
$ route = new RouteOne ( ' . ' , null , null ); // Create the RouteOne Class
$ route -> fetch (); // fetch all the input values (from the route, get, post and such).
$ route -> callObject ( ' somenamespace \ controller \ %sController ' ); // where it will call the class CustomerController*
atau
use eftec RouteOne RouteOne ;
$ route = new RouteOne ( ' . ' , null , null ); // Create the RouteOne Class
$ route -> fetch (); // fetch all the input values (from the route, get, post and such).
$ route -> callObjectEx ( ' somenamespace \ controller \ {controller}Controller ' ); // where it will call the class CustomerController*
Kode ini memanggil metode InsertActionGet (GET), InsertActionPost (POST) atau InsertAction (GET/POST) di dalam kelas Pelanggan
Metode yang dipanggil ditulis sebagai berikut:
class Customer {
public function insertAction ( $ id = "" , $ idparent = "" , $ event = "" ) {
// here we do our operation.
}
}
Misalkan kita ingin Update Nomor Pelanggan 20 , maka kita bisa menghubungi halaman berikutnya
http://somedomain.com/Customer/Update/20
di mana 20 adalah "$id" pelanggan yang akan diedit (bisa berupa sejumlah string)
Dan bagaimana jika kita ingin Update Pelanggan nomor 20 dari APPL bisnis
http://somedomain.com/Customer/Update/20/APPL
Dimana APPL adalah idparentnya
Sekarang, katakanlah kita mengklik suatu tombol, atau kita melakukan suatu tindakan. Itu bisa ditangkap oleh bidang _event , dan dibaca oleh argumen $event . Variabel ini dapat dikirim melalui GET atau POST.
http://somedomain.com/Customer/Update/20/APPL?_event=click
Catatan: Modul diperoleh secara otomatis jika Anda menggunakan addPath() dan mengambilPath(), jadi Anda tidak perlu menentukannya. Sekarang, katakanlah sistem kita bersifat modular, dan kita memiliki beberapa pelanggan (pelanggan internal, eksternal, dll.)
$ route = new RouteOne ( ' . ' , null , true ); // true indicates it is modular.
atau
$ route = new RouteOne ( ' . ' , null ,[ ' Internal ' ]); // or we determine the module automatically. In this case, every url that starts with Internal
Kemudian
$ route -> fetch ();
$ route -> callObject ( ' somenamespace \ %2s% \ controller \ %1sController ' );
http://somedomain.com/Internal/Customer/Update/20/APPL?_event=click
Kemudian, percabangan pertama adalah nama modul ( Internal ) dan memanggil kelas somenamespaceInternalcontrollerCustomerController
komposer memerlukan eftec/ RouteOne
Linux:
vendor/bin/ RouteOne cli -init (if the binary does not work, then chage the permission to execution)
jendela:
. v endor b in r outeonecli.bat -init
Ini akan membuat file .htaccess dan file rute.php dan rute.php akan memiliki konfigurasi default.
const BASEURL = " http://localhost " ; // Base url edit this value.
const BASEWEBNS = " eftec \ controller " ; // Base namespace (web) edit this value
const BASEAPINS = " eftec \ api " ; // Base namespace (api) edit this value
Nantinya, Anda dapat menambahkan atau mengedit kode di file ini.
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
DirectoryIndex route.php
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Send Requests To Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ route.php?req=$1 [L,QSA]
</IfModule>
Jika host web Anda tidak mengizinkan opsi FollowSymlinks, coba ganti dengan Opsi +SymLinksIfOwnerMatch.
Baris penting adalah:
RewriteRule ^(.*)$ rute.php?req=$1 [L,QSA] # Router yang akan dihubungi.
server {
listen 80;
server_name localhost;
root /example.com/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /router.php?req=$document_uri&$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ .php$ {
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /.(?!well-known).* {
deny all;
}
}
Baris penting adalah:
coba_files $uri $uri/ /router.php?req=$document_uri&$query_string;
server {
listen 80;
server_name localhost;
root c:/www;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /router.php?req=$document_uri&$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /.(?!well-known).* {
deny all;
}
}
Baris penting adalah:
coba_files $uri $uri/ /router.php?req=$document_uri&$query_string;
dimana router.php adalah file yang akan berfungsi sebagai router. ?req=$1 penting karena sistem akan membaca rute dari "req"
// router.php
$ route = new RouteOne (); // Create the RouteOne Class
$ route -> fetch (); // fetch all the input values (from the route, get, post and such).
$ route -> callObject ( ' somenamespace \ controller \ %sController ' ); // where it will call the class somenamespacecontrollerCustomerController
Catatan:
Jika Anda ingin menggunakan argumen yang berbeda dengan "req", Anda dapat mengubahnya menggunakan kode berikut:
$route->argumentName='newargument';
Sejak 1.21, dimungkinkan untuk menggunakan jalur khusus alih-alih jalur yang telah ditentukan sebelumnya. Ini adalah cara yang disarankan. Metode lain masih ada.
Sintaksis:
jalur yang jelas()
Itu menghapus semua jalur yang ditentukan
Sintaksis:
addPath($jalur, $nama = null,dapat dipanggil $middleWare=null)
Itu menambahkan jalur yang dapat dievaluasi menggunakan FetchPath()
Contoh:
$ this -> addPath ( ' api/{controller}/{action}/{id:0} ' , ' apipath ' );
$ this -> addPath ( ' /api/{controller}/{action}/{id:0}/ ' , ' apipath ' ); // "/" at the beginner and end are trimmed.
$ this -> addPath ( ' {controller}/{action}/{id:0} ' , ' webpath ' );
$ this -> addPath ( ' {controller:root}/{action}/{id:0} ' , ' webpath ' ); // root path using default
$ this -> addPath ( ' somepath ' , ' namepath ' ,
function ( callable $ next , $ id = null , $ idparent = null , $ event = null ) {
echo " middleware n" ;
$ result = $ next ( $ id , $ idparent , $ event ); // calling the controller
echo " endmiddleware n" ;
return $ result ;
});
Catatan:
Bagian pertama dari path, sebelum tanda "{" digunakan untuk menentukan path mana yang akan digunakan.
Contoh "path/{controller}" dan "path/{controller}/{id}", sistem akan menganggapnya sebagai jalur yang sama
parameter string $path Path, contoh "aaa/{controller}/{action:default}/{id}"
Dimana default adalah nilai default opsional.
parameter string|null $name (opsional), nama jalur
parameter callable|null $middleWare Fungsi callable yang digunakan untuk middleware.
Argumen pertama dari fungsi tersebut harus berupa metode yang dapat dipanggil
Argumen berikutnya harus berupa argumen yang ditentukan oleh callObjectEx
(id,idparent,acara)
Jalur bisa dimulai dengan lokasi statis namun jalur lainnya harus ditentukan oleh variabel (diapit oleh {}) dan dipisahkan oleh "/".
Anda juga dapat menetapkan nilai default untuk suatu jalur dengan menulis ":" setelah nama variabel: {name:defaultvalue}
Nama dapat diperoleh menggunakan $this->currentPath. Jika Anda menambahkan nama dengan nama yang sama, maka itu akan diganti.
Jika Anda tidak menetapkan nama, maka menggunakan autonumerik.
Nama tersebut juga dikembalikan ketika Anda memanggil $this->fetchPath()
Contoh:
$ this -> addPath ( ' {controller}/{id}/{idparent} ' );
$ this -> addPath ( ' myapi/otherfolder/{controller}/{id}/{idparent} ' );
$ this -> addPath ( ' {controller:defcontroller}/{action:defaction}/{id:1}/{idparent:2} ' );
// url: /dummy/10/20 =>(controller: dummy, id=10, idparent=20)
// url: /myapi/otherfolder/dummy/10/20 =>(controller: dummy, id=10, idparent=20)
Anda dapat menentukan jalur yang berbeda, namun jalur ini hanya menggunakan bagian pertama jalur yang cocok dengan beberapa URL. 'path/somepath/{id}' akan berfungsi 'path/{id}/other' tidak akan berfungsi
Sintaksis:
ambilJalur()
Ia mengambil jalur yang sebelumnya ditentukan oleh addPath, dan mengembalikan nama (atau nomor) jalur tersebut. Jika tidak ditemukan, maka hasilnya salah
Contoh:
$ route = new RouteOne ( ' http://www.example.dom ' );
$ route -> addPath ( ' {controller}/{id}/{idparent} ' , ' optionalname ' );
// if the url is : http://www.example.dom/customer/1/200 then it will return
echo $ route -> fetchPath (); // optionalname
echo $ route -> controller ; // customer
echo $ route -> id ; // 1
echo $ route -> idparent ; // 200
Itu mendapat nilai kueri (URL).
Catatan: Kueri ini tidak menyertakan nilai "req", "_event" dan "_extra"
Contoh:
// http://localhost/..../?id=hi
$ id = $ router -> getQuery ( " id " ); // hi
$ nf = $ router -> getQuery ( " something " , " not found " ); // not found
Ini menetapkan nilai kueri
Contoh:
$ route -> setQuery ( " id " , " hi " );
$ id = $ router -> getQuery ( " id " ); // hi
Sintaks:
ambilJalur()
Ambil nilai dari rute, dan nilai tersebut diproses.
Sintaks
callObjectEx($classStructure, $throwOnError, $method, $methodGet, $methodPost,$arguments,$injectArguments)
Ini menciptakan instance baru dari suatu objek (misalnya, objek Controller) dan memanggil metode tersebut.
Catatan: Ini adalah versi lanjutan dari ini::callObject()
Metode ini menggunakan {} untuk mengganti nilai berdasarkan variabel berikutnya:
Menandai | Keterangan |
---|---|
{pengendali} | Nama pengontrol |
{tindakan} | Tindakan saat ini |
{peristiwa} | Acara saat ini |
{jenis} | Jenis jalur saat ini (ws,controller,front,api) |
{modul} | Modul saat ini (jika modul aktif) |
{pengenal} | Identitas saat ini |
{idparent} | Orang tua id saat ini |
{kategori} | Kategori saat ini |
{subkategori} | Subkategori saat ini |
{subsubkategori} | Subsubkategori saat ini |
Contoh:
// controller example http://somedomain/Customer/Insert/23
$ this -> callObjectEx ( ' cocacolacontroller{controller}Controller ' );
// it calls the method cocacolacontrollerCustomer::InsertAction(23,'','');
// front example: http://somedomain/product/coffee/nescafe/1
$ this -> callObjectEx ( ' cocacolacontroller{category}Controller ' // the class to call
, false // if error then it throw an error
, ' {subcategory} ' // the method to call (get, post or any other method)
, null // the method to call (method get)
, null // the method to call (method post)
,[ ' subsubcategory ' , ' id ' ] // the arguments to call the method
,[ ' arg1 ' , ' arg2 ' ]); // arguments that will be passed to the constructor of the instance
// it calls the method cocacolacontrollerproduct::coffee('nescafe','1');
Panggil metode di dalam objek menggunakan rute saat ini.
Contoh:
Perute:
$ databaseService = new SomeDatabaseService ();
$ route = new RouteOne ();
$ route -> callObjectEx ( ' cocacolacontroller{controller}Controller ' // the class to call
, false // if error then it throw an error
, ' {action}Action ' // the method to call (get, post or any other method)
, ' {action}Action{verb} ' // the method to call (method get)
, ' {action}Action{verb} ' // the method to call (method post)
,[ ' id ' , ' idparent ' , ' event ' ] // the arguments to call the method
,[ $ databaseService , $ route ]); // (optional)arguments that will be passed to the constructor of the instance
Pengendali:
namespace cocacola controller ;
class CustomerController {
protected $ databaseService ;
protected $ route ;
public function __construct ( $ databaseService , $ route ) {
// optional: injecting services
$ this -> databaseService = $ databaseService ;
$ this -> route = $ route ;
}
// any action GET or POST
public function GreenAction ( $ id = "" , $ idparent = "" , $ event = "" ) {
}
// GET only action (optional)
public function BlueActionGET ( $ id = "" , $ idparent = "" , $ event = "" ) {
// **my code goes here.**
}
// POST only action (optional)
public function YellowActionPOST ( $ id = "" , $ idparent = "" , $ event = "" ) {
// **my code goes here.**
}
// GET only action (optional)
public function RedActionGET ( $ id = "" , $ idparent = "" , $ event = "" ) {
// **my code goes here.**
}
// any action GET or POST
public function RedAction ( $ id = "" , $ idparent = "" , $ event = "" ) {
// **my code goes here.**
}
}
Hasil:
url | metode yang disebut |
---|---|
http://localhost/Pelanggan/Hijau (DAPATKAN) | Aksi Hijau |
http://localhost/Pelanggan/Green/20/30?_event=klik (DAPATKAN) | GreenAction($id=20, $idparent=30, $event='klik') |
http://localhost/Pelanggan/Hijau (POST) | Aksi Hijau |
http://localhost/Pelanggan/Biru (DAPATKAN) | Aksi BiruGET |
http://localhost/Pelanggan/Biru (POST) | KESALAHAN |
http://localhost/Pelanggan/Kuning (DAPATKAN) | KESALAHAN |
http://localhost/Pelanggan/Kuning (POST) | KuningActionPOST |
http://localhost/Pelanggan/Merah (DAPATKAN) | RedActionGET (Memiliki prioritas di atas RedAction) |
http://localhost/Pelanggan/Merah (POST) | Redaksi |
http://localhost/Pelanggan/Orange | KESALAHAN |
Itu memanggil (menyertakan) file php menggunakan nama pengontrol saat ini
Sintaksis:
getHeader($kunci, $valueIfNotFound = null)
Itu mendapat header saat ini (jika ada). Jika nilainya tidak ditemukan, maka ia akan mengembalikan $valueIfNotFound. Catatan, $key selalu dikonversi ke huruf besar.
Contoh:
$ token = $ this -> getHeader ( ' token ' , ' TOKEN NOT FOUND ' );
Sintaksis:
getBody($jsonDeserialize = salah, $asAssociative = benar)
Itu mendapat isi permintaan.
Contoh:
$ body = $ this -> getBody (); // '{"id"=>1,"name"=>john}' (as string)
$ body = $ this -> getBody ( true ); // stdClass {id=>1,name=>john}
$ body = $ this -> getBody ( true , true ); // ["id"=>1,"name"=>john]
Mengembalikan url dasar saat ini tanpa spasi, paremter, atau kueri
Catatan : fungsi ini bergantung pada $_SERVER['SERVER_NAME'], dan dapat dimodifikasi oleh pengguna akhir
Ini mengembalikan server saat ini tanpa garis miring.
$ route -> getCurrentServer (); // http://somedomain
Ini menetapkan nama server saat ini. Ini digunakan oleh getCurrentUrl() dan getCurrentServer().
Catatan: Jika $this->setCurrentServer() tidak disetel, maka ia akan menggunakan $_SERVER['SERVER_NAME'], dan dapat dimodifikasi oleh pengguna.
$ route -> setCurrentServer ( ' localhost ' );
$ route -> setCurrentServer ( ' 127.0.0.1 ' );
$ route -> setCurrentServer ( ' domain.dom ' );
Ia mendapat url (lengkap) berdasarkan informasi di kelas.
$ route -> getUrl (); // http://somedomain/controller/action/id
$ route -> getUrl ( ' id=20 ' ); // http://somedomain/controller/action/id?id=20
$ route -> getUrl ( ' id=20 ' , true ); // http://somedomain/controller/action/id?id=20&field=20&field2=40
Itu membangun url berdasarkan nilai khusus
$ route -> url ( null , " Customer " , " Update " , 20 ); // Customer/Update/20
Itu membangun url (depan) berdasarkan nilai khusus
$ route -> url ( null , " Daily " , " Milk " , 20 ); // Daily/Milk/20
Jika subdomainnya kosong atau berbeda dengan www, maka subdomainnya dialihkan ke www.domain.com.
Catatan: Ini tidak berfungsi dengan localhost, domain tanpa TLD (netbios) atau domain ip. Itu memang disengaja.
Catatan: Jika kode ini perlu dialihkan, maka eksekusi kode akan dihentikan. Biasanya harus dipanggil di bagian atas kode
$ route -> alwaysWWW (); // if the domain is somedomain.dom/url, then it redirects to www.somedomain.dom/url
$ route -> alwaysWWW ( true ); // if the domain is http: somedomain.dom/url, then it redirects to https: www.somedomain.dom/url
Jika halaman dimuat sebagai http, maka halaman dialihkan ke https.
Catatan: Ini tidak berfungsi dengan localhost, domain tanpa TLD (netbios) atau domain ip. Itu memang disengaja.
Catatan: Jika kode ini perlu dialihkan, maka eksekusi kode akan dihentikan. Biasanya harus dipanggil di bagian atas kode
$ route -> alwaysHTTPS (); // http://somedomain.com ---> https://somedomain.com
$ route -> alwaysHTTPS (); // http://localhost ---> // http://localhost
$ route -> alwaysHTTPS (); // http://127.0.0.1 ---> // http://127.0.0.1
$ route -> alwaysHTTPS (); // http://mypc ---> // http://mypc
Jika subdomainnya adalah www (contoh www.domain.dom) maka dialihkan ke domain telanjang domain.dom
Catatan: Ini tidak berfungsi dengan localhost, domain tanpa TLD (netbios) atau domain ip. Itu memang disengaja.
Catatan: Jika kode ini perlu dialihkan, maka eksekusi kode akan dihentikan. Biasanya, ini harus dipanggil di bagian atas kode
$ route -> alwaysNakedDomain (); // if the domain is www.somedomain.dom/url, then it redirects to somedomain.dom/url
$ route -> alwaysNakedDomain ( true ); // if the domain is http: www.somedomain.dom/url, then it redirects to https: somedomain.dom/url
Bidang | jalur | Keterangan | Contoh |
---|---|---|---|
$argumentName | Nama argumen yang digunakan oleh Apache .Htaccess dan nginx | $this-argumentName='permintaan'; | |
$dasar | Ini adalah url dasar. | $ini->basis=0; | |
$tipe | Ini adalah jenis url (api,ws,controller atau front) | echo $ini->ketik; // api | |
$modul | {modul} | Ini adalah modul saat ini | echo $ini->modul; |
$pengontrol | {pengendali} | Itu pengontrolnya. | echo $ini->pengontrol; |
$aksi | {tindakan} | Itu aksinya. | gema $ini->tindakan; |
$id | {pengenal} | Itu pengenalnya | gema $ini->id; |
$acara | {peristiwa} | Itu acaranya (seperti "klik tombol). | echo$ini->acara; |
$idparent | {idparent} | Ini adalah ID induk saat ini (jika ada) | echo $ini->idparent; |
$ekstra | {tambahan} | Itu acaranya (seperti "klik tombol) | echo $ini->ekstra; |
$kategori | {kategori} | Kategori saat ini. Ini berguna untuk tipe 'depan' | echo $ini->kategori; |
$subkategori | {subkategori} | Subkategori saat ini. Ini berguna untuk tipe 'depan' | echo $ini->subkategori; |
$subkategori | {subsubkategori} | Sub-subkategori saat ini. Ini berguna untuk tipe 'depan' | echo $ini->subsubkategori; |
$identifikasi | Ini adalah array asosiatif yang membantu mengidentifikasi rute api dan ws. | $this->identify=['api'=>'apiurl','ws'=>'layanan web','controller'=>'']; | |
$isPostBack | itu benar jika halamannya POST, jika tidak salah. | if ($ini->isPostBack) { ... }; | |
$kata kerja | {kata kerja} | Kata kerja saat ini, bisa berupa GET, POST, PUT dan DELETE. | if ($ini->kata kerja) { ... }; |
Contoh:
$ this -> addPath ( ' portal/web/{controller}/{action:list} ' );
$ this -> fetchPath ();
var_dump ( $ this -action); // it shows the current action or the default value "list" if none.
Bidang | Keterangan | Contoh |
---|---|---|
$diizinkanVerba | Daftar dengan kata kerja yang diperbolehkan | $this->allowedVerbs=['GET', 'POST', 'PUT', 'DELETE']; |
$allowedFields | Daftar dengan bidang yang diizinkan digunakan oleh callObjectEx() | $this->allowedFields=['controller', 'action', 'verb', 'event', 'type', 'module', 'id' , 'idparent','category', 'subcategory', 'subsubcategory']; |
setDaftar Putih() | Ini menetapkan array asosiatif dengan daftar putih ke controller , action , Category , subcategory , subsubcategory dan module . Jika tidak disetel (nilai default nol), maka entri apa pun diperbolehkan. Saat ini hanya berfungsi dengan pengontrol dan kategori | $this->setWhitelist('controller','Pembelian','Faktur','Pelanggan'); $this->setWhitelist('controller',null) // mengizinkan pengontrol apa pun; |
Memasukkan suatu metode ke dalam daftar putih memungkinkan dua operasi:
Misalnya:
// Example, value not in the whitelist: someweb.dom/customer/list
$ this -> setWhiteList ( ' controller ' ,[ ' Product ' , ' Client ' ]);
$ this -> fetch ();
var_dump ( $ this -> controller ); // null or the default value
var_dump ( $ this -> notAllowed ); // true (whitelist error)
// Example, value in the whitelist but with the wrong case: someweb.dom/customer/list
$ this -> setWhiteList ( ' controller ' ,[ ' Customer ' ]);
$ this -> fetch ();
var_dump ( $ this -> controller ); // it shows "Customer" instead of "customer"
var_dump ( $ this -> notAllowed ); // false (not error with the validation of the whitelist)
// reset whitelist for controllers
$ this -> setWhiteList ( ' controller ' , null );
RouteOne berisi CLI dasar untuk membuat dan menginisialisasi konfigurasi. CLI RouteOne biner terletak di folder vendor/bin
./vendor/bin/ RouteOne cli
masuk ke router dan tekan enter.
Di menu router, akan muncul layar berikutnya:
Tertunda berarti operasi sedang menunggu untuk dilakukan, atau memerlukan sesuatu untuk dikonfigurasi.
Setelah selesai, konfigurasi akan ditandai sebagai "ok"
Sekarang, mari konfigurasikan jalurnya