2013-07-31 2 views
1

Я создал специальный класс-помощник PHP для использования в моем проекте Laravel 4.Laravel пользовательский вспомогательный класс не найден

Файл SASHelper.php находится в приложении/library/elf/sas и после добавления библиотек в файл composer.json. Я сделал композитор dumpautoload.

autload_classmap (последняя строка только):

'elf\\sas\\SASHelper' => $baseDir . '/app/libraries/elf/sas/SASHelper.php', 

класс Helper (упрощены для краткости):

<?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 не найден».

+0

вы пытались global.php? он не нуждается в компоновщике dump-autoload и легко загружает класс –

+0

Я только что попробовал: (app_path(). '/ libraries' и app_path(). '/ libraries/elf/sas') для ClassLoader :: addDirectories, но это не имело никакого значения. – SteB

+0

попробуйте прокомментировать строку пространства имен –

ответ

1

Вы пытались global.php? он не нуждается в компоновщике dump-autoload и легко загружает класс - Trying Tobemyself Rahul

Я только что попробовал: (app_path(). '/ libraries' и app_path(). '/ libraries/elf/sas ') в ClassLoader :: addDirectories, но это не имело никакого значения. - стеб

попробовать комментируя линию пространства имен - Попытка Tobemyself Rahul

@TryingTobemyselfRahul - Это работало (добавлено/библиотеки/эльфа/путь саллям)! Если вы добавите это ответ, я соглашусь, просто любопытно, любая идея, почему это сработало (или почему другой не сделал этого)? - SteB

Наилучшим предположением является использование пространства имен, доступное только для этого пространства имен, поэтому при прямом использовании имени класса его ошибка бросания.

так, либо не использовать пространство имен или добавить пространство имен перед именем класса, в вашем примере $statustext = elf\sas\SASHelper::SupportIntToText($client->SupportStatus); это должно работать

4

Если вы хотите использовать пространство имен, не забудьте composer dump-autoload!

В вашем случае:

1 - ваша папка \ ваш-file.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 - run composer dump-autoload

+0

Работает со мной! Танки! –

1

Сообщалось, что вы создали несколько классов в папке app/Http/xxx/yyy и хотели бы автозагрузить их.

  1. добавить ниже к композитору.JSON:

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

    ... },

  2. пробег composer dump-autoload

  3. проверки файл существует в поставщика/композитора/autoload_classmap.php
Смежные вопросы