URL 경로를 읽고 경로 값을 구문 분석하므로 가능한 가장 빠른 방법(예: MVC 시스템 구현)으로 수동 또는 자동으로 해석될 수 있습니다.
다른 라이브러리와 달리 이 라이브러리는 종속성이 없으며 단일 클래스에 포함되어 있으므로 WordPress, Laravel, Drupal, 사용자 정의 PHP 프로젝트 등 모든 PHP 프로젝트와 호환됩니다.
이 라이브러리는 CoC Convention over Configuration을 기반으로 합니다. 상용구를 줄이지만 기능은 고정되어 있습니다. 이 라이브러리는 사용자 정의 "경로" 사용을 허용하지 않지만 거의 모든 경우를 다루므로 유연성을 희생하면서 성능과 유용성을 향상시킵니다.
다음 URL http://somedomain.dom/Customer/Update/2가 있다고 가정해 보겠습니다. 이 라이브러리는 이 URL을 처리하거나 메소드를 직접 호출할 수 있는 변수로 변환합니다.
Route.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 ' );
컨트롤러CustomerController.php 클래스
namespace cocacola controller ;
class CustomerController {
public function updateAction ( $ id = null , $ idparent = null , $ event = null ) {
echo " We want to update the customer $ id " ;
}
}
다음 작업을 수행한다고 가정해 보겠습니다.
사용자가 다음 웹사이트 http://somedomain.com/Customer/Insert에 전화하여 고객을 삽입하는 양식을 표시하려고 합니다.
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*
또는
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*
이 코드는 Customer 클래스 내에서 InsertActionGet (GET), InsertActionPost (POST) 또는 InsertAction (GET/POST) 메서드를 호출합니다.
호출된 메소드는 다음과 같이 작성됩니다.
class Customer {
public function insertAction ( $ id = "" , $ idparent = "" , $ event = "" ) {
// here we do our operation.
}
}
고객 번호 20을 업데이트 하고 다음 페이지로 전화할 수 있다고 가정해 보겠습니다.
http://somedomain.com/Customer/Update/20
여기서 20은 편집할 고객의 "$id"입니다(문자열의 숫자일 수 있음).
그리고 비즈니스 APPL 의 고객 번호 20을 업데이트하고 싶다면 어떻게 해야 할까요?
http://somedomain.com/Customer/Update/20/APPL
APPL이 ID 인 경우
이제 어떤 버튼을 클릭하거나 어떤 작업을 수행한다고 가정해 보겠습니다. _event 필드로 캡처할 수 있으며 $event 인수로 읽습니다. 이 변수는 GET 또는 POST를 통해 전송될 수 있습니다.
http://somedomain.com/Customer/Update/20/APPL?_event=클릭
참고: addPath() 및 fetchPath()를 사용하면 모듈이 자동으로 획득되므로 지정할 필요가 없습니다. 이제 우리 시스템이 모듈식이고 여러 고객(내부 고객, 외부 고객 등)이 있다고 가정해 보겠습니다.
$ route = new RouteOne ( ' . ' , null , true ); // true indicates it is modular.
또는
$ route = new RouteOne ( ' . ' , null ,[ ' Internal ' ]); // or we determine the module automatically. In this case, every url that starts with Internal
그 다음에
$ route -> fetch ();
$ route -> callObject ( ' somenamespace \ %2s% \ controller \ %1sController ' );
http://somedomain.com/Internal/Customer/Update/20/APPL?_event=클릭
그런 다음 첫 번째 결과는 모듈 이름( Internal )이며 somenamespaceInternalcontrollerCustomerController 클래스를 호출합니다.
작곡가는 eftec/ RouteOne 이 필요합니다.
리눅스:
vendor/bin/ RouteOne cli -init (if the binary does not work, then chage the permission to execution)
윈도우:
. v endor b in r outeonecli.bat -init
.htaccess 파일이 생성되고 Route.php 및 Route.php 파일은 기본 구성을 갖습니다.
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
나중에 이 파일에 코드를 추가하거나 편집할 수 있습니다.
<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>
웹 호스트가 FollowSymlinks 옵션을 허용하지 않는 경우 옵션 +SymLinksIfOwnerMatch로 바꿔보세요.
중요한 줄은 다음과 같습니다.
RewriteRule ^(.*)$ Route.php?req=$1 [L,QSA] # 호출할 라우터.
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;
}
}
중요한 줄은 다음과 같습니다.
try_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;
}
}
중요한 줄은 다음과 같습니다.
try_files $uri $uri/ /router.php?req=$document_uri&$query_string;
여기서 router.php는 라우터로 작동할 파일입니다. ?req=$1은 시스템이 "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
메모:
"req"와 다른 인수를 사용하려면 다음 코드를 사용하여 이를 변경할 수 있습니다.
$route->argumentName='새로운 인수';
1.21부터 미리 정의된 경로 대신 사용자 정의 경로를 사용할 수 있습니다. 권장되는 방법입니다. 다른 방법은 여전히 존재합니다.
통사론:
클리어패스()
정의된 모든 경로를 지웁니다.
통사론:
addPath($path, $name = null, 호출 가능 $middleWare=null)
fetchPath()를 사용하여 평가할 수 있는 경로를 추가합니다.
예:
$ 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 ;
});
메모:
사용할 경로를 결정하는 데 "{"가 사용되기 전 경로의 첫 번째 부분입니다.
예를 들어 "path/{controller}" 및 "path/{controller}/{id}"는 시스템에서 동일한 경로로 간주합니다.
매개변수 문자열 $path 경로(예: "aaa/{controller}/{action:default}/{id}")
여기서 기본값 은 선택적 기본값입니다.
매개변수 문자열|null $name(선택 사항), 경로 이름
매개변수 callable|null $middleWare 미들웨어에 사용되는 호출 가능 함수입니다.
함수의 첫 번째 인수는 호출 가능한 메서드여야 합니다.
다음 인수는 callObjectEx에 의해 정의된 인수여야 합니다.
(id,idparent,이벤트)
경로는 정적 위치로 시작할 수 있지만 경로의 나머지 부분은 변수({}로 묶임)로 정의하고 "/"로 구분해야 합니다.
변수 이름 뒤에 ":"를 써서 경로의 기본값을 설정할 수도 있습니다: {name:defaultvalue}
이름은 $this->currentPath를 사용하여 얻을 수 있습니다. 동일한 이름으로 이름을 추가하면 교체됩니다.
이름을 설정하지 않으면 자동 숫자가 사용됩니다.
$this->fetchPath()를 호출할 때도 이름이 반환됩니다.
예:
$ 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)
다른 경로를 정의할 수 있지만 일부 URL과 일치하는 경로의 첫 번째 부분만 사용됩니다. 'path/somepath/{id}'는 작동합니다. 'path/{id}/other'는 작동하지 않습니다.
통사론:
페치패스()
addPath에 의해 이전에 정의된 경로를 가져오고 경로의 이름(또는 번호)을 반환합니다. 찾지 못하면 false를 반환합니다.
예:
$ 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
쿼리 값(URL)을 가져옵니다.
참고: 이 쿼리에는 "req", "_event" 및 "_extra" 값이 포함되지 않습니다.
예:
// http://localhost/..../?id=hi
$ id = $ router -> getQuery ( " id " ); // hi
$ nf = $ router -> getQuery ( " something " , " not found " ); // not found
쿼리 값을 설정합니다.
예:
$ route -> setQuery ( " id " , " hi " );
$ id = $ router -> getQuery ( " id " ); // hi
신택스:
페치패스()
경로에서 값을 가져오면 값이 처리됩니다.
신탁스
callObjectEx($classStructure, $throwOnError, $method, $methodGet, $methodPost,$arguments,$injectArguments)
개체(예: Controller 개체)의 새 인스턴스를 만들고 메서드를 호출합니다.
참고: 이것은 this::callObject()의 고급 버전입니다.
이 메서드는 {}를 사용하여 다음 변수를 기반으로 값을 바꿉니다.
꼬리표 | 설명 |
---|---|
{제어 장치} | 컨트롤러의 이름 |
{행동} | 현재 작업 |
{이벤트} | 현재 이벤트 |
{유형} | 현재 경로 유형(ws,controller,front,api) |
{기준 치수} | 현재 모듈(모듈이 활성화된 경우) |
{ID} | 현재 아이디 |
{idparent} | 현재의 부모 |
{범주} | 현재 카테고리 |
{하위 카테고리} | 현재 하위 카테고리 |
{하위 카테고리} | 현재 하위 카테고리 |
예:
// 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');
현재 경로를 사용하여 객체 내부에서 메서드를 호출합니다.
예:
라우터:
$ 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
제어 장치:
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.**
}
}
결과:
URL | 호출된 메서드 |
---|---|
http://localhost/Customer/Green (GET) | GreenAction |
http://localhost/Customer/Green/20/30?_event=클릭(GET) | GreenAction($id=20, $idparent=30, $event='클릭') |
http://localhost/Customer/Green (POST) | GreenAction |
http://localhost/Customer/Blue(GET) | 블루액션GET |
http://localhost/Customer/Blue(POST) | 오류 |
http://localhost/Customer/Yellow (GET) | 오류 |
http://localhost/Customer/Yellow (POST) | 노란색ActionPOST |
http://localhost/Customer/Red(GET) | RedActionGET(RedAction보다 우선순위가 높습니다) |
http://localhost/Customer/Red(포스트) | 편집 |
http://localhost/고객/오렌지 | 오류 |
컨트롤러의 현재 이름을 사용하여 PHP 파일을 호출(포함)합니다.
통사론:
getHeader($key, $valueIfNotFound = null)
현재 헤더(있는 경우)를 가져옵니다. 값을 찾을 수 없으면 $valueIfNotFound를 반환합니다. $key는 항상 대문자로 변환됩니다.
예:
$ token = $ this -> getHeader ( ' token ' , ' TOKEN NOT FOUND ' );
통사론:
getBody($jsonDeserialize = false, $asAssociative = true)
요청 본문을 가져옵니다.
예:
$ 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]
트롤링 공간, 매개변수 또는 쿼리 없이 현재 기본 URL을 반환합니다.
참고 : 이 함수는 $_SERVER['SERVER_NAME']에 의존하며 최종 사용자가 수정할 수 있습니다.
후행 슬래시 없이 현재 서버를 반환합니다.
$ route -> getCurrentServer (); // http://somedomain
현재 서버 이름을 설정합니다. getCurrentUrl() 및 getCurrentServer()에서 사용됩니다.
참고: $this->setCurrentServer()가 설정되지 않은 경우 $_SERVER['SERVER_NAME']을 사용하며 사용자가 수정할 수 있습니다.
$ route -> setCurrentServer ( ' localhost ' );
$ route -> setCurrentServer ( ' 127.0.0.1 ' );
$ route -> setCurrentServer ( ' domain.dom ' );
클래스의 정보를 기반으로 (전체) URL을 가져옵니다.
$ 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
사용자 정의 값을 기반으로 URL을 작성합니다.
$ route -> url ( null , " Customer " , " Update " , 20 ); // Customer/Update/20
사용자 정의 값을 기반으로 URL(앞)을 작성합니다.
$ route -> url ( null , " Daily " , " Milk " , 20 ); // Daily/Milk/20
하위 도메인이 비어 있거나 www와 다른 경우 www.domain.com으로 리디렉션됩니다.
참고: localhost, TLD가 없는 도메인(netbios) 또는 ip 도메인에서는 작동하지 않습니다. 그것은 의도적인 것입니다.
참고: 이 코드를 리디렉션해야 하는 경우 코드 실행이 중지됩니다. 일반적으로 코드 상단에서 호출해야 합니다.
$ 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
페이지가 http로 로드되면 https로 리디렉션됩니다.
참고: localhost, TLD가 없는 도메인(netbios) 또는 ip 도메인에서는 작동하지 않습니다. 그것은 의도적인 것입니다.
참고: 이 코드를 리디렉션해야 하는 경우 코드 실행이 중지됩니다. 일반적으로 코드 상단에서 호출해야 합니다.
$ 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
하위 도메인이 www(예: www.domain.dom)인 경우 기본 도메인 domain.dom으로 리디렉션됩니다.
참고: localhost, TLD가 없는 도메인(netbios) 또는 ip 도메인에서는 작동하지 않습니다. 그것은 의도적인 것입니다.
참고: 이 코드를 리디렉션해야 하는 경우 코드 실행이 중지됩니다. 일반적으로 코드 상단에서 호출해야 합니다.
$ 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
필드 | 길 | 설명 | 예 |
---|---|---|---|
$argumentName | Apache .Htaccess 및 nginx에서 사용하는 인수의 이름 | $this-argumentName='req'; | |
$base | 기본 URL입니다. | $this->base=0; | |
$type | URL 유형(api,ws,controller 또는 front)입니다. | echo $this->type; // API | |
$모듈 | {기준 치수} | 현재 모듈입니다 | echo $this->모듈; |
$컨트롤러 | {제어 장치} | 컨트롤러입니다. | echo $this->컨트롤러; |
$action | {행동} | 그것은 행동입니다. | echo $this->action; |
$id | {ID} | 식별자입니다 | echo $this->id; |
$이벤트 | {이벤트} | 이벤트입니다(예: "버튼 클릭"). | echo$this->이벤트; |
$idparent | {idparent} | 현재 상위 ID입니다(있는 경우). | echo $this->idparent; |
$extra | {추가의} | 이벤트입니다(예: '버튼 클릭'). | echo $this->extra; |
$category | {범주} | 현재 카테고리입니다. '앞' 유형에 유용합니다. | echo $this->카테고리; |
$subcategory | {하위 카테고리} | 현재 하위 카테고리입니다. '앞' 유형에 유용합니다. | echo $this->하위 카테고리; |
$subsubcategory | {하위 카테고리} | 현재 하위 카테고리입니다. '앞' 유형에 유용합니다. | echo $this->하위 하위 카테고리; |
$identify | API 및 WS 경로를 식별하는 데 도움이 되는 연관 배열입니다. | $this->identify=['api'=>'apiurl','ws'=>'webservices','controller'=>'']; | |
$isPostBack | 페이지가 POST이면 true이고, 그렇지 않으면 false입니다. | if ($this->isPostBack) { ... }; | |
$동사 | {동사} | 현재 동사는 GET, POST, PUT 및 DELETE일 수 있습니다. | if ($this->verb) { ... }; |
예:
$ 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.
필드 | 설명 | 예 |
---|---|---|
$allowed동사 | 허용되는 동사 목록 | $this->allowedVerbs=['GET', 'POST', 'PUT', 'DELETE']; |
$allowedFields | callObjectEx() 에서 사용되는 허용 필드 목록 | $this->allowedFields=['controller', 'action', 'verb', 'event', 'type', 'module', 'id' , 'idparent','카테고리', '하위 카테고리', '하위 하위 카테고리']; |
화이트리스트 설정() | 화이트리스트가 포함된 연관 배열을 컨트롤러 , 액션 , 카테고리 , 하위 카테고리 , 하위 하위 카테고리 및 모듈 로 설정합니다. 설정하지 않으면(기본값은 null) 모든 항목이 허용됩니다. 현재는 컨트롤러 및 카테고리 에서만 작동합니다. | $this->setWhitelist('controller','구매','송장','고객'); $this->setWhitelist('controller',null) // 모든 컨트롤러를 허용합니다. |
메소드를 화이트리스트에 추가하면 다음 두 가지 작업이 가능합니다.
예를 들어:
// 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 구성을 생성하고 초기화하는 기본 CLI가 포함되어 있습니다. 바이너리 RouteOne cli는 Vendor/bin 폴더에 있습니다.
./vendor/bin/ RouteOne cli
라우터를 입력하고 Enter를 누르십시오.
라우터 메뉴에 다음 화면이 표시됩니다.
보류 중이란 작업이 보류 중이거나 구성할 항목이 필요함을 의미합니다.
완료되면 구성이 "ok"으로 표시됩니다.
이제 경로를 구성해 보겠습니다.