【问题标题】:How to avoid Reflection Exception in Laravel's project and what are the causes which produce it?如何避免 Laravel 项目中的反射异常以及产生它的原因是什么?
【发布时间】:2015-03-10 15:40:33
【问题描述】:

我使用 Laravel 制作了一个名为 my-school 的项目。一切正常,除非我使用 XAMPP 运行我的项目。
然后我使用这个网址:localhost/my-school/public/

这是引发的异常:

Fatal error: Uncaught exception 'ReflectionException' with message
'Class MySchool\Http\Kernel does not exist' in
E:\xampp\htdocs\my-school\vendor\laravel\framework\src\Illuminate\Container\Container.php:776
Stack trace: #0
E:\xampp\htdocs\my-school\vendor\laravel\framework\src\Illuminate\Container\Container.php(776):
ReflectionClass->__construct('MySchool\\Http\\K...') #1
E:\xampp\htdocs\my-school\vendor\laravel\framework\src\Illuminate\Container\Container.php(656):
Illuminate\Container\Container->build('MySchool\\Http\\K...', Array)
#2 E:\xampp\htdocs\my-school\vendor\laravel\framework\src\Illuminate\Foundation\Application.php(613):
Illuminate\Container\Container->make('MySchool\\Http\\K...', Array) #3
E:\xampp\htdocs\my-school\vendor\laravel\framework\src\Illuminate\Container\Container.php(229):
Illuminate\Foundation\Application->make('MySchool\\Http\\K...', Array)
#4 E:\xampp\htdocs\my-school\vendor\laravel\framework\src\Illuminate\Container\Container.php(773):
Illuminate\Container\Container->Illuminate\Container\{clo in
E:\xampp\htdocs\my-school\vendor\laravel\framework\src\Illuminate\Container\Container.php
on line 776

这是我的 composer.json 文件内容:

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "laravel/framework": "5.0.*"
    },
    "require-dev": {
        "phpunit/phpunit": "~4.0",
        "phpspec/phpspec": "~2.1"
    },
    "autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },
    "autoload-dev": {
        "classmap": [
            "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 -r \"copy('.env.example', '.env');\"",
            "php artisan key:generate"
        ]
    },
    "config": {
        "preferred-install": "dist"
    }
}

有人可以帮我找出我的项目的问题吗?

【问题讨论】:

  • 你能在问题中附上作曲家的内容吗?为了审查它
  • 先生,请检查我更新的问题...我已经添加了我的 composer.json 文件内容...如果您需要更多内容请告诉我...提前致谢...

标签: php laravel laravel-5 laravel-routing


【解决方案1】:

看看作曲家自动加载的值:

"autoload": {
    "classmap": [
        "database"
    ],
    "psr-4": {
        "App\\": "app/"
    }
},

这意味着app\ folder 内所有类的命名空间应以“App\”作为名称开始。在您的情况下,错误状态是:

致命错误:带有消息的未捕获异常“ReflectionException” 'Class MySchool\Http\Kernel 不存在'

MySchool\Http\Kernel 永远不会被加载,因为它不存在。相反,您的作曲家需要以下结构:

Class App\Http\Kernel

看到区别了吗?然后,尝试将应用重命名如下:

php artisan app:name MySchool 

这样一来,所有课程都将按照我认为您想要的方式路由为 MySchool。

【讨论】:

  • 非常感谢先生,但现在我收到此错误,因为我将此行放入我的浏览器“localhost/my-school/public/”。警告:需要(E:\xampp\htdocs\my-school\bootstrap/../vendor/autoload.php):无法打开流:E:\xampp\htdocs\my-school\bootstrap 中没有这样的文件或目录第 17 行的 \autoload.php 致命错误:require(): 无法打开所需的 'E:\xampp\htdocs\my-school\bootstrap/../vendor/autoload.php' (include_path='.;E:\xampp \php\PEAR') 在 E:\xampp\htdocs\my-school\bootstrap\autoload.php 第 17 行
  • 好的,再次感谢。这是我的错。请告诉我,我是否需要通过进入每个 .php 文件来更改所有命名空间,或者有什么方便的方法可以用所需的命名空间替换所有现有的命名空间?
  • 非常感谢先生,因为我把它整理出来了。我正在更新根文件夹中的作曲家,而不是安装它。在那里安装新的作曲家后。我没有看到更多问题。再次感谢。
  • 很好,很高兴为您提供帮助!
  • 希望我们以后也能互相帮助。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2013-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多