AISフレームワークは、シンプルで効率的になるように設計されており、開発者がアプリケーションを迅速に構築および展開できるようにします。そのアーキテクチャは、クリーンで保守可能なコードを促進するため、堅牢でスケーラブルなソリューションを探している初心者と経験豊富な開発者の両方に最適です。
クローン、次に使用します。
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パラメーターとして解釈し、 $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 Toolkitを使用して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 Toolkitを使用して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では、同時性にモデルを使用しないことが推奨されます。ただし、コントローラーでは、必要に応じて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:簡単にするために、すべてのファイルは1つのリクエストのみであり、ファイルが小さく管理可能なままであることを保証します。
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 );
?>モデルファイルまたはディレクトリコンタニンモデルファイルをロードします。
パラメーター:
$model (文字列): app/modelフォルダーのモデルパス。使用例:
<?php
// controller/user/home.php
model ( ' user ' );
?>データとオプションを使用してビューファイルをロードします。
パラメーター:
$view (String): app/viewフォルダーのビューパス。$data (array):データは、変数としてビューに抽出される連想配列です。$options (array): ['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): app/viewフォルダーのビューパス。$data (array):データは、変数としてビューに抽出される連想配列です。$options (array): ['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 (string): app/libフォルダーのライブラリパス。使用例:
<?php
// controller/user/home.php
lib ( ' upload ' );
$ uploader = new upload ();
?>指定されたURLにリダイレクトし、スクリプトを終了します。
パラメーター:
$url (string):リダイレクトするURL。使用例:
redirect ( ' https://example.com ' );コンソールにオプションの区切り文字を使用してデータを出力します。この名前はC ++言語から与えられます。
パラメーター:
$data (Mixed):データから出力まで。$delimiter (string):delimiter to append。使用例:
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 ();ダンプ( var_dump )変数であり、オプションでスクリプトを終了します。
パラメーター:
$var (混合):ダンプの変数。$die (bool):スクリプトを終了するかどうか。使用例:
dump ( $ var , true ); dumpメソッドのエイリアス。
パラメーター:
$var (混合):ダンプの変数。$die (bool):スクリプトを終了するかどうか。使用例:
d ( $ var , true );「ダンプアンドダイ」のエイリアス。変数をダンプしてスクリプトを終了します。
パラメーター:
$var (混合):ダンプの変数。使用例:
dd ( $ var );指定された長さのランダムな英数字ストリングを生成します。
パラメーター:
$length (int):ランダム文字列の長さ。使用例:
strand ( 8 ); // Output: "9S34zD7o"フォームデータを使用して、POST application/x-www-form-urlencodedリクエストを送信します。
パラメーター:
$url (string):リクエストを送信するURL。$data (array):送信するフォームデータ。使用例:
post ( ' https://example.com/api/data ' , [ ' key ' => ' value ' ]); JSONデータを使用して、Post application/jsonリクエストを送信します。
パラメーター:
$url (string):リクエストを送信する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 ();