Как я могу вызвать функцию?

#symfony4 #phpspreadsheet

#symfony4 #phpspreadsheet

Вопрос:

У меня есть функция в классе в App / src / utils. У меня проблема с ее использованием с контроллера.

Мне нужно создать несколько листов с помощью phpspreadsheet. Длина метода составляет 260 строк. Я не думаю, что это хорошая практика иметь это в функции контроллера. Итак, я пытаюсь поместить это в класс (ExcelCreate) Я создал в App / Utils общедоступную функцию excelfrais, которая создает лист, используя массив с именем $ data и 2 переменные с именами $ user и $ nblig. Функция сохраняет лист и отправляет его в браузер. Я устанавливаю «использовать приложение Utils ExcelCreate;» в моем контроллере, я вызываю функцию из контроллера.

     use AppUtilsExcelCreate;
    ...
class ComiteController extends Controller
    {
    public function frais(Request $request, $nblig)
        { ...
                $data=$form->getData();
                $nblig=$data['nblig'];
                excelfrais($user,$data,$nblig); ...
        }}
  

И вот моя проблема: у меня есть исключение: Попытка вызвать функцию «excelfrais» из пространства имен «App Controller»

Ответ №1:

У меня был большой поиск. Внимательно прочитав документацию Symfony, которую я там нашел:https://symfony.com/doc/current/best_practices/business-logic.html решение: в функции моего контроллера мне нужно использовать класс, функция которого является свойством :

 public function frais(Request $request, ExcelCreate $create, $nblig)
    {...}
  

и вызов этой функции должен быть

 $create->excelfrais($user,$data,$nblig);