我正在尝试加载一个名称空间和一个名字的类,我只知道变量的值。
我正在尝试这个:
<php
/**
* Namespaces and class have the same name.
*/
require_once($arg1 . '.class.php');
use \$arg1\$arg1;
/**
* also I have try
* use \{$arg1}\{$arg1};
*/
$object = new $arg1();
var_dump($object);
?>
它让我回来了:
PHP Parse错误:语法错误,意外的'$ arg1'(T_VARIABLE),在第5行的/home/vagrant/execute.php中需要标识符(T_STRING)
有什么方法可以加载它,或者我尝试用工厂模式制作它?
答案 0 :(得分:0)
您正在运行的PHP版本&amp;你试过这个:
require_once $arg1 . ".class.php";
答案 1 :(得分:0)
AFAIK,(不确定PHP7)在名称空间调用中链接变量或常量是不可能的。
如果你只想根据变量中的变化值加载一个类(来自$ argv或$ _GET或其他),我通常会这样做: (它是一个控制台脚本)
<?php
class foo {
function foo() {
print "Hello! i'm foo class \n";
}
}
class quux {
function quux() {
print "Hello! i'm quux class \n";
}
function another_method() {
print "Bye! i'm another method \n";
}
}
$var = $argv[1];
$obj = new $var;
if ("quux" == $var){
$obj->another_method();
}
这是我得到的输出:)
∙ php oskar.php foo 9:58 leandro@montana
Hello! i'm foo class
~
∙ php oskar.php quux 9:59 leandro@montana
Hello! i'm quux class
Bye! i'm another method
事实上,你可以直接new $argv[1]
但你不能new $argv[1]->another_method();
xD