LyApi 2.X
LyApi 2.X — это новая версия LyApi, в которой обновлены архитектура и код, что делает фреймворк более гибким!
🍑 Введение
Версия LyApi 1.X поддерживалась около трёх лет и была важным проектом для меня. Однако у этого проекта всегда было много проблем, и многие функции не были реализованы должным образом. За эти три года я также узнал много нового. Постепенно я начал осознавать ограничения LyApi 1.X, которые не позволяли мне делать многое из того, что я хотел. Например, некоторые пользователи высказывали следующие замечания: система маршрутизации слишком проста, разработка недостаточно гибкая и ограничена простым интерфейсом разработки. Поэтому я решил разработать эту версию 2.X, которая представляет собой полностью новый фреймворк с переписанными кодами: системой маршрутизации, системой кэширования, системой представлений, системой контроллеров, шаблонизатором и некоторыми часто используемыми шаблонами данных.
🍍 Особенности
PS: Этот фреймворк использует множество новых функций PHP, поэтому для его запуска требуется версия 7.X или выше.
🥝 Демонстрация
Ниже приведены примеры кода для демонстрации некоторых функций. Вы можете просмотреть необходимые функции самостоятельно.
// Базовая регистрация маршрута (переход к Main.index при доступе к корневому каталогу)
Route::rule("/", "Main.index");
// Динамическая регистрация контроллера (в зависимости от пути, переход к разным контроллерам)
Route::rule("/{letter}", "Main.{1}");
// Подобно автоматической маршрутизации к контроллеру в LyApi 1.X
Route::rule("/{any}", "{1}")::afterDefine(function ($c) {
$c = str_replace("/", ".", $c);
return $c;
});
// Фильтр, который будет перехватывать запрос и выдавать соответствующее исключение, если результат замыкания равен False
Route::rule("/debug/{letter}", "Debug.{1}")::filter(function () {
return Config::dotConfig('app.open_debug');
}, HTTP_NOT_FOUND);
// В зависимости от унаследованного класса, результаты, генерируемые этим контроллером, будут разными
// ViewCon — обычный HTML-код, ApiCon будет генерировать JSON-код (можно настроить)
class Main extends ViewCon
{
// Принимает два параметра: Request и Response
public function index($req, $resp)
{
// Результат не будет выводиться напрямую, фреймворк обработает его в соответствии с правилами генерации родительского класса и затем выведет результат.
// View::render будет использовать шаблонизатор для рендеринга.
return View::render('index', []);
}
}
// Фреймворк поддерживает генерацию исключений в любом месте и завершение обработки программы
Response::abort(404); // Генерирует исключение 404
Response::abort(HTTP_NOT_FOUND); // Использование константы делает код более элегантным
abort(HTTP_NOT_FOUND); // Можно напрямую использовать функцию помощника abort
// После abort вызывается определённый объект Exception для обработки, после завершения программа завершается
class Exception extends ViewCon
{
// Когда обработчик ошибок не может найти соответствующую функцию, он по умолчанию вызывает _default
public function _default($req, $resp)
{
// Через HTTP_CODE можно получить текущий код ошибки
$http_code = $req->options['HTTP_CODE'];
// Через EXCEPTION можно получить текущий объект ошибки
$exception = $req->options['EXCEPTION'];
// Окончательный результат возврата (HTTP-статус автоматически обновляется, не нужно вручную отправлять заголовок)
return "<h1>" . $http_code . " Error!</h1>";
}
// Можно определить обработку каждого кода состояния через _[HTTP_CODE]
public function _404($req, $resp)
{
// Если вы не возвращаете никакого значения, браузер отобразит страницу 404 по умолчанию
// return "404 Not Found";
// Рекомендуется отображать пользовательскую страницу ошибки здесь.
}
}
// Фреймворк позволяет вам выполнять пользовательские операции до и после некоторых программ.
Event::on("event_name",function ($name) {
// При срабатывании event_name эта функция замыкания будет вызвана
echo "Hello World";
});
// Запуск события, можно передать параметры
Event::trigger("event_name","mrxiaozhuox");
$conn = Connector::connect("mydb");
// Выбрать все данные из таблицы
$conn->select("table_name","*");
// Удалить данные с id равным 1
$database->delete("table_name", [
"id" => 1
]);
// Вставить одну запись
$last_user_id = $database->insert("table_name", [
"user_name" => "mrxiaozhuox",
"email" => "mrxzx@qq.com",
"age" => 16
]);
Автор: mr小卓X
Q Q: 3507952990
Группа обмена: 769094015 (добавить группу вопросов)
Личный блог: http://mrxzx.info
Gitee: https://gitee.com/mrxzx/
GitHub: https://github.com/xiaozhuox/
PS: Любые вопросы, просто свяжитесь со мной, и я решу проблему в первый раз.
Документы находятся в процессе составления, скоро будут завершены.
Проектные документы - неполные
Лёгкая база данных типа «ключ-значение», подходящая для небольших проектов.
В настоящее время LyApi Framework уже интегрировал мощный драйвер DoreaDB, чтобы разработчики могли быстро разрабатывать.
PHP существует для быстрой разработки, почему бы не попробовать DoreaDB?
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )