tinker metodos crear controlador con comandos php laravel controller command artisan

php - metodos - Laravel 5: ¿cómo ejecutar un método de controlador desde un comando de artesano?



crear controlador laravel con metodos (1)

Necesito un código de mi Controlador para ejecutar cada diez minutos. Lo suficientemente fácil con el Scheduler y los Commands . Pero. Kernel.php un Command , lo Kernel.php con Laravel Scheduler (en Kernel.php ) y ahora no puedo crear instancias del Controller . Sé que es una forma incorrecta de abordar este problema, pero solo necesitaba una prueba rápida. ¿Hay alguna manera, para ser un poco hacky, de lograr esto? Gracias.

Actualización # 1:

El Command :

<?php namespace App/Console/Commands; use Illuminate/Console/Command; use App/Http/Controllers/StatsController; class UpdateProfiles extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = ''update-profiles''; /** * The console command description. * * @var string */ protected $description = ''Updates profiles in database.''; /** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); } /** * Execute the console command. * * @return mixed */ public function handle() { StatsController::updateStats(''<theProfileName>''); } }

updateStats() en StatsController.php

public static function updateStats($theProfileName) { // the body }

Esto devuelve una FatalErrorException :

[Symfony/Component/Debug/Exception/FatalErrorException] syntax error, unexpected ''if'' (T_IF)

Actualización # 2:

Resulta que he tenido un error tipográfico en el método updateStats() , ¡pero la respuesta de @ alexey-mezenin funciona como un encanto! También es suficiente importar el Controller al Command :

use App/Http/Controllers/StatsController;

Y luego inicialízalo como lo harías normalmente:

public function handle() { $statControl = new StatsController; $statControl->updateStats(''<theProfileName>''); }


Intente usar use Full/Path/To/Your/Controller; en tu código de comando y usa el método estáticamente:

public static function someStaticMethod() { return ''Hello''; }

En tu código de comando:

echo myClass::someStaticMethod();