Как загрузить класс в Symfony? - PullRequest
1 голос
/ 08 сентября 2011

Мне нужно загрузить класс в Symfony 1.4, но простого размещения файла в / apps / frontend / lib кажется недостаточно.

class test
{ function foo ($foo) { echo $foo; }
}

и я попытался использовать его в действии:

  public function executeTest(sfWebRequest $request)
  {
    $a = new test();
    $a->foo('aaa');
  }  

Я обновил кеш и до сих пор:

Fatal error: Class 'test' not found in ...

Должен ли я где-то это объявить?

Ответы [ 2 ]

4 голосов
/ 08 сентября 2011

Вы должны поместить свой файл в папку lib вашего проекта:

myproject / lib

[Обновление] Что касается загрузки класса из файла в myproject/apps/frontend/lib/, возможно, проблема в имени файла, где находится класс. Я нашел на этой странице Нежное введение в Symfony - Глава 2 - Изучение кода Symfony , что:

Затем Symfony будет искать определение MyClass во всех файлах, заканчивающихся с class.php в одной из директорий lib / проекта. Если класс определение найдено, оно будет включено автоматически.

Так что, если вы храните все свои классы в каталогах lib /, вам не нужно включить классы больше. Вот почему проекты Symfony обычно не содержат любые операторы include_once или require_once.

2 голосов
/ 08 сентября 2011

В отличие от другого ответа, классы в /apps/frontend/lib/ абсолютно должны загружаться автозагрузчиком, если вы выполняете действие frontend.

Здесь происходит что-то еще. Ваш класс на самом деле называется тест? Если вы работаете, очистили ли вы кеш?

...