Macaw هو جهاز توجيه PHP بسيط ومفتوح المصدر. إنه صغير جدًا (حوالي 150 LOC)، وسريع، ويحتوي على بعض أكواد المصدر المشروحة الرائعة. يسمح لك هذا الفصل بإدخاله في مشروعك والبدء في استخدامه على الفور.
إذا كان لديك Composer، فما عليك سوى تضمين Macaw باعتباره تابعًا للمشروع في composer.json
الخاص بك. إذا لم تقم بتثبيته فقط عن طريق تنزيل ملف ZIP واستخراجه إلى دليل مشروعك.
require: {
"noahbuscher/macaw": "dev-master"
}
أولاً، use
مساحة الاسم Macaw:
use NoahBuscher Macaw Macaw ;
الببغاء ليس كائنًا، لذا يمكنك فقط إجراء عمليات مباشرة على الفصل. إليك عالم الترحيب:
Macaw:: get ( ' / ' , function () {
echo ' Hello world! ' ;
});
Macaw:: dispatch ();
يدعم Macaw أيضًا عناوين URI لامدا، مثل:
Macaw:: get ( ' /(:any) ' , function ( $ slug ) {
echo ' The slug is: ' . $ slug ;
});
Macaw:: dispatch ();
يمكنك أيضًا تقديم طلبات لطرق HTTP في Macaw، لذا يمكنك أيضًا القيام بما يلي:
Macaw::get( ' / ' , function () {
echo ' I ' m a GET request! ' ;
});
Macaw::post( ' / ' , function() {
echo ' I'm a POST request! ' ;
});
Macaw::any( ' / ' , function() {
echo ' I can be both a GET and a POST request!';
});
Macaw::dispatch();
وأخيرًا، إذا لم يكن هناك مسار محدد لموقع معين، فيمكنك جعل Macaw يقوم بتشغيل رد اتصال مخصص، مثل:
Macaw:: error ( function () {
echo ' 404 :: Not Found ' ;
});
إذا لم تحدد رد اتصال خطأ، فسيقوم Macaw فقط بتكرار صدى 404
.
لإعلام الخادم بأن URI لا يشير إلى ملف حقيقي، قد تحتاج إلى استخدام أحد ملفات التكوين النموذجية.
في هذا العرض التوضيحي، لنفترض أن لدي مجلدًا يسمى وحدات التحكم مع ملف demo.php
الفهرس.php:
require ( ' vendor/autoload.php ' );
use NoahBuscher Macaw Macaw ;
Macaw:: get ( ' / ' , ' Controllersdemo@index ' );
Macaw:: get ( ' page ' , ' Controllersdemo@page ' );
Macaw:: get ( ' view/(:num) ' , ' Controllersdemo@view ' );
Macaw:: dispatch ();
التجريبي.php:
<?php
namespace Controllers ;
class Demo {
public function index ()
{
echo ' home ' ;
}
public function page ()
{
echo ' page ' ;
}
public function view ( $ id )
{
echo $ id ;
}
}
هذا مع تثبيت Macaw عبر الملحن.
الملحن.json:
{
"require": {
"noahbuscher/macaw": "dev-master"
},
"autoload": {
"psr-4": {
"" : ""
}
}
}
.htaccess (أباتشي):
RewriteEngine On
RewriteBase /
# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [QSA,L]
.هتكس (نجينكس):
rewrite ^/(.*)/$ /$1 redirect;
if (!-e $request_filename){
rewrite ^(.*)$ /index.php break;
}