webman/console Plugin de línea de comandos
webman/console
está basado en symfony/console
Instalación
composer require webman/console
Comandos soportados
Uso
php webman comando
Por ejemplo php webman version
Sugerencia
En sistemas Linux, se puede simplificar a./webman comando
Comandos soportados
version
Imprimir el número de versión de webman
route:list
Imprimir la configuración de rutas actual
make:controller
Crear un archivo de controlador
Por ejemplo php webman make:controller admin
creará un app/controller/AdminController.php
Por ejemplo php webman make:controller api/user
creará un app/api/controller/UserController.php
make:model
Crear un archivo de modelo
Por ejemplo php webman make:model admin
creará un app/model/Admin.php
Por ejemplo php webman make:model api/user
creará un app/api/model/User.php
make:middleware
Crear un archivo de middleware
Por ejemplo php webman make:middleware Auth
creará un app/middleware/Auth.php
make:command
Crear un archivo de comando personalizado
Por ejemplo php webman make:command db:config
creará un app\command\DbConfigCommand.php
plugin:create
Crear un plugin base
Por ejemplo php webman plugin:create --name=foo/admin
creará los directorios config/plugin/foo/admin
y vendor/foo/admin
Ver Crear un plugin base
plugin:export
Exportar un plugin base
Por ejemplo php webman plugin:export --name=foo/admin
Ver Crear un plugin base
plugin:export
Exportar un plugin de aplicación
Por ejemplo php webman plugin:export shop
Ver Plugins de aplicación
build:phar
Empacar el proyecto webman en un archivo phar
Ver Empaque phar
build:bin
Empacar el proyecto webman en un archivo binario ejecutable
Ver Empaque phar
Comando personalizado
Los usuarios pueden definir sus propios comandos, por ejemplo, el siguiente es un comando para imprimir la configuración de la base de datos
- Ejecutar
php webman make:command config:mysql
- Abrir
app/command/ConfigMySQLCommand.php
y modificarlo como sigue
<?php
namespace app\command;
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 ConfigMySQLCommand extends Command
{
protected static $defaultName = 'config:mysql';
protected static $defaultDescription = 'Mostrar la configuración actual del servidor MySQL';
protected function execute(InputInterface $input, OutputInterface $output)
{
$output->writeln('La información de configuración de MySQL es la siguiente:');
$config = config('database');
$headers = ['name', 'default', 'driver', 'host', 'port', 'database', 'username', 'password', 'unix_socket', 'charset', 'collation', 'prefix', 'strict', 'engine', 'schema', 'sslmode'];
$rows = [];
foreach ($config['connections'] as $name => $db_config) {
$row = [];
foreach ($headers as $key) {
switch ($key) {
case 'name':
$row[] = $name;
break;
case 'default':
$row[] = $config['default'] == $name ? 'true' : 'false';
break;
default:
$row[] = $db_config[$key] ?? '';
}
}
if ($config['default'] == $name) {
array_unshift($rows, $row);
} else {
$rows[] = $row;
}
}
$table = new Table($output);
$table->setHeaders($headers);
$table->setRows($rows);
$table->render();
return self::SUCCESS;
}
}
Prueba
Ejecutar en la línea de comandos php webman config:mysql
El resultado es similar a lo siguiente:
+-------+---------+--------+-----------+------+----------+----------+----------+-------------+---------+-----------------+--------+--------+--------+--------+---------+
| name | default | driver | host | port | database | username | password | unix_socket | charset | collation | prefix | strict | engine | schema | sslmode |
+-------+---------+--------+-----------+------+----------+----------+----------+-------------+---------+-----------------+--------+--------+--------+--------+---------+
| mysql | true | mysql | 127.0.0.1 | 3306 | mysql | root | ****** | | utf8 | utf8_unicode_ci | | 1 | | | |
+-------+---------+--------+-----------+------+----------+----------+----------+-------------+---------+-----------------+--------+--------+--------+--------+---------+
Más información
http://www.symfonychina.com/doc/current/components/console.html