Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Curso Avanzado de PHP

Curso Avanzado de PHP

Héctor Benitez

Héctor Benitez

Comandos

26/35
Recursos

Al estar trabajando en una aplicación de PHP, existen circunstancias en las que debemos hacer cosas que no necesariamente están dentro del navegador como ejecutar tareas asíncronas para que el usuario no tenga que esperar mucho. Para esto usamos los comandos que son aplicaciones de PHP que vamos a correr en la consola. Phinx es una aplicación de PHP diseñada para correr sobre la consola.

Symfony componentes es la parte de Symfony que nos permitirá crear muchos comandos y tener una interfaz amigable para usarlos.

  • La línea de inicio #!/usr/bin/env php indica a la terminal hacia dónde debe ir la ejecución.

Aportes 12

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Al día de hoy 01/02/2020, las configuraciones para el command necesitan lo siguiente:

<?php

namespace App\Commands;

use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;

class HelloWordCommand extends Command {

    protected static $defaultName = 'app:hello-word';

    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $output->writeLn('Hello World');
        return 0;
    }

}

Se le denomina Shebang en la jerga de Unix, al nombre que recibe al par de caracteres #! que se encuentran al inicio de los programas ejecutables interpretados. En algunas ocasiones se le denomina también hash-bang o sharpbang.

Algo importante, actualmente deben agregar:

return Command::SUCCESS;

Al final de sus archivos de comandos o les dará error^^

Este en mi command para generar usuarios:

<?php
namespace App\Commands;

use App\Models\User;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Illuminate\Database\Capsule\Manager as Capsule;

$dotenv = \Dotenv\Dotenv::createImmutable(__DIR__ . '/../..');
$dotenv->load();

$capsule = new Capsule;
$capsule->addConnection([
    'driver'    => 'mysql',
    'host'      => getenv('DB_HOST'),
    'database'  => getenv('DB_DATABASE'),
    'username'  => getenv('DB_USERNAME'),
    'password'  => getenv('DB_PASS'),
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
]);

// Make this Capsule instance available globally via static methods... (optional)
$capsule->setAsGlobal();

// Setup the Eloquent ORM... (optional; unless you've used setEventDispatcher())
$capsule->bootEloquent();



class CreateUserCommand extends Command
{
    // the name of the command (the part after "bin/console")
    protected static $defaultName = 'app:create-user';

    protected function configure()
    {
        $this
        // the short description shown while running "php bin/console list"
        ->setDescription('Creates a new user.')

        // the full command description shown when running the command with
        // the "--help" option
        ->setHelp('This command allows you to create a user...');
        
        $this
        // configure an argument
        ->addArgument('username', InputArgument::REQUIRED, 'The username of the user.')
        ->addArgument('email', InputArgument::REQUIRED, 'The email of the user.')
        ->addArgument('password',InputArgument::REQUIRED, 'User password');
    }

    protected function execute(InputInterface $input, OutputInterface $output)
    {
        $output->writeln([
            'User Creator',
            '============',
            '',
        ]);
            
        $user = new User();
        $user->name = $input->getArgument('username');
        $user->email = $input->getArgument('email');
        $user->password = password_hash($input->getArgument('password'), PASSWORD_DEFAULT);
        $user->save();
        
        // retrieve the argument value using getArgument()
        $output->writeln('Username: '.$input->getArgument('username'));
    
        return 0;
    }
}

Los comandos son muy útiles, sobre todo porque te ayudan a hacer tareas muy repetitivas a lo largo de la aplicación, así que hay que aprovechar y sacarle el máximo provecho a esto:D!

Por cierto, no es necesario que agreguen la extensión php a su archivo command, porque para eso ya se agrega el #!/usr/bin/env php así que yo recomiendo que llamen a su archivo “artisan” en lugar de “command”, cuando aprendan Laravel verán por qué 👀

¿Tengo una duda, un comando hecho con este paquete puede hacer alguna de las siguientes cosas? - Modificar la configuracion de apache, - modificar el crontab, ejecutar scripts. sql

Gracias, hay algunos componentes que ya en el mundo real veo difícil usar fuera de Laravel, sin embargo, creo que si es didáctico, mas algunos paquetes si es como mucho el jaleo, aun así hay mucho que extraerle a este curso, así como importar a cualquier proyecto eloquent, me gusto mucho esta lección.
Como curiosidad el paquete de Symfony Console es en el que se basan para crear artisan, la funcionalidad se puede lograr sin usar específicamente esta herramienta pero los outputs de colores y otras funcionalidades son mucho mas difíciles lograr en PHP puro, para crear archivos con boilerplate y cosas así lo veo superfuncional, hay ocasiones en que se desea autocrear ciertos archivos con cierta funcionalidad especifica en esos casos es superutil, muchas gracias por tan variado material.

seguro si yo sentí un jaleo usar tantos paquetes la clase requirió bastante tiempo muchas gracias!

Al estar trabajando en una aplicación de PHP, existen circunstancias en las que debemos hacer cosas que no necesariamente están dentro del navegador como ejecutar tareas asíncronas para que el usuario no tenga que esperar mucho

Para esto usamos los comandos que son aplicaciones de PHP que vamos a correr en la consola. Phinx es una aplicación de PHP diseñada para correr sobre la consola

Symfony componentes es la parte de Symfony que nos permitirá crear muchos comandos y tener una interfaz amigable para usarlos

La línea de inicio #!/usr/bin/env php indica a la terminal hacia dónde debe ir la ejecución

Symfony componentes es la parte de Symfony que nos permitirá crear muchos comandos y tener una interfaz amigable para usarlos.

La línea de inicio #!/usr/bin/env php indica a la terminal hacia dónde debe ir la ejecución.