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