Перейти к содержимому
docs.
WORKSPACE

Документации проектов

Открыть каталог проектов
Localzet ServerАсинхронный PHP-серверTriangleФреймворк и компонентыMIX IDИдентификация и интеграцииHack APIПубличные API хакатонаACNПроект и компонентыUserlay / UserNetПроект и компонентыAxiomПроект и компонентыМесседжинг через почтуПроект и компонентыLWT / JWT / JOSEПроект и компонентыФинансовая аналитика KimaiПроект и компонентыМультипарадигмальная БДПроект и компонентыZorin PlatformПроект и компонентыZorin TrustПроект и компонентыFloraScope / VegwatchПроект и компонентыaegis-qДокументация проектаaevumdbДокументация проектаauditДокументация проектаauto-invest-managerАвтотрейдерcaine-companionДокументация проектаcertbot-cloudflareДокументация проектаClusterLocalzet Server / ClustercmdveilДокументация проектаConsolePHP CLI✓CronБиблиотеки Localzet Serverdata-connectorДокументация проектаdevice-controlDevice Controlenn-projectДокументация проектаEventsБиблиотеки Localzet ServerflowsintДокументация проектаforgeДокументация проектаHttpClientБиблиотеки Localzet ServerinterpreterСобственный языкinvariaДокументация проектаkeynotesДокументация проектаknotrouteKnotroutelaravel-personal-analyticsДокументация проектаlocalzet-osДокументация проектаmeridianДокументация проектаMQTTБиблиотеки Localzet Servernano-kernelСобственная ОСNoterДокументация проектаpersonal-analyticsДокументация проектаProxyБиблиотеки Localzet ServerPSRБиблиотеки Localzet ServerPSR-7Библиотеки Localzet Serverrschs-monitorДокументация проектаsemsealДокументация проектаshardsealДокументация проектаSocketIOБиблиотеки Localzet ServerSOCKS5Библиотеки Localzet Serverstandalone-analyticsДокументация проектаstatic-php-cliДокументация проектаStorageБиблиотеки Localzet ServersutureДокументация проектаtempoweaveДокументация проектаttsСинтез речиTunnelБиблиотеки Localzet Serverui-kitUI KitvesperДокументация проектаWebAnalyzerWebAnalyzerzorin-access-brokerДокументация проектаzorin-authority-brokerДокументация проектаzorin-authority-sdk-phpДокументация проектаzorin-authority-sdk-pythonДокументация проектаzorin-authority-sdk-tsДокументация проектаzorin-client-intelДокументация проектаzorin-device-core-aospДокументация проектаzorin-host-agentДокументация проектаzorin-native-labДокументация проектаzorin-nodeДокументация проектаzorin-opsДокументация проектаdonstu-python-sdkДокументация проектаfloortraceFloortraceserver-rsLocalzet Server / Cluster
Каталог

Console — оболочка над Symfony Console для PHP CLI-приложения. Она добавляет загрузку команд из каталога, передачу общей конфигурации и встроенные команды управления Server/сборкой PHAR.

Для простого собственного CLI можно отключить внутренние команды и зарегистрировать только нужные приложению. Это также исключит из его интерфейса операции загрузки PHP и изменения php.ini.

Окно терминала
composer config repositories.localzet-console vcs https://github.com/localzet/Console
composer require localzet/console:dev-main

Манифест задаёт symfony/console >=5.0, но исходный код использует PHP 8: promoted properties, union types, mixed и строковые функции PHP 8. Широкий диапазон зависимости не является доказательством совместимости с каждой major-версией Symfony; проверяйте ту версию, которую зафиксировал ваш lockfile.

use localzet\Console;
use localzet\Console\Commands\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
require __DIR__ . '/vendor/autoload.php';
final class PingCommand extends Command
{
protected static string $defaultName = 'ping';
protected static string $defaultDescription = 'Check the CLI entry point';
protected function execute(InputInterface $input, OutputInterface $output): int
{
$output->writeln('pong');
return self::SUCCESS;
}
}
$app = new Console(['name' => 'Example', 'version' => '1.0'], false);
$app->add(new PingCommand());
$app->run();

Сохраните код в console.php и выполните php console.php ping. Аргумент false отключает автоматическое подключение внутренних команд; стандартные help и list остаются. Не запускайте CLI от root только ради обычной прикладной команды.

Возвращайте числовой exit code; стандартные SUCCESS/FAILURE наследуются от Symfony Command. Запись строки в Output сама по себе не задаёт результат процесса.

$app->installCommands(__DIR__ . '/app/command', 'app\command');

Метод рекурсивно ищет .php-файлы, выводит FQCN из относительного пути и namespace, проверяет доступность класса и наследование от localzet\Console\Commands\Command. Абстрактные классы пропускаются; остальные создаются с общей $config и добавляются в Application.

Настройте Composer autoload для namespace приложения заранее: сканирование файлов не заменяет автозагрузчик и не делает произвольный require каждого найденного файла. Имя файла и класс должны соответствовать ожидаемому FQCN. Не направляйте discovery на каталог, в который может писать недоверенный пользователь.

$config = [
'name' => 'Example',
'version' => '1.0',
'service' => ['mode' => 'preview'],
];

Console использует name и version в заголовке приложения. Если version не задан, обращается к Composer InstalledVersions для localzet/console.

Базовая Command получает массив конфигурации через конструктор. $this->config() возвращает его полностью; $this->config('service.mode', 'default') читает вложенное значение по точкам. Чтение использует isset(), поэтому сохранённое null также возвращает default. Интерполяции env и проверки schema конфигурации здесь нет.

Внутренние команды включены по умолчанию. Их доступность зависит от конфигурации и загруженных классов:

  • help, list, version — справка и версии;
  • start, stop, restart, reload, status, connections — делегирование lifecycle Server/приложения;
  • build:phar, build:bin — упаковка, показываются при наличии секции build;
  • get:php — загрузка PHP runtime;
  • fix-disable-functions — изменение loaded php.ini.

Lifecycle-команды не реализуют отдельный process manager. Они вызывают support\App::run() либо localzet\Server::runAll(); влияние аргументов зависит от вызываемого приложения. Не проверяйте stop/restart/reload на production-сервисе как безопасную проверку CLI.

$config['build'] = [
'input_dir' => __DIR__,
'output_dir' => __DIR__ . '/build',
'phar_filename' => 'example.phar',
'phar_alias' => 'example',
'phar_stub' => 'stub.php',
];

Создайте stub.php, который загружает приложение внутри архива. Для записи PHAR нужен соответствующий PHP extension и phar.readonly=0 в процессе сборки, например php -d phar.readonly=0 console.php build:phar.

Сборка удаляет ранее существовавший выходной PHAR. Перед упаковкой проверьте состав input и исключения: .env исключается по имени, но произвольные секреты, дампы и локальные ключи автоматически не распознаются. Лицензионные файлы зависимостей нужно включать в конечный дистрибутив независимо от исходных defaults исключения.

build:bin сначала выполняет PHAR-сборку, затем получает PHP micro-runtime и собирает единый бинарник. get:php и загрузчик micro-runtime отключают TLS peer verification и не проверяют криптографический digest скачанного runtime. Не используйте этот путь как доверенную supply-chain сборку без изменения загрузчика и проверки runtime-артефакта.

Параметры сборки, команды и вспомогательные методы

Исходный код · AGPL-3.0