Można utworzyć nowy katalog gdzieś w katalogu aplikacji, na przykład, app/libraries
Następnie w pliku composer.json można dołączyć app/libraries
w autoload classmap:
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"require": {
"laravel/framework": "4.2.*",
},
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/libraries", <------------------ YOUR CUSTOM DIRECTORY
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
]
},
"scripts": {
"post-install-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"post-update-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"post-create-project-cmd": [
"php artisan key:generate"
]
},
"config": {
"preferred-install": "dist"
},
"minimum-stability": "stable",
}
Pamiętaj, aby uruchomić composer dump-autoload
po zmodyfikowaniu pliku composer.json.
Załóżmy, że twoja nazwa klasy nazywa się CustomClass.php
i znajduje się w katalogu app/libraries
(więc pełna ścieżka to app/libraries/CustomClass.php
). Jeśli poprawnie podasz nazwy swojej klasy, zgodnie z konwencją, twoja przestrzeń nazw zostanie prawdopodobnie nazwana libraries
. Tylko ze względu na przejrzystość nazwiemy naszą przestrzeń nazw custom
, aby uniknąć nieporozumień z katalogiem.
$class = new \custom\CustomClass();
Alternatywnie, można nadać mu alias w pliku app/config/app.php
:
/*
|--------------------------------------------------------------------------
| Class Aliases
|--------------------------------------------------------------------------
|
| This array of class aliases will be registered when this application
| is started. However, feel free to register as many as you wish as
| the aliases are "lazy" loaded so they don't hinder performance.
|
*/
'aliases' => array(
...
'CustomClass' => 'custom\CustomClass',
...
)
I można utworzyć wystąpienia klasy z dowolnego miejsca w aplikacji jak w przypadku każdej innej klasy:
$class = new CustomClass();
Mam nadzieję, że to pomoże!
Dodałem '" app/libraries "' do mojej sekcji composer.json autoload-> classmap. Następnie dodałem do bibliotek 'TextCleaner => 'library \ TextCleaner' moje aliasy app/config/app.php. Próbowałem utworzyć instancję mojej klasy, jak '$ imageCleaner = new \ libraries \ TextCleaner()' ORAZ jak '$ imageCleaner = new TextCleaner();' i oba błędy dla mnie mówią, że klasa nie istnieje. Tak Uruchomiłem pomyślnie funkcję dump-autload programu composer. –
@BillGarrison Upewnij się, że masz nazwy na swojej klasie. Załóżmy, że twoja przestrzeń nazw dla twojej klasy nazywa się "helpers" ("pomocnicy przestrzeni nazw" na górze twojej klasy). W twoim pliku config/app.php umieścisz go jako ''TextCleaner' => 'helpers \ TextCleaner''. Zmieniłem oryginalną odpowiedź, aby pomóc wyjaśnić. – eluong
pomógł mi dzisiaj :) +1 –