1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mrxzx-LyApi

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

LyApi 2.X

LyApi 2.X — это новая версия LyApi, в которой обновлены архитектура и код, что делает фреймворк более гибким!

🍑 Введение

Версия LyApi 1.X поддерживалась около трёх лет и была важным проектом для меня. Однако у этого проекта всегда было много проблем, и многие функции не были реализованы должным образом. За эти три года я также узнал много нового. Постепенно я начал осознавать ограничения LyApi 1.X, которые не позволяли мне делать многое из того, что я хотел. Например, некоторые пользователи высказывали следующие замечания: система маршрутизации слишком проста, разработка недостаточно гибкая и ограничена простым интерфейсом разработки. Поэтому я решил разработать эту версию 2.X, которая представляет собой полностью новый фреймворк с переписанными кодами: системой маршрутизации, системой кэширования, системой представлений, системой контроллеров, шаблонизатором и некоторыми часто используемыми шаблонами данных.

Быстро перейти к LyApi 1.X

Разработка LyDev

🍍 Особенности

  • Система маршрутизации: богатые настраиваемые параметры. Поддерживает динамическое определение параметров, динамические контроллеры и т. д.
  • Система ведения журнала: облегчённая система ведения журналов, поддерживающая классификацию типов и другие функции.
  • Система кэширования: файловое кэширование поддерживает простое добавление, удаление, изменение и поиск, а также классификацию кэша и другие функции.
  • Типы результатов: генерирует различные возвращаемые данные на основе разных родительских классов, включая JSON и HTML.
  • Структура данных: встроенные структуры данных, такие как куча, стек, дерево, словарь дерева и т.д., могут быть быстро созданы и вызваны.
  • Доступ к данным: встроенная библиотека Medoo обеспечивает быстрый доступ и операции с различными базами данных.
  • Обработка исключений: фреймворк обрабатывает все исключения, классифицируя их и вызывая разные пользовательские контроллеры.
  • Онлайн-управление: мощная расширяемая система позволяет легко реализовать онлайн-управление с помощью расширения LyDev.

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: Любые вопросы, просто свяжитесь со мной, и я решу проблему в первый раз.

📔 Документация

Документы находятся в процессе составления, скоро будут завершены.

Проектные документы - неполные

📡 Сотрудничество

Dorea DB

Лёгкая база данных типа «ключ-значение», подходящая для небольших проектов.

В настоящее время LyApi Framework уже интегрировал мощный драйвер DoreaDB, чтобы разработчики могли быстро разрабатывать.

PHP существует для быстрой разработки, почему бы не попробовать DoreaDB?

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Данный проект будет перенесён на GitHub, и последующие обновления также будут происходить на GitHub! Спасибо за вашу поддержку! https://github.com/mrxiaozhuox/lyapi Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mrxzx-LyApi.git
git@api.gitlife.ru:oschina-mirror/mrxzx-LyApi.git
oschina-mirror
mrxzx-LyApi
mrxzx-LyApi
master