Brzydki, leniwy i okropny sposób: na koniec bootstrap/start.php
dodaj include('tools.php')
i umieść swoją funkcję w tym nowym pliku.
Czysty sposób: Utwórz bibliotekę. W ten sposób zostanie automatycznie załadowany TYLKO wtedy, gdy faktycznie go użyjesz.
- Utwórz
libraries
folder w swoim app
folderze
- Utwórz plik biblioteki, utwórz w nim klasę i dodaj do niej funkcje statyczne
- Opcja 1 : Edytuj,
start/global.php
aby dodać app_path().'/libraries'
do ClassLoader::addDirectories(
macierzy.
- Opcja 2 : Edytuj,
composer.json
aby dodać "app/libraries"
do autoload
macierzy. Biegaćcomposer dump-autoload
- Wywołaj swoją klasę i funkcje statyczne z widoków.
O twoich opcjach, cytowane z global.php
pliku
Oprócz korzystania z Composera, możesz użyć programu ładującego klasy Laravel do załadowania kontrolerów i modeli. Jest to przydatne do utrzymywania wszystkich klas w „globalnej” przestrzeni nazw bez aktualizacji Composera.
Możesz połączyć obie opcje, w których moduł ładujący klasy Laravel automatycznie wyszuka klasy w zarejestrowanych katalogach ( opcja 1 , łatwiejsza), a Composer będzie zapisywać wszystkie klasy, ale dopiero po jej zaktualizowaniu ( opcja 2 , może poprawić wydajność).
app_path().'/library'
w start / global.php.sitehelpers.php
Mój sposób na zrobienie tego polega na utworzeniu nowego folderu w
/app
katalogu głównym projektu Laravel 4. Następnie dodaj ten folder do pierwszej tablicy/app/start/global.php
pliku w następujący sposób:O ile struktura folderów w nowym
/app/classes
folderze jest zgodna z konwencją dotyczącą przestrzeni nazw. Laravel 4 automatycznie załaduje wszystkie klasy / pliki w tym folderze. W ten sposób nie ma potrzeby zagłębiania się w żadne pliki kompozytora ani uruchamiania polecenia kompozytora.Nie jestem pewien, czy to najlepsza praktyka, ale z pewnością działa.
Jeśli utworzyłeś prosty plik o nazwie
/app/classes/Helpers/Helper.php
takiej jak ten:Wystarczy, że zadzwonisz
Helpers\Helper::helloWorld();
Możesz również aliasować tę klasę pomocniczą w swoim
/app/config/app.php
pliku. Po prostu dodaj coś takiego na końcualiases
tablicy:źródło
composer dump-autoload
- zrobiłem to i spędziłem 20 minut na drapaniu się po głowie.Metoda helpers.php Laravela polega na dodaniu go do swoich "plików" w pliku composer.json ( https://github.com/laravel/framework/blob/master/composer.json ):
Robię małe klasy (kilka metod na klasę, jedna linia na metodę, wszystko rozszerzone z czegoś i DRY, to mój cel),
zapisz je do nich w aplikacji / bibliotekach i dodaj do composer.json:
Wykonać
A potem po prostu używaj ich tam, gdzie potrzebujesz
Obejrzyj ten film o refaktoryzacji: http://www.youtube.com/watch?v=DC-pQPq0acs
Nawiasem mówiąc, jestem pewien, że to tylko przykład, ale możesz nie potrzebować pomocnika do formatowania dat, ponieważ wszystkie daty w Laravel są instancjami Carbon ( https://github.com/briannesbitt/Carbon ) i ma mnóstwo metod formatowania daty i czasu.
źródło
formatDDMMAAAA()
jakostatic
.Możesz również użyć
View::share()
razem z zamknięciami, aby to osiągnąć - właśnie opublikowałem o tym: http://www.develophp.org/2014/07/laravel-4-blade-helper-functions/Dodatkowa korzyść: nie musisz tworzyć dodatkowej klasy, a także utrzymywać czystość globalnej przestrzeni nazw.
źródło