Уродливый, ленивый и ужасный способ: в конце bootstrap/start.php
добавьте include('tools.php')
и поместите свою функцию в этот новый файл.
Чистый способ: создать библиотеку. Таким образом, он будет загружен ТОЛЬКО при его использовании.
- Создайте
libraries
папку внутри вашей app
папки
- Создайте свой библиотечный файл, создайте в нем класс и добавьте к нему статические функции.
- Вариант 1 : Изменить,
start/global.php
чтобы добавить app_path().'/libraries'
в ClassLoader::addDirectories(
массив.
- Вариант 2 : Изменить,
composer.json
чтобы добавить "app/libraries"
в autoload
массив. Бегатьcomposer dump-autoload
- Вызовите ваш класс и статические функции из ваших представлений.
О ваших опциях, указанных в global.php
файле
В дополнение к использованию Composer, вы можете использовать загрузчик классов Laravel для загрузки ваших контроллеров и моделей. Это полезно для хранения всех ваших классов в «глобальном» пространстве имен без обновления Composer.
Вы можете комбинировать оба варианта, когда загрузчик классов Laravel будет автоматически искать классы в зарегистрированных каталогах ( вариант 1 , проще), а Composer будет вести учет всех классов, но только после его обновления ( вариант 2 , может повысить производительность).
app_path().'/library'
в start / global.php.sitehelpers.php
Мой способ сделать это - создать новую папку в
/app
каталоге в корне вашего проекта Laravel 4. Затем добавьте эту папку в первый массив/app/start/global.php
файла следующим образом:Пока структура папок в новой
/app/classes
папке соответствует вашему соглашению о пространстве имен. Laravel 4 автоматически загрузит все классы / файлы в этой папке. Таким образом, нет необходимости копаться в каких-либо файлах композитора или запускать команду композитора.Не уверен, что это лучшая практика, но она, безусловно, работает.
Если вы создали простой файл с именем,
/app/classes/Helpers/Helper.php
подобным этому:Все, что вам нужно сделать, это позвонить
Helpers\Helper::helloWorld();
Вы также можете использовать псевдоним этого вспомогательного класса в своем
/app/config/app.php
файле. Просто добавьте что-то вроде этого в конецaliases
массива:источник
composer dump-autoload
- я и потратил 20 минут, почесывая голову.Метод helpers.php от Laravel заключается в добавлении его в ваши «файлы» в файле composer.json ( https://github.com/laravel/framework/blob/master/composer.json ):
Что я делаю, так это создаю маленькие классы (несколько методов на класс, по одной строке на метод, все расширяется от чего-то и DRY, это моя цель),
сохраните их в app / библиотеки и добавьте в composer.json:
казнить
А потом просто используйте их там, где вам нужно
Посмотрите это видео о рефакторинге: http://www.youtube.com/watch?v=DC-pQPq0acs
Кстати, я уверен, что это всего лишь пример, но вам может не понадобиться помощник для форматирования дат, поскольку все даты в Laravel являются экземплярами Carbon ( https://github.com/briannesbitt/Carbon ) и он имеет множество методов для форматирования даты и времени.
источник
formatDDMMAAAA()
какstatic
.Вы также можете использовать
View::share()
вместе с замыканиями для достижения этой цели - я только что написал об этом: http://www.develophp.org/2014/07/laravel-4-blade-helper-functions/Дополнительное преимущество: вам не нужно создавать дополнительный класс, а также поддерживать чистоту глобального пространства имен.
источник