L5: сервисный впрыск в контроллере не работает

Я внедряю Сервис в конструктор моего контроллера, но, к сожалению, он не работает.

Это файл контроллера:

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;

0

Решение

Ошибки как 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 не может скомпилировать этот файл, и тогда он в основном действует так, как будто файл никогда не существовал.

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector