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 ' ] . " ! " ;
?> Вы можете легко создать API с помощью инструментария AIS.
<?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 в качестве обертки базы данных. Это легко использовать и легко понять.
<?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: Для простоты каждый файл представляет собой только один запрос, гарантируя, что файлы остаются небольшими и управляемыми.
Правило 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 (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): 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 );Псевдоним для "сброса и умирания". Сбрасывает переменную и завершает сценарий.
Параметры:
$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 (массив): данные JSON для отправки.Пример использования:
post_json ( ' https://example.com/api/data ' , [ ' key ' => ' value ' ]);Выводит обратную тренас текущего стека вызовов.
Пример использования:
backtrace (); // Outputs a backtrace of the current call stack.Промывает выходной буфер и закрывает соединения.
Пример использования:
close_everything ();Закрывает все и завершает сценарий.
Пример использования:
die_gracefully ();