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 view에서 사용자 데이터를 사용합니다.
<?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에서는 심피성을 위해 모델을 사용하지 않는 것이 바람직합니다. 그러나 컨트롤러에서는 필요할 때 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 (string) : 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 ]);
?> 보기를 렌더링하고 출력 버퍼 컨텐츠를 반환합니다. view() 클라이언트에 ECHO 출력으로 사용하는 대신 render() 사용하여 출력 버퍼 컨텐츠를 얻을 수 있습니다.
매개 변수 :
$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 (string) : app/lib 폴더의 라이브러리 경로.예제 사용 :
<?php
// controller/user/home.php
lib ( ' upload ' );
$ uploader = new upload ();
?>지정된 URL로 리디렉션하고 스크립트를 종료합니다.
매개 변수 :
$url (String) : RELIPERET의 URL.예제 사용 :
redirect ( ' https://example.com ' );옵션 구분 기호가 콘솔에 데이터를 출력합니다. 이 이름은 C ++ 언어에서 제공됩니다.
매개 변수 :
$data (혼합) : 출력 할 데이터.$delimiter (String) : 추가 할 분리기.예제 사용 :
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" 양식 데이터와 함께 게시물 application/x-www-form-urlencoded 요청을 보냅니다.
매개 변수 :
$url (String) : 요청을 보내는 URL.$data (배열) : 보낼 양식 데이터.예제 사용 :
post ( ' https://example.com/api/data ' , [ ' key ' => ' value ' ]); JSON 데이터로 게시물 application/json 요청을 보냅니다.
매개 변수 :
$url (String) : 요청을 보내는 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 ();