1

我创建了一个自定义 php 帮助器类,用于我的 Laravel 4 项目。

SASHelper.php 文件位于 app/libraries/elf/sas 中,在将库添加到 composer.json 文件后,我完成了 composer 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);

此时 Fiddler 正在报告:
“找不到类 SASHelper。”

4

3 回答 3

4

如果你想使用命名空间,别忘了composer dump-autoload

在你的情况下:

1 - 你的文件夹\你的文件.php

<?php
namespace elf\sas;

class SASHelper{

static public function SupportIntToText($status){
        return 'Supported';
}

static public function LicTypeToText($lic){
        return '32-Bit';
}
}

2 - 配置\app.php

添加到您的别名

'SASHelper' => 'elf\sas\SASHelper'

3 - 运行composer dump-autoload

于 2014-06-25T10:58:27.293 回答
1

你试过 global.php 吗?它不需要 composer dump-autoload,并且可以轻松加载类 – Trying Tobemyself Rahul

我刚刚尝试过: (app_path() .'/libraries' 和 app_path() .'/libraries/elf/sas') 到 ClassLoader::addDirectories 但它没有任何区别。– SteB

尝试评论命名空间行 – Trying Tobemyself Rahul

@TryingTobemyselfRahul - 有效(添加了 /libraries/elf/sas 路径)!如果您添加这是一个我会接受的答案,只是好奇,知道它为什么起作用(或者为什么另一个不起作用)?– SteB

最好的猜测是,当您使用命名空间时,它仅适用于该命名空间,因此当直接使用类名时,它会抛出错误。

所以要么不使用命名空间,要么在类名之前添加命名空间,在你的例子中 $statustext = elf\sas\SASHelper::SupportIntToText($client->SupportStatus);这应该有效

于 2013-07-31T14:15:14.667 回答
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
于 2015-07-09T00:57:32.353 回答