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 ();