Включить служебный класс по всему приложению cakephp 3

У меня есть собственный служебный класс, который содержит некоторые методы для общего использования и находится в src/Utility/UtilityClass.

Я могу включить класс Utility в контроллер, например.

use App\Utility\ArrayUtil;

а затем вызовите класс в моих контроллерах, например.

ArrayUtil::myMethod();

И это работает. Мне нужно включить UtilityClass в начальную загрузку, чтобы он применялся ко всему приложению, чтобы я мог повторно использовать его в моделях, шаблонах и других контроллерах.

Я попытался загрузить его в config/bootstrap.php, но получаю эту ошибку:

Ошибка: класс ArrayUtil не найден

Есть идеи


person Fury    schedule 12.03.2016    source источник
comment
Я объяснил вам, что импорт PHP работает для каждого файла. Была ли действительно необходимость удалить ваш вопрос и сделать репост этого?   -  person ndm    schedule 12.03.2016
comment
@ndm Пожалуйста, попробуйте сами, тогда вы поймете, что я имею в виду. Вы даете мне другой подход (создание помощника представления) или ответы, такие как Object Manipulator. Это не работает для меня. Это должно быть правильным способом, чтобы ничто не приходило на ум первым.   -  person Fury    schedule 15.03.2016
comment
Я никогда не упоминал хелперы, все, что я говорю, это просто то, как работают пространства имен PHP, и вы должны научиться с этим справляться, так как это работает практически в любой современной библиотеке PHP. Попытка вновь ввести эти концепции автозагрузки CakePHP 1/2.x — далеко не хорошая идея.   -  person ndm    schedule 15.03.2016
comment
@ndm Спасибо. Я уже начал.   -  person Fury    schedule 16.03.2016


Ответы (1)


Вы можете добавить эту строку вверху страницы, будь то модель, представление или контроллер.

 use App\Utility\ArrayUtil;

Если вы используете эту утилиту в нескольких представлениях, я предлагаю вам написать эту строку в Template/Layout/default.ctp, так как все шаблоны будут частью этого.

Надеюсь это поможет.

Мир! хД

person Object Manipulator    schedule 12.03.2016
comment
Импорт PHP имеет область действия для каждого файла, добавление их в файл макета не повлияет на другие шаблоны представления. - person ndm; 12.03.2016
comment
Спасибо, но я так не делаю. Обычно в торте 2 я загружаю утилиту в bootstrap.php, но в торте 3 она не работает. Я верю в бутстрап не только мой пользовательский, но и некоторые другие классы, например, не загружаются. - person Fury; 13.03.2016
comment
Cake 2 не использует namepsace, а Cake 3 использует, это большая разница, которая не позволит вам достичь того, что вы сделали в Cake 2. В Cake 3 вам понадобится `use App\Utility\ArrayUtil;` в каждом файле. вы хотите использовать свой класс. - person ADmad; 15.03.2016