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 ' ] . " ! " ;
?> คุณสามารถสร้าง APIs ได้อย่างง่ายดายโดยใช้ AIS Toolkit
<?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 Toolkit
<?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 มันไม่เป็นที่ต้องการที่จะใช้แบบจำลองสำหรับ simpilicity อย่างไรก็ตามในคอนโทรลเลอร์คุณสามารถโหลดโมเดลโดยใช้ฟังก์ชั่น 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 รุ่นที่กำหนดเองเป็น wrapper ฐานข้อมูล ใช้งานง่ายและเข้าใจง่าย
<?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 Rule 1: เพื่อความเรียบง่ายไม่ใช้คลาสสำหรับตัวควบคุมและรุ่นเพื่อให้แน่ใจว่าการใช้งานง่าย
AIS Rule 2: เพื่อความเรียบง่ายทุกไฟล์เป็นเพียงคำขอเดียวเพื่อให้แน่ใจว่าไฟล์ยังคงมีขนาดเล็กและจัดการได้
AIS Rule 3: เพื่อความเรียบง่ายไม่จำเป็นต้องระบุวิธี HTTP ในคำขอและเส้นทางชื่อไฟล์ก็เพียงพอแล้ว!
AIS Rule 4: เพื่อความเรียบง่ายไม่แนะนำให้ใช้แบบจำลอง
นี่คือการใช้งานเต็มรูปแบบสำหรับวิธีการใน AIS Framework:
บังคับให้เข้าถึงหน้าวิธีการร้องขอ 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 (String): เส้นทางโมเดลในโฟลเดอร์ app/modelตัวอย่างการใช้งาน:
<?php
// controller/user/home.php
model ( ' user ' );
?>โหลดไฟล์มุมมองที่มีข้อมูลและตัวเลือก
พารามิเตอร์:
$view (String): Path View in app/view Folder$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 (String): Path View in app/view Folder$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 " );ส่งการตอบกลับด้วยข้อมูลและข้อมูลเมตาเสริมไปยังผู้ใช้ใน API แล้วจะยุติสคริปต์
พารามิเตอร์:
$data (ผสม): ข้อมูลการตอบกลับ$meta (อาร์เรย์): เมตาดาต้าเสริมตัวอย่างการใช้งาน:
response ([ ' sum ' => 100 ], [ ' status ' => ' SUCCESS ' ]);
// Output to endpoint: {"data":{"sum":100},"meta":{"status":"SUCCESS"}}ส่งการตอบกลับด้วยสถานะและข้อมูลไปยังผู้ใช้ใน API แล้วจะยุติสคริปต์
พารามิเตอร์:
$code (String): สถานะที่จะส่งไปยังผู้ใช้$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!ไม่ได้ทำอะไร :). มันใช้สำหรับรหัสความงามหรือเป็นเพียงตัวยึดสำหรับการพัฒนาในอนาคต
ตัวอย่างการใช้งาน:
do_nothing (); Dumps ( var_dump ) ตัวแปรและเลือกสคริปต์
พารามิเตอร์:
$var (ผสม): ตัวแปรในการทิ้ง$die (bool): จะยุติสคริปต์หรือไม่ตัวอย่างการใช้งาน:
dump ( $ var , true ); นามแฝงสำหรับวิธี dump
พารามิเตอร์:
$var (ผสม): ตัวแปรในการทิ้ง$die (bool): จะยุติสคริปต์หรือไม่ตัวอย่างการใช้งาน:
d ( $ var , true );นามแฝงสำหรับ "Dump and Die" ทิ้งตัวแปรและยุติสคริปต์
พารามิเตอร์:
$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 (Array): ข้อมูล JSON ที่จะส่งตัวอย่างการใช้งาน:
post_json ( ' https://example.com/api/data ' , [ ' key ' => ' value ' ]);เอาต์พุตแบ็คเทรซของสแต็คการโทรปัจจุบัน
ตัวอย่างการใช้งาน:
backtrace (); // Outputs a backtrace of the current call stack.ล้างบัฟเฟอร์เอาต์พุตและปิดการเชื่อมต่อ
ตัวอย่างการใช้งาน:
close_everything ();ปิดทุกอย่างและยุติสคริปต์
ตัวอย่างการใช้งาน:
die_gracefully ();