Адрес склада
Попробуйте пользовательские команды easysool
создайте файл
Функция
$ php easyswoole ______ _____ _ | ____| / ____| | | | |__ __ _ ___ _ _ | (___ __ __ ___ ___ | | ___ | __| / _` | / __| | | | | \___ \ \ \ /\ / / / _ \ / _ \ | | / _ \ | |____ | (_| | \__ \ | |_| | ____) | \ V V / | (_) | | (_) | | | | __/ |______| \__,_| |___/ \__, | |_____/ \_/\_/ \___/ \___/ |_| \___| __/ | |___/ Welcome To EASYSWOOLE Command Console! Usage: php easyswoole [command] [arg] Get help : php easyswoole help [command] Current Register Command: demo:command help install start stop reload phpunit $ php easyswoole demo:command string(11) "Hello World" success
Я должен сказать, что это довольно просто.
Реформа
Затем давайте преобразуем часть кода и подключим команду hyperf к easysool.
Easysool очень прост, все команды сохраняются в CommandContainer , поэтому мы можем изменить файл ввода, узнать все команды в нем и динамически перевести их в Гиперкоманда , а затем запустите ее напрямую Гиперкоманда Просто отлично.
Чтобы не возникал конфликт easyswool/| командной строки, давайте создадим новый hyperf Хорошо.
Сначала мы создаем компонент
$ composer create hyperf/component-creater hyperf Installing hyperf/component-creater (v1.1.1) - Installing hyperf/component-creater (v1.1.1): Downloading (100%) Created project in hyperf > Installer\Script::install Setting up optional packages What is your component name (hyperf/demo): hyperf-cloud/easyswoole-command What is your component license (MIT) : What is your component description : HyperfCommand for EasySwoole What is your namespace (HyperfCloud\EasyswooleCommand): Removing installer development dependencies Do you want to use hyperf/framework component ? [1] yes [n] None of the above Make your selection or type a composer package name and version (n): Do you want to use hyperf/di component ? [1] yes [n] None of the above Make your selection or type a composer package name and version (n): ...
И добавьте компоненты "гипер/команда": "1.1.*" Зависимость.
Измените корневой каталог ниже composer.json
{
"require": {
"easyswoole/easyswoole": "3.x",
"hyperf-cloud/easyswoole-command": "dev-master"
},
"require-dev": {
"swoft/swoole-ide-helper": "^4.2",
"friendsofphp/php-cs-fixer": "^2.14",
"mockery/mockery": "^1.0",
"phpstan/phpstan": "^0.11.2"
},
"autoload": {
"psr-4": {
"App\": "App/"
}
},
"minimum-stability": "dev",
"prefer-stable": true,
"config": {
"sort-packages": true
},
"scripts": {
"test": "co-phpunit -c phpunit.xml --colors=always",
"cs-fix": "php-cs-fixer fix $1",
"analyse": "phpstan analyse --memory-limit 300M -l 0 -c phpstan.neon ./App"
},
"repositories": {
"hyperf": {
"type": "path",
"url": "./hyperf"
},
"packagist": {
"type": "composer",
"url": "https://mirrors.aliyun.com/composer"
}
}
}
Возьмите на себя командный интерфейс
Давайте создадим Команду easyswool/|, чтобы взять на себя все Командный интерфейс 。
commandName());
$this->command = $command;
}
public function configure()
{
$this - > addoption ('args','a ', inputoption:: value \ is \ array | inputoption:: value \ optional,' easysoole input ', []);
}
public function handle()
{
$args = $this->input->getOption('args');
if (in_array('produce', $args)) {
Core::getInstance()->setIsDev(false);
}
Core::getInstance()->initialize();
$result = $this->command->exec($args);
$this->output->success($result);
}
}увеличение Применение Инициализировать все CommandContainer Среда Команда 。
getCommandList();
foreach ($list as $name) {
$this->commands[] = new EasySwooleCommand($container->get($name));
}
}
public function add(Command $command)
{
$this->commands[] = $command;
}
public function run()
{
$application = new SymfonyApplication();
foreach ($this->commands as $command) {
$application->add($command);
}
return $application->run();
}
}
Функция ввода окончательного преобразования
run();
Исполнительный приказ демонстрация:команда
$ php hyperf.php demo:command string(11) "Hello World" [OK] success
запуск Сервер
$ php hyperf.php start -a produce
Создать гиперкоманду
Далее мы создадим Гиперкоманда Посмотрите на эффект.
изменить bootstrap.php
set(new DemoCommand()); Application::getInstance()->add(new Demo2Command());
результаты правоприменения
$ php hyperf.php demo:command2 string(21) "Hello Hyperf Command."
Написано в конце
Hyperf-это высокопроизводительная и гибкая платформа для взаимодействия с PHP, основанная на swool 4.4 +. Он имеет встроенный сервер взаимодействия и большое количество часто используемых компонентов. По сравнению с традиционным фреймворком, основанным на php-fpm, его производительность качественно улучшена. Он обеспечивает сверхвысокую производительность при сохранении чрезвычайно гибкой масштабируемости. Стандартные компоненты реализованы на основе стандарта PSR и основаны на сильной конструкции внедрения зависимостей, которая гарантирует, что большинство компонентов или классов являются заменяемыми и многоразовыми.
В дополнение к общему клиенту MySQL и клиенту redis версии для совместной работы библиотека компонентов платформы также предоставляет вам красноречивый ORM, сервер и клиент websocket, сервер и клиент JSON RPC, сервер и клиент grpc, клиент Zipkin/Jaeger (opentracing), HTTP-клиент, клиент elasticsearch, клиент консультаций, клиент etcd, компонент QP версии для совместной работы, центр конфигурации Apollo, управление конфигурацией приложений Alibaba cloud ACM, центр конфигурации etcd, ограничитель тока на основе алгоритма набора токенов, общий пул соединений, предохранитель, генерация документов swagger, swool tracker, движок blade и Smarty view, генератор глобальных идентификаторов snowflake и другие компоненты избавляют от необходимости внедрять соответствующую версию программы.
Hyperf также предоставляет контейнер для инъекций зависимостей на основе psr-11, аннотации, ориентированное на аспекты программирование AOP, промежуточное программное обеспечение на основе psr-15, пользовательский процесс, менеджер событий на основе psr-14, очередь сообщений redis/rabbitmq, автоматический кэш моделей, кэш на основе psr-16, временная задача второго уровня crontab, интернационализация перевода, валидатор проверки и другие очень удобные функции , чтобы соответствовать богатым техническим и бизнес-сценариям, из коробки.