ReflectionException类不存在发生在git分支交换机Laravel上 [英] ReflectionException Class does not exist happens on git branch switch 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 /
]
},
$ c $但是,当我将分支切换到另一个git分支时,我尝试运行 php artisan $ c $> 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
- 如果你去没有那个类的git分支..根据定义,任何
php artisan
都会炸毁,所以你已经没有了访问一些php artisan命令,例如 php artisan route:clear
- 因此,返回到具有上述类的原始分支并确保
php artisan
运行
- 运行
php artisan route:clear
- 切换分行
- 利润
解决方案 尝试 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:
- 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
- therefore, go back to the original branch that has the above class and make sure
php artisan
runs
- run
php artisan route:clear
- switch branches
- profit
解决方案 Try php artisan route:clear
if don't solve, put your complete exception.
这篇关于ReflectionException类不存在发生在git分支交换机Laravel上的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文