Я внедряю Сервис в конструктор моего контроллера, но, к сожалению, он не работает.
Это файл контроллера:
namespace App\Http\Controllers;
use Glass\Calculator\Services\CalculatorService;
class CalculatorController extends Controller
{
/**
* CalculatorController constructor.
* @param CalculatorService $calculatorService
*/
public function __construct(CalculatorService $calculatorService)
{
$this->calculatorService = $calculatorService;
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Http\Response
*/
public function homepage()
{
return view('emoji.homepage');
}
}
Это мое web.php
:
Route::get('/','CalculatorController@homepage');
И это трассировка стека:
ReflectionException in Container.php line 809: Class Glass\Calculator\Services\CalculatorService does not exist
in Container.php line 809
at ReflectionParameter->getClass() in Container.php line 809
at Container->getDependencies(array(object(ReflectionParameter)), array()) in Container.php line 790
at Container->build('App\Http\Controllers\CalculatorController', array()) in Container.php line 644
at Container->make('App\Http\Controllers\CalculatorController', array()) in Application.php line 709
at Application->make('App\Http\Controllers\CalculatorController') in Route.php line 203
at Route->getController() in Route.php line 316
at Route->controllerMiddleware() in Route.php line 278
at Route->gatherMiddleware() in Router.php line 666
at Router->gatherRouteMiddleware(object(Route)) in Router.php line 646
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 629
at Router->dispatchToRoute(object(Request)) in Router.php line 607
at Router->dispatch(object(Request)) in Kernel.php line 268
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 46
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 137
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 104
at Pipeline->then(object(Closure)) in Kernel.php line 150
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 117
at Kernel->handle(object(Request)) in index.php line 54
Я пробовал несколько раз composer dump-autoload
но без удачи. Любые идеи приветствуются.
В случае, если вам нужно composer.json
может быть ответственным, я могу вставить это здесь.
ОБНОВИТЬ
Итак, это мой composer.json
файл:
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
"php": ">=5.6.4",
"laravel/framework": "5.3.*"},
"require-dev": {
"fzaninotto/faker": "~1.4",
"mockery/mockery": "0.9.*",
"phpunit/phpunit": "~5.0",
"symfony/css-selector": "3.1.*",
"symfony/dom-crawler": "3.1.*"},
"autoload": {
"classmap": [
"database"],
"psr-4": {
"App\\": "app/"}
},
"autoload-dev": {
"classmap": [
"tests/TestCase.php"]
},
"scripts": {
"post-root-package-install": [
"php -r \"file_exists('.env') || copy('.env.example', '.env');\""],
"post-create-project-cmd": [
"php artisan key:generate"],
"post-install-cmd": [
"Illuminate\\Foundation\\ComposerScripts::postInstall",
"php artisan optimize"],
"post-update-cmd": [
"Illuminate\\Foundation\\ComposerScripts::postUpdate",
"php artisan optimize"]
},
"config": {
"preferred-install": "dist"}
}
CalculatorService: namespace Glass\Calculator\Services;
и как файл, помещенный под app\Glass\Calculator\Services;
Ошибки как Class Whatever\Class does not exist
, когда вы используете PSR-4, не заботится о composer update
, Composer автоматически загружает их, и обычно проблема заключается в следующем:
1) Файл класса не на месте. Проверьте, находится ли он в правильном каталоге. Например, имея это в качестве базового пространства имен для вашего приложения:
"psr-4": {
"App\\": "app/",
"Glass\\": "app/Glass/"}
Означает, что ваши файлы должны быть
/var/www/myapp/app/User.php
/var/www/myapp/app/Glass/Calculator/Services/CalculatorService.php
2) Файл класса не имеет правильного пространства имен. Иногда мы копируем файлы и забываем изменить пространство имен, или у нас есть опечатка на них.
3) В файле класса есть ошибка. Иногда, если у вас есть серьезная проблема в файле, например, отсутствует }
PHP не может скомпилировать этот файл, и тогда он в основном действует так, как будто файл никогда не существовал.
Других решений пока нет …