(使用Symfony框架)我正在尝试初始化像这样的对象
$token = new $provider;
其中$provider
为Dropbox
且我收到此异常
尝试加载课程" Dropbox"来自全局命名空间。 你忘记了"使用"声明?
但是,如果我将代码更改为$token = new Dropbox;
,那么它是否有效,问题在哪里?
答案 0 :(得分:1)
即使您在use语句中声明了public void updateText(View v){
Button btn = (Button) findViewById(v.getId());
String text = btn.getText().toString();
}
类,在该方法中创建类时,您也需要将该类的FQDN作为字符串。
实施例;
Dropbox
答案 1 :(得分:1)
值得一读http://php.net/manual/en/language.namespaces.dynamic.php
[...]合格和完全合格之间没有区别 动态类名,函数名或常量名[...]
中的名称
当您通过字符串引用类名时,需要使用完全限定的命名空间来定义它。
在类所属的命名空间前面加上
$class = 'Provider\Namespace\' . $provider;
$class = new $class;
如果你喜欢双引号,也不要忘记反斜杠
$class = "Provider\\Namespace\\$provider";
$class = new $class;
如果它确实存在于同一名称空间中,则只需预先设置php预定义常量
$class = __NAMESPACE__ . '\' . $provider;