Вы можете создать новый каталог где-то в каталоге приложения, например, app/libraries
Затем в файле composer.json, вы можете включить app/libraries
в вашем автозагрузку 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",
}
не забудьте запустить composer dump-autoload
после изменения вашего композитора.json.
Предположим, что ваше имя класса называется CustomClass.php
, и оно находится в каталоге app/libraries
(поэтому полный путь app/libraries/CustomClass.php
). Если вы правильно разместили свой класс на своем классе, ваше соглашение, вероятно, будет иметь имя libraries
. Для ясности мы будем называть наше пространство имен custom
, чтобы избежать путаницы с каталогом.
$class = new \custom\CustomClass();
В качестве альтернативы, вы можете дать ему псевдоним в файле 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',
...
)
И вы можете создать экземпляр класса из любой точки приложения, как вы бы с любым другим классом:
$class = new CustomClass();
Надеюсь, это поможет!
Я добавил '" app/libraries "' в мой класс для компоновки composer.json autoload-> classmap. Затем я добавил 'TextCleaner => 'libraries \ TextCleaner' в свои псевдонимы app/config/app.php. Я попытался создать экземпляр класса, например '$ imageCleaner = new \ libraries \ TextCleaner()' И как '$ imageCleaner = new TextCleaner();' и обе ошибки для меня говорят, что класс не существует. Да, я успешно выполнил автозагрузку композитора. –
@BillGarrison Убедитесь, что у вас есть имена, размещенные на вашем классе. Предположим, что ваше пространство имен для вашего класса называется «помощниками» («помощники пространства имен» в верхней части вашего класса). В файле config/app.php вы должны включить его как ''TextCleaner' => 'helpers \ TextCleaner''. Я отредактировал оригинальный ответ, чтобы помочь уточнить. – eluong
помог мне сегодня :) +1 –