<?php namespace App\Command; use App\Application; use App\Concerns\WritesToConsole; use GetOpt\Command; use GetOpt\GetOpt; use GetOpt\Option; use Hugga\Console; abstract class AbstractCommand extends Command { use WritesToConsole; /** @var string */ protected $name = 'unnamed'; /** @var string */ protected $description = ''; /** @var Application */ protected $app; public function __construct(Application $app, Console $console) { $this->app = $app; $this->console = $console; parent::__construct($this->name, [$this, 'handle']); if (!empty($this->description)) { $this->setDescription($this->description); } } abstract public function handle(GetOpt $getOpt): int; }