AIS框架設計為簡單有效,使開發人員可以快速構建和部署應用程序。它的體系結構可促進清潔和可維護的代碼,使其成為初學者和經驗豐富的開發人員尋求可靠,可擴展解決方案的絕佳選擇。
克隆,然後使用:
git clone https://github.com/titan2420/ais.git
AIS體系結構的設計源於其核心。這種簡單性有助於對系統的直觀理解,從而使開發人員更容易與框架進行交互和修改。通過最小化複雜性,AIS確保開發人員可以更多地專注於開發功能,而不是與框架本身搏鬥。
---- app
-------- core
-------- controller
-------- model
-------- view
---- public
-------- js
-------- css
-------- img
在AIS框架中,使用Controller文件夾中的簡單文件夾和文件結構來定義路由。每個文件夾代表一個潛在的路由段,並且可以訪問這些文件夾中的每個文件作為端點。例如:
---- 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動態路由系統將解釋為參數,並使用$link_vars變量使用user/dynamic.php控制器進行處理。
<?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動態路由系統將解釋為參數,並使用$link_vars變量使用user/dynamic.php控制器進行處理。
<?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工具包輕鬆創建API。
<?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 "
}
]
}您可以使用AIS工具包輕鬆創建CLI命令。
<?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中,首選不使用模型進行simpiliticity。但是,在控制器中,您可以在需要時使用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:為簡單起見,不要將類用於控制器和模型來確保簡單實現。
AIS規則2:為簡單起見,每個文件都只是一個請求,以確保文件保持較小且易於管理。
AIS規則3:為簡單起見,無需在請求和路由中指定HTTP方法,文件名就足夠了!
AIS規則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 );
?>加載模型文件或目錄Contaning模型文件。
參數:
$model (字符串): app/model文件夾中的模型路徑。示例用法:
<?php
// controller/user/home.php
model ( ' user ' );
?>將視圖文件加載帶有數據和選項。
參數:
$view (String): 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 ]);
?>呈現視圖並返回輸出緩衝區內容。您可以使用render()來獲取輸出緩衝區內容,而不是使用view()將視圖()與客戶端相呼應。
參數:
$view (String): 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 " );將帶有數據和可選元數據的響應發送給API中的用戶,然後終止腳本。
參數:
$data (混合):響應數據。$meta (陣列):可選的元數據。示例用法:
response ([ ' sum ' => 100 ], [ ' status ' => ' SUCCESS ' ]);
// Output to endpoint: {"data":{"sum":100},"meta":{"status":"SUCCESS"}}將帶有狀態和數據的響應發送給API中的用戶,然後終止腳本。
參數:
$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!什麼都不做:)。它用於代碼美景,或者只是將來開發的佔位符。
示例用法:
do_nothing ();轉儲( 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 ' ]);發送帶有JSON數據的POST application/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 ();