تم تصميم AIS Framework لتكون بسيطة وفعالة ، مما يسمح للمطورين ببناء ونشر التطبيقات بسرعة. تعمل بنيةها على تعزيز التعليمات البرمجية النظيفة والقابلة للصيانة ، مما يجعلها خيارًا رائعًا لكل من المبتدئين والمطورين ذوي الخبرة الذين يبحثون عن حل قوي وقابل للتطوير.
استنساخ ، ثم استخدم:
git clone https://github.com/titan2420/ais.git
تم تصميم بنية AIS مع البساطة في جوهرها. تسهل هذه البساطة فهمًا بديهيًا للنظام ، مما يسهل على المطورين التفاعل مع الإطار وتعديله. من خلال تقليل التعقيد ، يضمن AIS أن المطورين يمكنهم التركيز أكثر على تطوير الميزات بدلاً من المصارعة مع الإطار نفسه.
---- app
-------- core
-------- controller
-------- model
-------- view
---- public
-------- js
-------- css
-------- img
في إطار عمل AIS ، يتم تعريف الطرق باستخدام مجلد مباشر وهيكل ملف في مجلد وحدة التحكم. يمثل كل مجلد شريحة مسار محتملة ، ويمكن الوصول إلى كل ملف داخل هذه المجلدات كنقطة نهاية. على سبيل المثال:
---- app
-------- controller
------------ home.php (Accessible via /)
------------ user
---------------- home.php (Accessible via /user/)
---------------- transactions.php (Accessible via /user/transactions)
---------------- edit-profile.php (Accessible via /user/edit-profile)
يسمح هذا الهيكل بتخريب عناوين URL بسهولة إلى وحدات التحكم المقابلة لها ووجهات النظر ، مما يؤدي إلى تبسيط عملية التوجيه.
هناك مهنة واضحة للمعالجة والمعالجة المسبقة في AIS لمنع تكرار الكود وجعل الكود أكثر قابلية للصيانة.
ألق نظرة على هذا المثال:
---- app
-------- controller
------------ home.php
------------ middleware.php
------------ user
---------------- home.php
---------------- preprocess.php
---------------- postprocess.php
عندما يأتي العميل إلى /user/ ، سيتم اتخاذ الخطوات التالية:
controller/middleware.php .controller/user/preprocess.php .controller/user/home.php .controller/user/postprocess.php .يتيح التوجيه الديناميكي في إطار AIS أنماط URL المرنة التي تتكيف مع الطلبات الواردة ديناميكيًا. بدلاً من وجود بنية عنوان URL ثابت ، يستخدم التوجيه الديناميكي أنماطًا يمكن أن تتطابق مع مسارات URL المتعددة. إليك كيف تعمل:
---- app
-------- controller
------------ user
---------------- dynamic.php (Accessible via /user/{value})
على سبيل المثال ، إذا تم تقديم طلب إلى /user/123 ، فسيقوم نظام التوجيه الديناميكي بتفسير 123 كمعلمة ومعالجته باستخدام وحدة تحكم user/dynamic.php بواسطة $link_vars .
<?php
// controller/user/dynamic.php
echo " User id: " . $ link_vars [ 0 ]; // User id: 123
?>يمكنك استخدام بنية الدليل للتوجيه الديناميكي أيضًا ، على سبيل المثال:
---- app
-------- controller
------------ user
---------------- dynamic
-------------------- dynamic
------------------------ home.php (Accessible via /user/{value[0]}/{value[1]})
------------------------ open.php (Accessible via /user/{value[0]}/{value[1]}/open)
-------------------- home.php (Accessible via /user/{value[0]})
-------------------- edit.php (Accessible via /user/{value[0]}/edit)
على سبيل المثال ، إذا تم تقديم طلب إلى /user/123/AIS-Project ، فسيقوم نظام التوجيه الديناميكي بتفسير 123 كمعلمة ومعالجته باستخدام وحدة تحكم user/dynamic.php بواسطة $link_vars .
<?php
// controller/user/dynamic/dynamic/open.php
<<<<<<< HEAD
echo " Opening project: " . $ link_vars [ 1 ] . " of " . $ link_vars [ 0 ] . " user. " ;
=======
echo " Opening project: " . $ link_vars [ 1 ] . " of " . $ link_vars [ 0 ] . " user. " ; // Opening AIS-Project of 123 user.
>>>>>>> 0 bee68c121c4e091084a9bf093779bfe647b757d
?> يمكنك تحميل طريقة عرض باستخدام وظيفة view(view_path, data, options) .
<?php
// controller/user/home.php
$ user = database:: select ( ' users ' , ' * ' , [ ' id ' => $ _SESSION [ ' user_id ' ]]);
view ( ' user/home ' , [ ' user ' => $ user ], [ ' title ' => ' Dashboard ' ]);
?> إذا كان هناك layout.php ، سيتم تضمينه في العرض تلقائيًا.
---- app
-------- view
------------ layout.php
------------ home.php
------------ user
---------------- home.php
---------------- transactions.php
---------------- edit-profile.php
سوف تستخدم بيانات المستخدم في /user/home .
<?php
// view/user/home.php
echo " Welcome, " . $ user [ ' name ' ] . " ! " ;
?> يمكنك بسهولة إنشاء واجهات برمجة التطبيقات باستخدام مجموعة أدوات AIS.
<?php
// controller/api/user/get-users.php
$ users = database:: select ( ' users ' , ' * ' , [ ' LIMIT ' => 1 ]);
response ( $ users );
?>سيكون الإخراج بتنسيق JSON.
{
"meta" : {
"status" : " SUCCESS "
},
"data" : [
{
"id" : 1 ,
"name" : " John Doe "
}
]
}يمكنك بسهولة إنشاء أوامر CLI باستخدام مجموعة أدوات AIS.
<?php
// controller/_cli/jobs/deactivate-users.php
$ inactive_users = database:: select ( ' users ' , ' * ' , [ ' active ' => 1 ]);
. . .
cout ( " Deactivated users: " . count ( $ inactive_users ));
?>يمكنك تشغيله باستخدام هذا الأمر:
php index.php -r jobs/deactivate-users
في AIS ، من المفضل عدم استخدام نماذج لسيمبيليتي. ومع ذلك ، في وحدات التحكم ، يمكنك تحميل النماذج باستخدام وظيفة model(model_path) عند الحاجة.
في AIS ، النماذج بسيطة وسهلة الاستخدام. وهي موجودة في مجلد app/model وتستخدم للتفاعل مع قاعدة البيانات.
<?php
// controller/user/home.php
model ( ' user ' );
// or
require MODEL . ' user.php ' ;
$ user = getUser ( $ _SESSION [ ' user_id ' ]);
view ( ' user/home ' , [ ' user ' => $ user ], [ ' title ' => ' Dashboard ' ]);
?>يستخدم AIS إصدارًا مخصصًا من MEDOO كجهاز قاعدة البيانات. من السهل الاستخدام وسهل الفهم.
<?php
// model/user.php
function getUser ( $ user_id ) {
return database:: select ( ' users ' , ' * ' , [ ' id ' => $ user_id ]);
}
function activateUser ( $ user_id ) {
return database:: update ( ' users ' , [ ' active ' => 1 ], [ ' id ' => $ user_id ]);
}
. . .
?> فقط لا تجعلها معقدة!
القاعدة AIS 1: من أجل البساطة ، وليس لاستخدام فئات لوحدات التحكم والنماذج لضمان تطبيقات سهلة.
القاعدة 2: من أجل البساطة ، كل ملف هو طلب واحد فقط ، مما يضمن أن تظل الملفات صغيرة ويمكن التحكم فيها.
القاعدة 3: من أجل البساطة ، لا حاجة لتحديد طريقة HTTP في الطلبات والتوجيهات ، أسماء الملفات كافية!
القاعدة 4: من أجل البساطة ، لا ينصح باستخدام النماذج.
فيما يلي استخدام كامل للطرق في إطار AIS:
يجبر الصفحة التي سيتم الوصول إليها عبر طريقة طلب HTTP ونوع المحتوى. يجب عليك استدعاء هذه الوظيفة في بداية وحدة التحكم الخاصة بك. إذا لم يتم استيفاء الشروط ، فسيقوم البرنامج النصي بإنهاء خطأ HTTP.
حدود:
$options (صفيف): خيارات للطريقة ونوع المحتوى.مثال الاستخدام:
<?php
// controller/user/home.php
http_check ([ ' method ' => ' POST ' , ' content_type ' => ' application/json ' ]);
$ data = json_decode ( file_get_contents ( ' php://input ' ), true );
?>يقوم بتحميل ملف طراز أو ملفات نموذجية من الدليل.
حدود:
$model (سلسلة): مسار النموذج في مجلد app/model .مثال الاستخدام:
<?php
// controller/user/home.php
model ( ' user ' );
?>يقوم بتحميل ملف عرض بالبيانات والخيارات.
حدود:
$view (سلسلة): مسار العرض في مجلد app/view .$data (صفيف): البيانات عبارة عن صفيف نقابي يتم استخلاصه في العرض كمتغيرات.$options (صفيف): خيارات لتحميل تخطيط مثل ['title' => 'Home Page', 'description' => 'Home Page Description', 'load_layout' => true] . يمكن الوصول إلى هذه الخيارات باستخدام متغير $_VIEW .مثال الاستخدام:
<?php
// controller/user/home.php
$ user = database:: select ( ' users ' , ' * ' , [ ' id ' => $ _SESSION [ ' user_id ' ]]);
view ( ' user/home ' , [ ' user ' => $ user ], [ ' title ' => ' Dashboard ' , ' load_layout ' => true ]);
?> يعرض طريقة عرض وإرجاع محتوى المخزن المؤقت للإخراج. بدلاً من استخدام view() إلى صدى الإخراج إلى العميل ، يمكنك استخدام render() للحصول على محتوى الإخراج العازلة.
حدود:
$view (سلسلة): مسار العرض في مجلد app/view .$data (صفيف): البيانات عبارة عن صفيف نقابي يتم استخلاصه في العرض كمتغيرات.$options (صفيف): خيارات لتحميل تخطيط مثل ['title' => 'Home Page', 'description' => 'Home Page Description', 'load_layout' => true] . يمكن الوصول إلى هذه الخيارات باستخدام متغير $_VIEW .مثال الاستخدام:
<?php
// controller/user/home.php
$ user = database:: select ( ' users ' , ' * ' , [ ' id ' => $ _SESSION [ ' user_id ' ]]);
$ view = render ( ' user/home ' , [ ' user ' => $ user ], [ ' title ' => ' Dashboard ' , ' load_layout ' => true ]);
echo $ view ;
?> يقوم بتحميل ملف مكتبة أو دليل مكتبة مع ملف init.php .
حدود:
$lib (سلسلة): مسار المكتبة في مجلد app/lib .مثال الاستخدام:
<?php
// controller/user/home.php
lib ( ' upload ' );
$ uploader = new upload ();
?>يعيد التوجيه إلى عنوان URL المحدد وينهي البرنامج النصي.
حدود:
$url (سلسلة): عنوان URL لإعادة التوجيه إلى.مثال الاستخدام:
redirect ( ' https://example.com ' );يخرج البيانات مع محدد اختياري إلى وحدة التحكم. تم إعطاء هذا الاسم من لغة C ++.
حدود:
$data (مختلطة): البيانات للإخراج.$delimiter (سلسلة): المحدد للإلحاق.مثال الاستخدام:
cout ( ' Hello World ' , " n " );يرسل استجابة مع البيانات والبيانات الوصفية الاختيارية للمستخدم في واجهات برمجة التطبيقات ثم ينهي البرنامج النصي.
حدود:
$data (مختلطة): بيانات الاستجابة.$meta (صفيف): بيانات تعريف اختيارية.مثال الاستخدام:
response ([ ' sum ' => 100 ], [ ' status ' => ' SUCCESS ' ]);
// Output to endpoint: {"data":{"sum":100},"meta":{"status":"SUCCESS"}}يرسل استجابة مع حالة وبيانات إلى المستخدم في واجهات برمجة التطبيقات ثم ينهي البرنامج النصي.
حدود:
$code (سلسلة): الحالة التي يجب إرسالها إلى المستخدم.$data (صفيف): بيانات الاستجابة.مثال الاستخدام:
status ( ' PROCESS_ERROR ' , [ ' error ' => ' Something went wrong ' ]);
// Output to endpoint: {"data":{"error":"Something went wrong"},"meta":{"status":"PROCESS_ERROR"}}يرسل استجابة النجاح مع البيانات.
حدود:
$data (صفيف): بيانات الاستجابة.مثال الاستخدام:
success ();
// Output to endpoint: {"data":[],"meta":{"status":"SUCCESS"}}يرسل استجابة الفشل مع البيانات والحالة.
حدود:
$data (صفيف): بيانات الاستجابة.$status (سلسلة): رمز الحالة.مثال الاستخدام:
fail ([ ' error ' => ' Invalid request ' ], ' ERROR ' );يرسل رمز حالة HTTP مع بيانات اختيارية وبيانات تعريف.
حدود:
$code (int): رمز حالة HTTP.$data (صفيف): بيانات الاستجابة.$meta (صفيف): بيانات تعريف اختيارية.مثال الاستخدام:
http_status ( 404 ); // Shows browser 404 error.مثال الاستخدام:
http_status ( 404 , [ ' error ' => ' Not found ' ], [ ' status ' => ' ERROR ' ]);
// HTTP error 404 + Output to endpoint: {"data":{"error":"Not found"},"meta":{"status":"ERROR"}}مثال الاستخدام:
http_status ( 404 , " Page not found! " );
// HTTP error 404 + Output text to endpoint: Page not found!لا شيء :). يتم استخدامه في Code Beauty أو مجرد عنصر نائب للتنمية المستقبلية.
مثال الاستخدام:
do_nothing (); Dumps ( var_dump ) متغير وينتهي اختياريا البرنامج النصي.
حدود:
$var (مختلطة): المتغير لتفريغ.$die (Bool): ما إذا كان لإنهاء البرنامج النصي.مثال الاستخدام:
dump ( $ var , true ); الاسم المستعار لطريقة dump .
حدود:
$var (مختلطة): المتغير لتفريغ.$die (Bool): ما إذا كان لإنهاء البرنامج النصي.مثال الاستخدام:
d ( $ var , true );الاسم المستعار لـ "تفريغ ويموت". تفريغ متغير وينتهي البرنامج النصي.
حدود:
$var (مختلطة): المتغير لتفريغ.مثال الاستخدام:
dd ( $ var );يولد سلسلة أبجدية رقمية عشوائية بطول محدد.
حدود:
$length (int): طول السلسلة العشوائية.مثال الاستخدام:
strand ( 8 ); // Output: "9S34zD7o" يرسل طلب ما بعد application/x-www-form-urlencoded مع بيانات النموذج.
حدود:
$url (سلسلة): عنوان URL لإرسال الطلب إلى.$data (صفيف): بيانات النموذج التي يجب إرسالها.مثال الاستخدام:
post ( ' https://example.com/api/data ' , [ ' key ' => ' value ' ]); يرسل طلب ما بعد application/json مع بيانات JSON.
حدود:
$url (سلسلة): عنوان URL لإرسال الطلب إلى.$data (صفيف): بيانات JSON لإرسالها.مثال الاستخدام:
post_json ( ' https://example.com/api/data ' , [ ' key ' => ' value ' ]);يخرج الخلفية لمكدس المكالمة الحالي.
مثال الاستخدام:
backtrace (); // Outputs a backtrace of the current call stack.مسح المخزن المؤقت للإخراج ويغلق الاتصالات.
مثال الاستخدام:
close_everything ();يغلق كل شيء وينتهي البرنامج النصي.
مثال الاستخدام:
die_gracefully ();