在 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();
}
我正在尝试 运行 来自另一个命令的命令数组。与 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();
}