在 php 或 Cakephp 中使用变量作为 class 名称 3

Use a variabel as a class name in php or Cakephp 3

我正在尝试 运行 来自另一个命令的命令数组。与 cronjob 类似的东西,但最终用户有一个视图编辑添加选项。 这是有效的:

                $fooCommand = new \App\Command\fooCommand();
                $barCommand = new \App\Command\barCommand();

但我需要的是:

            $classes = [
                "foo",
                "bar"
            ];
            foreach ($classes as $class) {
                $otherCommand = new '\App\Command\' .$class. Command();
                # code...
            }

类似的东西。在数组中迭代并启动 class。实际上 运行 从数据库中执行命令。

你需要分开你的类名并使用variables variable

foreach ($classes as $class) {
    $_class = "\App\Command\{$class}Command";
    $class_name = $class . 'Command';
    $$class_name = new $_class;
    # code...
}

你可以这样做:

foreach ($classes as $class) {
    $classWithNamespace = "\App\Command\{$class}Command";
    $otherCommand = new $classWithNamespace();
}

PHP Sandbox