Jakie są najlepsze praktyki i najlepsze miejsca dla pomocników Laravel 4 lub podstawowych funkcji?
Więc staram się zrozumieć najlepsze miejsce, aby umieścić funkcję globalną w laravel 4. Na przykład: formatowanie daty. Myślę, że nie warto robić elewacji, fasady są zbyt modułowe. Czytałem artykuły o tworzeniu folderu biblioteki i przechowywaniu tam klas, ale to również wydaje się dużo dla prostej funkcji. Czy takie "narzędzie" nie powinno być dostępne w szablonach blade?
Jakie są najlepsze praktyki dla czegoś takiego? I jak udostępnić ostrze szablony?
4 answers
Brzydki, leniwy i okropny sposób: na końcu bootstrap/start.php
dodaj include('tools.php')
i umieść swoją funkcję w Nowym pliku.
Czysty sposób: tworzenie biblioteki. W ten sposób będzie automatycznie ładowany tylko wtedy, gdy faktycznie go użyjesz.
- Utwórz
libraries
folder w swoimapp
folderze - Utwórz plik biblioteki, Utwórz w nim klasę i dodaj do niego funkcje statyczne
-
Opcja 1 : Edytuj
start/global.php
Aby dodaćapp_path().'/libraries'
do tablicyClassLoader::addDirectories(
. -
Opcja 2 : Edycja
composer.json
aby dodać"app/libraries"
do tablicyautoload
. Runcomposer dump-autoload
- wywołaj swoją klasę i funkcje statyczne z twoich poglądów.
O opcjach, cytowany z pliku global.php
Oprócz użycia Composera, możesz użyć loadera klasy Laravel do załaduj swoje kontrolery i modele. Jest to przydatne do przechowywania wszystkich Twoje klasy w "globalnej" przestrzeni nazw bez aktualizacji kompozytora.
Można połączyć obie opcje, gdzie Loader klasy Laravel automatycznie wyszukuje klasy w zarejestrowanych katalogach (Opcja 1, łatwiej), a Composer zachowa zapis wszystkich klas, ale dopiero po zaktualizowaniu (Opcja 2, może poprawić wydajność).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-24 12:14:30
Moim sposobem na to jest utworzenie nowego folderu w katalogu /app
w katalogu głównym Twojego projektu Laravel 4. Następnie dodaj ten folder do pierwszej tablicy pliku /app/start/global.php
w następujący sposób:
<?php
ClassLoader::addDirectories(array(
app_path().'/commands',
app_path().'/controllers',
app_path().'/models',
app_path().'/database/seeds',
app_path().'/classes', // This line is the one I've added.
));
Tak długo, jak struktura folderów w nowym folderze /app/classes
jest zgodna z konwencją przestrzeni nazw. Laravel 4 automatycznie załaduje wszystkie klasy / pliki w tym folderze. W ten sposób nie trzeba grzebać w plikach composer ani uruchamiać komend composer.
Nie wiem, czy jest to najlepsza praktyka ale to na pewno działa.
Jeśli utworzyłeś prosty plik o nazwie /app/classes/Helpers/Helper.php
taki jak ten:
<?php namespace Helpers;
class Helper {
public static function helloWorld()
{
return 'Hello World';
}
}
Wystarczy zadzwonić Helpers\Helper::helloWorld();
Możesz również nazwać tę klasę pomocniczą w pliku /app/config/app.php
. Wystarczy dodać coś takiego na końcu tablicy aliases
:
'Helper' => 'Helpers\Helper'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-13 22:39:23
Pomocnicy Laravela.metoda php polega na dodaniu go do "plików" w programie composer.json (https://github.com/laravel/framework/blob/master/composer.json):
"autoload": {
"classmap": [
...
],
"files": [
"app/libraries/helpers.php"
],
},
To, co robię, to tworzenie małych klas (kilka metod na klasę, jedna linia na metodę, wszystko rozciągnięte od czegoś i suche, to mój cel),
class ExtendedCarbon extends Carbon\Carbon {
public function formatDDMMAAAA($date)
{
/// format and return
}
}
Zapisz je w aplikacji / bibliotekach i dodaj do programu composer.json:
"autoload": {
"classmap": [
...
"app/libraries",
...
],
},
Wykonaj
composer dump
A potem używaj ich gdziekolwiek jesteś need
$formatted = (new ExtendedCarbon)->formatDDMMAAAA($date);
Obejrzyj ten film o refaktoryzacji: http://www.youtube.com/watch?v=DC-pQPq0acs
Przy okazji, jestem pewien, że to był 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.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-10 17:26:27
Możesz również użyć View::share()
razem z zamknięciami, aby to osiągnąć - właśnie o tym pisałem: http://www.develophp.org/2014/07/laravel-4-blade-helper-functions/
Dodatkowa korzyść: nie musisz tworzyć dodatkowej klasy, a także utrzymywać globalnej przestrzeni nazw w czystości.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-31 14:38:01