我为我的所有全局功能创建了2015-08-03 13:29:08,377 ModuleManager
Entering PrepareModules
2015-08-03 13:29:08,378 ModuleManager
Entering LoadModules
2015-08-03 13:29:08,378 ModuleManager
LoadModules, _modulesDirectory: C:\Workspace\esuite\UI.Desktop\Larix.Esuite.Desktop\bin\Debug\
2015-08-03 13:29:12,438 ModuleManager
Entering SelfInitialize
。当我运行我的第一个函数{{Common :: test()}}
它工作正常但是我不能在其中使用模型。
common.php
我跑{{Common :: getCmsBlocks()}}
时,我的输出结果不合适答案 0 :(得分:1)
如果您的模型与 App \ library 位于不同的命名空间,则需要在模型类名称前加上其命名空间,否则PHP将尝试加载 App \ library \ Modelname 强>可能不是你需要的。
替换
$model = Modelname::all();
与
$model = \Your\Model\Namespace\Modelname::all();
如果您在声明的命名空间中的多个位置使用 Modelname 类,则可以使用 use 语句导入/别名,以便您可以通过classname引用该类你的代码:
namespace App\library;
use Your\Model\Namespace\Modelname;
{
class Common {
public static function getCmsBlocks()
{
$model = Modelname::all(); //this will work now
}
}
}
无法定义全局使用以供文件中的所有命名空间使用,因为使用始终引用要声明的命名空间。
答案 1 :(得分:1)
如上所述,答案是完美的,但如果您不希望每次在每个文件的开头都包含命名空间,那么只需添加一些
使用此:
\App\ModelName::all();
\App\ModelName1::update(item);
\App\ModelName2::find(1);
给出如上所述的路径,每次都不需要使用命名空间。
注意:上面是App目录中的模型路径。因此,如果要将它们放在不同的位置,请相应地进行更改。