Что такое «Нервсис»?
Очень лёгкий PHP фреймворк, очень простой в использовании и интеграции.
Почему называется «Нервсис»?
В самом начале мы надеялись, что система будет работать как нервная клетка, и объединяться в чистую систему вызова на основе данных. Точное указание команд системе было бы ненужным.
Есть ли короткое название?
NS, так большинство из нас его называет, но не путайте с Nintendo Switch.
Требования:
PHP 8.1+ и выше. Любой вид веб-сервера или работа в режиме CLI.
Пример использования:
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"
Следуйте шагам «Установка», чтобы интегрировать 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();
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.
«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 или полезную нагрузку запроса.
Как только «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
namespace api;
class user
{
public function login($name, $passwd)
{
//ваш код
return $name . ' is online!';
}
}
namespace api;
class user
{
public function login($name, $passwd, int $age)
{
//ваш код
return $name . ' is ' . $age . ' years old.';
}
}
NS оставляет некоторые важные основные библиотеки открытыми для разработчиков начиная с версии 8.0 и далее.
Благодаря douglas99, все изменяемые основные связанные API объединены в «Ext/libCoreApi.php».
Таким образом, разработчики могут регистрировать собственные библиотеки вместо стандартных, таких как пользовательский Router, обработчик вывода, ApiPath, функции, связанные с хуками, и т. д.
За исключением перечисленных выше функций, NS ещё предстоит пройти долгий путь.
Спасибо за проблемы и запросы на вытягивание, если вы обнаружили ошибки или сделали его лучше, или просто нуждаетесь в помощи. Свяжитесь с нами.
Благодарим JetBrains за поддержку проекта в рамках программы поддержки Open Source.
Это программное обеспечение лицензировано в соответствии с условиями лицензии Apache 2.0.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )