我已经创建了一个自定义的php助手类,可以在我的Laravel 4项目中使用。
SASHelper.php文件在app / libraries / elf / sas中,在将库添加到composer.json文件后,我做了一个作曲家dumpautoload。
autload_classmap(仅限最后一行):
'elf\\sas\\SASHelper' => $baseDir . '/app/libraries/elf/sas/SASHelper.php',
助手类(为简洁而简化):
<?php
namespace elf\sas;
class SASHelper
{
static public function SupportIntToText($status)
{
return 'Supported';
}
static public function LicTypeToText($lic)
{
return '32-Bit';
}
}
当我尝试从我的控制器调用静态方法时:
$statustext = SASHelper::SupportIntToText($client->SupportStatus);
此时,提琴手正在报道:
“找不到类SASHelper。”
答案 0 :(得分:4)
如果您想使用名称空间,请不要忘记composer dump-autoload
!
在你的情况下:
1 - 你的文件夹\ your-file.php
<?php
namespace elf\sas;
class SASHelper{
static public function SupportIntToText($status){
return 'Supported';
}
static public function LicTypeToText($lic){
return '32-Bit';
}
}
2 - config \ app.php
添加到您的别名
'SASHelper' => 'elf\sas\SASHelper'
3 - 运行composer dump-autoload
答案 1 :(得分:1)
你尝试过global.php吗?它不需要composer dump-autoload,并轻松加载类 - 尝试Tobemyself Rahul我刚试过它:( app_path()。'/ libraries'和app_path()。'/ libraries / elf / sas')到ClassLoader :: addDirectories但它没有任何区别。 - SteB
尝试评论命名空间行 - 尝试Tobemyself Rahul
@TryingTobemyselfRahul - 有用(添加/ libraries / elf / sas路径)!如果你添加这是一个答案我会接受,只是好奇,任何想法为什么它工作(或为什么另一个没有)? - SteB
最好的猜测是当你使用名称空间时它只能用于那个名称空间,所以当直接使用类名时它会抛出错误。
所以要么不使用命名空间,要么在类名之前添加命名空间,在你的示例中$statustext = elf\sas\SASHelper::SupportIntToText($client->SupportStatus);
这应该可行
答案 2 :(得分:1)
说你在app / Http / xxx / yyy文件夹下创建了几个类,并想自动加载它们。
将以下内容添加到composer.json:
"autoload": {
"classmap": [
"database",
"app/Http/xxx/yyy"
],
... },
运行composer dump-autoload