ReflectionException类不存在发生在git分支交换机Laravel上 [英] ReflectionException Class does not exist happens on git branch switch Laravel

查看:143
本文介绍了ReflectionException类不存在发生在git分支交换机Laravel上的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

因此,在决定创建这个问题之前,我读了100篇这样的文章。

这个问题实际上非常具体,并且是100%可重现的。



我创建了一个git分支,让它叫做 storeUpdate ,并且在这个分支中我创建了一个名为

  app / Http / Controllers / Admin / BatchUpdateStoresController.php 

其中包含以下内容:

  namespace App\\Http\Controllers\联系; 

使用App \Http\Requests;
使用Illuminate \Http\Request;
使用App \Http\Controllers\Controller;
使用App \ Repositories \BatchUpdateStores;

class BatchUpdateStoresController扩展了Controller

并且我将它添加到路由中.php文件:

  app / Http / routes.php | 214 | $ api-> put('stores','Admin \BatchUpdateStoresController @ update'); 
app / Http / routes.php | 215 | $ api-> post('stores','Admin \BatchUpdateStoresController @ upload');

也是我的作曲家文件中的相关部分:

 autoload:{
classmap:[
database
],
psr-4:{
App \\:app /
}
},
autoload-dev:{
classmap:[
tests / TestCase.php,
tests / Helpers /,
tests / Traits /
]
},
php artisan c>,我得到这个错误:

lockquote
[ReflectionException] Class
App \Http\Controllers\Admin\ BatchUpdateStoresController不存在


我发现上面的错误很有趣,因为该文件确实不存在(注意实际文件是 app / Http / Controllers / Admin / BatchUpdateStoresController.php ,所以 app != 应用,但不是我al在我的composer.json文件的 psr-4 部分准备好了吗?

想法?

我试过了什么



所有常用的东西包括:
$ b $ ul

  • composer dump-autoload

  • 作曲家更新

  • 作曲家更新 - 无脚本

  • php artisan cache:clear

  • php artisan api:clear

  • php artisan route:clear

  • >

    stacktrace



      ReflectionException:Class App \Http\Controllers\Admin \BatchUpdateStoresController不存在于/Users/Shared/dev/php/toters-api/vendor/laravel/framework/src/Illuminate/Container/Container.php:749 
    堆栈轨迹:#0 / Users / Shared /dev/php/toters-api/vendor/laravel/framework/src/Illuminate/Container/Container.php(749):ReflectionClass-> __ construct('App\\\Http\\Contro ...' )
    #1 / Users / Shared / dev / php / toters-api / vendor / laravel / framework / src / Illuminate /Container/Container.php(644):Illuminate\Container\Container-> build('App\\\Http\\Contro ...',Array)
    #2 / Users / Shared / dev / php / toters-api / vendor / laravel / framework / src / Illuminate / Foundation / Application.php(709):Illuminate\Container\Container-> make('App\\Http\ \Contro ...',Array)
    #3 /Users/Shared/dev/php/toters-api/vendor/dingo/api/src/Routing/Route.php(320):Illuminate\Foundation \Application-> make('App\\\Http\\Contro ...')
    #4 / Users / Shared / dev / php / toters-api / vendor / dingo / api / src / Routing / Route.php(182):Dingo\Api\Routing\Route-> makeControllerInstance()
    #5 / Users / Shared / dev / php / toters-api / vendor / dingo / api / src / Routing / Route.php(165):Dingo\Api\Routing\Route-> mergeControllerProperties()
    #6 / Users / Shared / dev / php / toters-api / vendor / dingo / api / src / Routing / Route.php(144):Dingo\Api\Routing\Route-> setupRoutePr operties(Object(Illuminate \Http\\Request),Object(Illuminate\Routing\Route))
    #7 / Users / Shared / dev / php / toters-api / vendor / dingo / api / src /Routing/Router.php(652):Dingo\Api\Routing\Route-> __ construct(Object(Dingo\Api\Routing\Adapter\Laravel),Object(Illuminate\Foundation\应用程序),对象(Illuminate \Http\Request),对象(Illuminate\Routing\Route))
    #8 / Users / Shared / dev / php / toters-api / vendor / dingo / api / src / Routing / Router.php(714):Dingo\Api\Routing\Router-> createRoute(Object(Illuminate\Routing\Route))#9 / Users / Shared / dev / php / toters- api / vendor / dingo / api / src / Routing / Router.php(744):Dingo\Api\Routing\Router-> getRoutes()
    #10 / Users / Shared / dev / php / toters-api / bootstrap / cache / routes.php(17):Dingo\Api\Routing\Router-> setAdapterRoutes(Array)
    #11 / Users / Shared / dev / php / toters-api /供应商/ laravel /框架/ SRC /照亮/ Founda提供者/ RouteServiceProvider.php(58):require('/ Users / Shared / d ...')
    #12 [内部函数]:Illuminate\Foundation\Support\Providers\ RouteServiceProvider-> Illuminate\Foundation\Support\Providers\ {closure}(Object(Illuminate\Foundation\Application))
    #13 / Users / Shared / dev / php / toters-api / (808):call_user_func(Object(Closure),Object(Illuminate \ Foundation))
    #14 / Users / Shared / dev / php / toters-api / vendor / laravel / framework / src / Illuminate / Foundation / Application.php(757):Illuminate\Foundation\Application-> fireAppCallbacks(Array)
    #15 / Users / Shared / dev / php / toters-api / vendor / laravel / framework / src / Illuminate / Foundation / Bootstrap / BootProviders.php(17):Illuminate\Foundation\Application-> boot()
    #16 / Users /共享的/ dev / PHP / toters-API /供应商/ laravel /框架/ SRC /照亮/粉底/ Applicati on.php(203):Illuminate \ Foundation \ Bootstrap\BootProviders-> bootstrap(Object(Illuminate\Foundation\Application))
    #17 / Users / Shared / dev / php / toters- api / vendor / laravel / framework / src / Illuminate / Foundation / Console / Kernel.php(267):Illuminate\Foundation\Application-> bootstrapWith(Array)
    #18 / Users / Shared / dev / php / toters-api / vendor / laravel / framework / src / Illuminate / Foundation / Console / Kernel.php(113):Illuminate\Foundation\Console\Kernel-> bootstrap()
    #19 / Users / Shared / dev / php / toters-api / artisan(35):Illuminate\Foundation\Console\Kernel->句柄(Object(Symfony \ Component \Console\Input\ArgvInput),Object (Symfony \ Component \Console\Output\ConsoleOutput))#20



    udpdate



    基于爱德华兹 answer 以下工作:


    1. 如果你去没有那个类的git分支..根据定义,任何 php artisan 都会炸毁,所以你已经没有了访问一些php artisan命令,例如 php artisan route:clear

    2. 因此,返回到具有上述类的原始分支并确保 php artisan 运行

    3. 运行 php artisan route:clear

    4. 切换分行

    5. 利润


    解决方案

    尝试 php artisan route:clear 如果不解决,请将您的完整异常。


    So I read like 100 post about this before deciding on creating this issue.

    This problem is actually very specific and it's 100% reproducable.

    I created a git branch lets call it storeUpdate, and in this branch I created a file called

    app/Http/Controllers/Admin/BatchUpdateStoresController.php
    

    which has the following:

    namespace App\Http\Controllers\Admin;
    
    use App\Http\Requests;
    use Illuminate\Http\Request;
    use App\Http\Controllers\Controller;
    use App\Repositories\BatchUpdateStores;
    
    class BatchUpdateStoresController extends Controller
    

    and I've added it to the routes.php file:

    app/Http/routes.php|214| $api->put('stores', 'Admin\BatchUpdateStoresController@update');
    app/Http/routes.php|215| $api->post('stores', 'Admin\BatchUpdateStoresController@upload');
    

    also the relevant part in my composer file:

    "autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },
    "autoload-dev": {
        "classmap": [
            "tests/TestCase.php",
            "tests/Helpers/",
            "tests/Traits/"
        ]
    },
    

    However, when I switch the branch to another git branch, and I try to run php artisan, I get this error:

    [ReflectionException] Class App\Http\Controllers\Admin\BatchUpdateStoresController does not exist

    I find the above error interesting, as indeed that file doesn't exist (notice the actual file is app/Http/Controllers/Admin/BatchUpdateStoresController.php, so app != App, but aren't I already taking care of this in the psr-4 section of my composer.json file?

    Ideas?

    what i tried

    all the usual stuff including:

    • composer dump-autoload
    • composer update
    • composer update --no-scripts
    • php artisan cache:clear
    • php artisan api:clear
    • php artisan route:clear

    stacktrace

    ReflectionException: Class App\Http\Controllers\Admin\BatchUpdateStoresController does not exist in /Users/Shared/dev/php/toters-api/vendor/laravel/framework/src/Illuminate/Container/Container.php:749 
    Stack trace: #0 /Users/Shared/dev/php/toters-api/vendor/laravel/framework/src/Illuminate/Container/Container.php(749): ReflectionClass->__construct('App\\Http\\Contro...') 
    #1 /Users/Shared/dev/php/toters-api/vendor/laravel/framework/src/Illuminate/Container/Container.php(644): Illuminate\Container\Container->build('App\\Http\\Contro...', Array) 
    #2 /Users/Shared/dev/php/toters-api/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(709): Illuminate\Container\Container->make('App\\Http\\Contro...', Array) 
    #3 /Users/Shared/dev/php/toters-api/vendor/dingo/api/src/Routing/Route.php(320): Illuminate\Foundation\Application->make('App\\Http\\Contro...') 
    #4 /Users/Shared/dev/php/toters-api/vendor/dingo/api/src/Routing/Route.php(182): Dingo\Api\Routing\Route->makeControllerInstance() 
    #5 /Users/Shared/dev/php/toters-api/vendor/dingo/api/src/Routing/Route.php(165): Dingo\Api\Routing\Route->mergeControllerProperties() 
    #6 /Users/Shared/dev/php/toters-api/vendor/dingo/api/src/Routing/Route.php(144): Dingo\Api\Routing\Route->setupRouteProperties(Object(Illuminate\Http\Request), Object(Illuminate\Routing\Route)) 
    #7 /Users/Shared/dev/php/toters-api/vendor/dingo/api/src/Routing/Router.php(652): Dingo\Api\Routing\Route->__construct(Object(Dingo\Api\Routing\Adapter\Laravel), Object(Illuminate\Foundation\Application), Object(Illuminate\Http\Request), Object(Illuminate\Routing\Route)) 
    #8 /Users/Shared/dev/php/toters-api/vendor/dingo/api/src/Routing/Router.php(714): Dingo\Api\Routing\Router->createRoute(Object(Illuminate\Routing\Route)) #9 /Users/Shared/dev/php/toters-api/vendor/dingo/api/src/Routing/Router.php(744): Dingo\Api\Routing\Router->getRoutes() 
    #10 /Users/Shared/dev/php/toters-api/bootstrap/cache/routes.php(17): Dingo\Api\Routing\Router->setAdapterRoutes(Array) 
    #11 /Users/Shared/dev/php/toters-api/vendor/laravel/framework/src/Illuminate/Foundation/Support/Providers/RouteServiceProvider.php(58): require('/Users/Shared/d...') 
    #12 [internal function]: Illuminate\Foundation\Support\Providers\RouteServiceProvider->Illuminate\Foundation\Support\Providers\{closure}(Object(Illuminate\Foundation\Application)) 
    #13 /Users/Shared/dev/php/toters-api/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(808): call_user_func(Object(Closure), Object(Illuminate\Foundation\Application)) 
    #14 /Users/Shared/dev/php/toters-api/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(757): Illuminate\Foundation\Application->fireAppCallbacks(Array) 
    #15 /Users/Shared/dev/php/toters-api/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/BootProviders.php(17): Illuminate\Foundation\Application->boot() 
    #16 /Users/Shared/dev/php/toters-api/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(203): Illuminate\Foundation\Bootstrap\BootProviders->bootstrap(Object(Illuminate\Foundation\Application)) 
    #17 /Users/Shared/dev/php/toters-api/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(267): Illuminate\Foundation\Application->bootstrapWith(Array) 
    #18 /Users/Shared/dev/php/toters-api/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(113): Illuminate\Foundation\Console\Kernel->bootstrap() 
    #19 /Users/Shared/dev/php/toters-api/artisan(35): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #20
    

    h2. udpdate

    based on Edwards answer the following worked:

    1. if you go to the git branch that doesn't have that class.. by definition, any php artisan will blow up, so then you already don't have access to some php artisan commands such as php artisan route:clear
    2. therefore, go back to the original branch that has the above class and make sure php artisan runs
    3. run php artisan route:clear
    4. switch branches
    5. profit

    解决方案

    Try php artisan route:clear if don't solve, put your complete exception.

    这篇关于ReflectionException类不存在发生在git分支交换机Laravel上的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆