Php 如何修复';你忘了一个“吗?”;使用「;声明[…]和#x27;仅当使用静态方法时才使用Symfony?
在Symfony框架中,我试图使用我的一个模型类(特别是一个用于条令ORM的Contao包装器)将一些内容转储到我的数据库中 我的模型有一个use语句,我可以实例化我的模型,甚至可以毫无问题地将它保存到数据库中。但是,当我尝试调用模型类上的静态方法时,我收到错误:Php 如何修复';你忘了一个“吗?”;使用「;声明[…]和#x27;仅当使用静态方法时才使用Symfony?,php,symfony,orm,namespaces,contao,Php,Symfony,Orm,Namespaces,Contao,在Symfony框架中,我试图使用我的一个模型类(特别是一个用于条令ORM的Contao包装器)将一些内容转储到我的数据库中 我的模型有一个use语句,我可以实例化我的模型,甚至可以毫无问题地将它保存到数据库中。但是,当我尝试调用模型类上的静态方法时,我收到错误: Attempted to load class "GenericModel" from the global namespace. Did you forget a "use" statement for "correct\name
Attempted to load class "GenericModel" from the global namespace. Did you
forget a "use" statement for "correct\namespace\GenericModel"?
这对我来说似乎很奇怪,因为当我想要实例化这个类时,它工作得非常好,但是当我试图调用静态函数时,它失败了,并出现了一个名称空间错误
如何更改代码以使用静态函数?如果我遗漏了任何重要信息,请务必让我知道
use correct\namespace\GenericModel;
class GenericClass {
public function doThing() {
$genericModel = new GenericModel(); // this works as expected
$genericModel->setRow([
'field1' => 'banana',
'field2' => 'strawberry'
]);
$genericModel->save();
GenericModel::findBy('field1','banana'); // this line causes the error
}
}
我在这里找到了问题的解决方案: 它是用德语写的,所以我将对问题的机制做一个快速的总结 静态findBy方法调用集合中调用变量类名函数的方法。本例中的类名为“GenericModel”。由于“GenericModel”不在全局名称空间中,因此出现了上述错误 解决方案是在Contao的配置中注册类名
$GLOBALS['TL_MODELS']['table_name'] = 'namespace\GenericModel';
试着用static::findBy('field1','banana')代替你试过composer dump autoload吗?