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

OSCHINA-MIRROR/Jerry-Shaw-Nervsys

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

Нервсис

README: English | 简体中文

release issues contributors last-commit license

О Нервсисе

  • Что такое «Нервсис»?
    Очень лёгкий PHP фреймворк, очень простой в использовании и интеграции.

  • Почему называется «Нервсис»?
    В самом начале мы надеялись, что система будет работать как нервная клетка, и объединяться в чистую систему вызова на основе данных. Точное указание команд системе было бы ненужным.

  • Есть ли короткое название?
    NS, так большинство из нас его называет, но не путайте с Nintendo Switch.

  • Требования:
    PHP 8.1+ и выше. Любой вид веб-сервера или работа в режиме CLI.

  • Пример использования:

    1. Обычный фреймворк для разработки веб-бэкенда.
    2. Контроллер API для всех типов приложений.
    3. Клиент для программного взаимодействия.
    4. И многое другое...

Установка

  1. Скопируйте или скачайте исходный код в любое место на вашем компьютере. На одной машине требуется только одна копия, даже если существует несколько проектов.
  2. Включите «NS.php» в основной скрипт проекта и вызовите его с помощью «NS::new();».
  3. При необходимости используйте «trait System», чтобы зарегистрировать свои собственные модули и функции перед вызовом «NS::new();».
  4. Напишите свои классы API кода под «/api», классы кода приложения под «/app», если не изменено, и всё готово.
  5. В «/Ext» есть общие полезные расширения для обычной разработки проекта, поэтому, пожалуйста, ознакомьтесь с ними при кодировании. Они могут быть полезны.

Использование

Всё демо-использование происходит в настройках системы по умолчанию.

1. Рекомендуемая структура проекта

Обратите внимание: путь к корню приложения будет установлен в родительский каталог скрипта входа.
Root/
    ├─api/                            default api entry code path
    │    ├─DemoApiClass.php           demo api php class file
    │    └─...                        other opened api php class file
    ├─app/                            default application code path
    │    ├─DemoAppClass.php           demo application php class file
    │    └─...                        other application php class file
    └─www/                            default home path
         ├─index.php                  main entry script
         └─...                        other entry script file, such as "api.php"

2. Интеграция NS

Следуйте шагам «Установка», чтобы интегрировать NS в свой скрипт входа. Демо-код выглядит следующим образом.

require __DIR__ . '/../../Nervsys/NS.php';

$ns = new Nervsys\NS();

$ns->setApiDir('myApiPath')
    ->setDebugMode(true)
    ->setContentType('application/json')
    ->addPreHooks('/', [\app\hook\ApiCheck::new(), 'userToken'])
    ->addAutoloadPath($ns->app->root_path . DIRECTORY_SEPARATOR . 'library');

$ns->go();

3. Формат данных запроса

NS может анализировать данные как из FormData, так и из полезной нагрузки запроса через GET или POST.
Когда данные отправляются в виде полезной нагрузки запроса, поддерживаются как JSON, так и XML.
Библиотека извлечения и анализа данных в NS находится в "/Core/Lib/IOUnit.php".

В HTTP-запросе NS извлекает и анализирует данные следующими шагами:

1. прочитать Accept из заголовка HTTP-запроса, решить, какой тип возврата использовать, если он не определён в записи.
2. прочитать URL, попытаться извлечь «c» из «PATH_INFO» или «REQUEST_URI», если найдено.
3. извлечь HTTP FormData в режиме без перезаписи в следующем порядке: FILES -> POST -> GET.
4. извлечь полезную нагрузку запроса и попытаться декодировать в формате JSON/XML, добавить к данным сверху.
5. прочитать заголовок HTTP и Cookie Данные по определённым ключам, заданным в скрипте входа, добавляются к данным сверху.

6. Найдите и изолируйте данные «c» из источника данных и передайте их в библиотеку Router в качестве команды запроса.

В режиме CLI NS берёт «c» из параметра «-c» или из первого аргумента, если он не найден. Строковый параметр «-d» будет взят для декодирования, чтобы получить источник данных CGI. Параметр «-r» принудительно устанавливает формат возвращаемых данных. Другие аргументы будут рассматриваться как argv CLI.

4. О ключе «c»

«c» в запросе данных будет восприниматься как команда запроса и приведёт систему к продолжению работы.
«c» можно передать любым способом: URL, GET, POST — всё подходит, независимо от того, FormData это или полезная нагрузка запроса.

В режиме CGI «c», как правило, перенаправляется на путь API по некоторым причинам безопасности, но режим CLI позволяет вызывать его из корня, добавляя «/» в начале «c», используя полный путь пространства имён класса.

Допустимый формат «c»:

На основе пути API: innerpath_in_api_path/class_name/public_method_name

Примеры:
URL: http://your_domain/index.php/user/login => вызов метода «login» в классе «\api\user».
URL: http://your_domain/index.php/user/info/byId => вызов метода «byId» в классе «\api\user\info».

GET: http://your_domain/index.php?c=user/login
POST: напрямую передаётся «user/login» в параметре «c», оба поддерживают FormData или полезную нагрузку запроса.
На основе корневого пути: /namespace/class_name/public_method_name

Примеры:
URL: НЕ поддерживается.

CLI: php index.php /app/user/login => вызов метода «login» в классе «\app\user».
CLI: php index.php -c"/app/user/login" => вызов метода «login» в классе «\app\user».

GET: http://your_domain/index.php?c=/app/user/login
POST: непосредственно передаётся "/app/user/login" в параметре "c", оба поддерживают FormData или полезную нагрузку запроса.

5. Автозаполнение данных

Как только «c» и источник данных будут взяты системой, библиотеки Router и Execute будут активированы для выполнения точного метода. Соответствующие параметры будут извлечены из источника данных и автоматически переданы в целевой метод в правильном порядке при вызове. Обратите внимание, что все данные, передаваемые в NS, ключи чувствительны к регистру, а значения данных строго типизированы. Все возвращённые результаты будут захвачены и выведены.

Пример:

Параметры в любом порядке:
URL: http://your_domain/index.php/user/login?name=admin&passwd=admin&age=30&type=client
URL: http://your_domain/index.php/user/login?passwd=admin&age=30&name=admin&type=client
  • API 1
namespace api;

class user
{
    public function login($name, $passwd)
    {
        //ваш код

        return $name . ' is online!';
    }
}
  • API 2
namespace api;

class user
{
    public function login($name, $passwd, int $age)
    {
        //ваш код

        return $name . ' is ' . $age . ' years old.';
    }
}

6. Открытые основные библиотеки

NS оставляет некоторые важные основные библиотеки открытыми для разработчиков начиная с версии 8.0 и далее.
Благодаря douglas99, все изменяемые основные связанные API объединены в «Ext/libCoreApi.php».
Таким образом, разработчики могут регистрировать собственные библиотеки вместо стандартных, таких как пользовательский Router, обработчик вывода, ApiPath, функции, связанные с хуками, и т. д.

Задачи

  • Базовая логика Core и Ext
  • Автоматическое сопоставление аргументов
  • Логика обнаружения среды кода приложения
  • Поддержка пользовательского модуля маршрутизатора
  • Поддержка модуля пользовательской обработки ошибок
  • Поддержка модулей пользовательских считывателей данных/вывода
  • Функция поддержки регистрации пути на основе хуков
  • Поместите основные функции управления системой в черту для удобства использования
  • Поддержка менеджера процессов управления
  • Простая поддержка диспетчера Fiber
  • Функции, связанные с сокетами
  • Некоторые полезные алгоритмы
  • ML/AI на основе внутреннего маршрутизатора
  • Более подробные документы и демонстрации

За исключением перечисленных выше функций, NS ещё предстоит пройти долгий путь.
Спасибо за проблемы и запросы на вытягивание, если вы обнаружили ошибки или сделали его лучше, или просто нуждаетесь в помощи. Свяжитесь с нами.

Сторонники

Благодарим JetBrains за поддержку проекта в рамках программы поддержки Open Source.

Лицензия

Это программное обеспечение лицензировано в соответствии с условиями лицензии Apache 2.0.

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

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

Введение

A very slight PHP framework, very easy to use and integrate. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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