يقرأ مسار URL ويوزع قيم المسار، بحيث يمكن تفسيره يدويًا أو تلقائيًا بأسرع طريقة ممكنة (على سبيل المثال، لتنفيذ نظام MVC).
على عكس المكتبات الأخرى، لا تحتوي هذه المكتبة على تبعيات، وهي موجودة في فئة واحدة، لذا فهي متوافقة مع أي مشروع PHP، على سبيل المثال WordPress، Laravel، Drupal، مشروع PHP مخصص، إلخ.
تعتمد هذه المكتبة على اتفاقية CoC حول التكوين . إنه يقلل من النموذج المعياري ولكنه يحتوي على وظائف ثابتة. لا تسمح هذه المكتبة باستخدام "المسارات" المخصصة ولكنها تغطي جميع الحالات تقريبًا، لذا فهي تزيد من الأداء وسهولة الاستخدام بينما تضحي بالمرونة.
لنفترض أن لدينا عنوان URL التالي http://somedomain.dom/Customer/Update/2 تقوم هذه المكتبة بتحويل عنوان URL هذا إلى متغيرات يمكن معالجتها أو الاتصال المباشر بطريقة ما.
الطريق.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* يستدعي هذا الرمز الطريقة 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" للعميل المراد تعديله (يمكن أن يكون رقمًا لسلسلة)
وماذا لو أردنا تحديث العميل رقم 20 الخاص بالشركة APPL
http://somedomain.com/Customer/Update/20/APPL
حيث APPL هو المعرف
الآن، لنفترض أننا نقرنا على زر ما، أو قمنا ببعض الإجراءات. يمكن التقاطه بواسطة الحقل _event ، وقراءته بواسطة الوسيطة $event . يمكن إرسال هذا المتغير عبر GET أو POST.
http://somedomain.com/Customer/Update/20/APPL?_event=click
ملاحظة: يتم الحصول على الوحدات تلقائيًا إذا كنت تستخدم 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=click
بعد ذلك، التشعب الأول هو اسم الوحدة ( داخلي ) ويستدعي الفئة 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، فحاول استبداله بـ Options +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='newargument';
منذ الإصدار 1.21، أصبح من الممكن استخدام مسار مخصص بدلاً من المسار المحدد مسبقًا. إنها الطريقة الموصى بها. والطريقة الأخرى لا تزال موجودة.
بناء الجملة:
كليرباث ()
يقوم بمسح كافة المسارات المحددة
بناء الجملة:
addPath($path, $name = null,callable $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 (اختياري)، اسم المسار
المعلمة قابلة للاستدعاء|null $middleWare دالة قابلة للاستدعاء تستخدم للبرامج الوسيطة.
يجب أن تكون الوسيطة الأولى للدالة طريقة قابلة للاستدعاء
يجب أن تكون الوسائط التالية هي الوسائط المحددة بواسطة callObjectEx
(المعرف، المعرف، الحدث)
يمكن أن يبدأ المسار بموقع ثابت ولكن يجب تحديد بقية المسار بواسطة متغيرات (محاطة بـ {}) ومفصولة بـ "/".
يمكنك أيضًا تعيين قيمة افتراضية للمسار عن طريق كتابة ":" بعد اسم المتغير: {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، ويقوم بإرجاع اسم (أو رقم) المسار. إذا لم يتم العثور عليه، فإنه يعود كاذبة
مثال:
$ 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)
يقوم بإنشاء مثيل جديد للكائن (على سبيل المثال، كائن وحدة التحكم) ويستدعي الأسلوب.
ملاحظة: إنها نسخة متقدمة من this::callObject()
تستخدم هذه الطريقة {} لاستبدال القيم المستندة إلى المتغيرات التالية:
| علامة | وصف |
|---|---|
| {تحكم} | اسم وحدة التحكم |
| {فعل} | الإجراء الحالي |
| {حدث} | الحدث الحالي |
| {يكتب} | نوع المسار الحالي (ws,controller,front,api) |
| {الوحدة النمطية} | الوحدة الحالية (إذا كانت الوحدة نشطة) |
| {بطاقة تعريف} | المعرف الحالي |
| {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=click (GET) | GreenAction($id=20, $idparent=30, $event='click') |
| http://localhost/Customer/Green (POST) | GreenAction |
| http://localhost/Customer/Blue (GET) | BlueActionGET |
| http://localhost/Customer/Blue (POST) | خطأ |
| http://localhost/Customer/Yellow (GET) | خطأ |
| http://localhost/Customer/Yellow (POST) | YellowActionPOST |
| http://localhost/Customer/Red (GET) | RedActionGET (له الأولوية على RedAction) |
| http://localhost/Customer/Red (POST) | RedAction |
| http://localhost/Customer/Orange | خطأ |
يقوم باستدعاء (تضمين) ملف php باستخدام الاسم الحالي لوحدة التحكم
بناء الجملة:
getHeader($key, $valueIfNotFound = null)
يحصل على الرأس الحالي (إن وجد). إذا لم يتم العثور على القيمة، فسيتم إرجاع قيمة ifNotFound $. لاحظ أن المفتاح $ يتم تحويله دائمًا إلى أحرف كبيرة.
مثال:
$ 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.
ملاحظة: لا يعمل مع المضيف المحلي أو المجال بدون 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.
ملاحظة: لا يعمل مع المضيف المحلي أو المجال بدون 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
ملاحظة: لا يعمل مع المضيف المحلي أو المجال بدون 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'; | |
| قاعدة $ | إنه عنوان URL الأساسي. | $this->base=0; | |
| نوع $ | إنه نوع عنوان url (api أو ws أو وحدة التحكم أو الواجهة) | صدى $this->type; // واجهة برمجة التطبيقات | |
| وحدة $ | {الوحدة النمطية} | إنها الوحدة الحالية | صدى $this->module; |
| وحدة تحكم $ | {تحكم} | إنها وحدة التحكم. | صدى $this->controller; |
| $ الإجراء | {فعل} | إنه العمل. | صدى $this->action; |
| معرف $ | {بطاقة تعريف} | إنه المعرف | صدى $this->id; |
| حدث $ | {حدث} | إنه الحدث (مثل "انقر فوق الزر"). | echo$this->event; |
| $idparent | {idparent} | إنه معرف الوالدين الحالي (إن وجد) | echo $this->idparent; |
| $ اضافية | {إضافي} | إنه الحدث (مثل "النقر على الزر") | صدى $this->extra; |
| فئة $ | {فئة} | الفئة الحالية. إنه مفيد للنوع "الجبهة" | صدى $this->category; |
| فئة فرعية $ | {فئة فرعية} | الفئة الفرعية الحالية. إنه مفيد للنوع "الجبهة" | echo $this->subcategory; |
| فئة فرعية $ | {فئة فرعية} | الفئة الفرعية الحالية. إنه مفيد للنوع "الجبهة" | echo $this->subcategory; |
| تحديد $ | إنها مصفوفة ترابطية تساعد في تحديد مسار API وWS. | $this->identify=['api'=>'apiurl','ws'=>'webservices','controller'=>'']; | |
| $isPostBack | صحيح إذا كانت الصفحة POST، وإلا فهي خاطئة. | إذا ($this->isPostBack) { ... }; | |
| فعل $ | {فعل} | الفعل الحالي يمكن أن يكون GET وPOST وPUT وDELETE. | إذا ($هذا->فعل) { ... }; |
مثال:
$ 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. | مجال | وصف | مثال |
|---|---|---|
| $ المسموح به | قائمة بالأفعال المسموح بها | $this->allowedVerbs=['GET', 'POST', 'PUT', 'DELETE']; |
| الحقول المسموح بها $ | قائمة تحتوي على الحقول المسموح بها المستخدمة بواسطة callObjectEx() | $this->allowedFields=['controller', 'action', 'verb', 'event', 'type', 'module', 'id' ، 'idparent'،'category'، 'subcategory'، 'subcategory']؛ |
| مجموعة القائمة البيضاء () | يقوم بتعيين مصفوفة ترابطية مع القائمة البيضاء لوحدة التحكم والإجراء والفئة والفئة الفرعية والفئة الفرعية والوحدة النمطية . إذا لم يتم تعيينها (القيمة الافتراضية الخالية)، فإنها تسمح بأي إدخال. حاليًا يعمل فقط مع وحدة التحكم والفئة | $this->setWhitelist('controller','Purchase','Invoice','Customer'); $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/ RouteOne cliأدخل جهاز التوجيه واضغط على إدخال.
في قائمة جهاز التوجيه، سوف تظهر الشاشة التالية:

"معلق" يعني أن العملية معلقة للقيام بها، أو أنها تتطلب شيئًا ما لتكوينه.

بمجرد الانتهاء من ذلك، سيتم وضع علامة "موافق" على التهيئة
الآن، دعونا تكوين المسارات


