Как динамически генерировать объект контроллера CakePHP с помощью переменной? - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь запустить любое действие контроллера из оболочки.

Код ниже работает

    $object = new TestController();
    $object->index();

Но нижеприведенный код не работает

// planed to change $controller dynamically from command line arguments
$controller = "TestController";
$object = new $controller();
$object->index();

Я получаю сообщение об ошибке: класс «TestController» не найден.

Ниже приведен мой полный код командного файла

<?php
namespace App\Command;
use Cake\Console\Arguments;
use Cake\Console\Command;
use Cake\Console\ConsoleIo;
use Cake\Console\ConsoleOptionParser;
use App\Controller\TestController;
class ControllerCommand extends Command
{
    protected function buildOptionParser(ConsoleOptionParser $parser)
    {
        $parser
            ->addArgument('controllername', [
                'help' => 'controllername',
                'required' => true
            ])
            ->addArgument('actionname', [
                'help' => 'actionname',
                'required' => true
            ]);

        return $parser;
    }
    public function execute(Arguments $args, ConsoleIo $io)
    {
        $controller=$args->getArgument('controllername');
        $action=$args->getArgument('actionname');
        //$object = new TestController();
        $controller = "TestController";
        $object = new $controller();
        $object->index();
    }
}
...