layfi-earn/vendor/webman/event/src/EventListCommand.php
2025-01-27 20:49:47 +08:00

51 lines
1.3 KiB
PHP

<?php
namespace Webman\Event;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Helper\Table;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class EventListCommand extends Command
{
protected static $defaultName = 'event:list';
protected static $defaultDescription = 'Show event list';
/**
* @return void
*/
protected function configure()
{
}
/**
* @param InputInterface $input
* @param OutputInterface $output
* @return int
*/
protected function execute(InputInterface $input, OutputInterface $output): int
{
$headers = ['id', 'event_name', 'callback'];
$rows = [];
foreach (Event::list() as $id => $item) {
$event_name = $item[0];
$callback = $item[1];
if (is_array($callback) && is_object($callback[0])) {
$callback[0] = get_class($callback[0]);
}
$cb = $callback instanceof \Closure ? 'Closure' : (is_array($callback) ? json_encode($callback) : var_export($callback, 1));
$rows[] = [$id, $event_name, $cb];
}
$table = new Table($output);
$table->setHeaders($headers);
$table->setRows($rows);
$table->render();
return self::SUCCESS;
}
}