未找到Laravel自定义帮助程序类

时间:2013-07-31 12:11:17

标签: laravel laravel-4 helper

我已经创建了一个自定义的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。”

3 个答案:

答案 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文件夹下创建了几个类,并想自动加载它们。

  1. 将以下内容添加到composer.json:

    "autoload": {    
     "classmap": [    
          "database",  
          "app/Http/xxx/yyy"
      ],
    

    ... },

  2. 运行composer dump-autoload

  3. 检查文件是否存在于vendor / composer / autoload_classmap.php