php laravel命名空间问题,如图,为啥小写会报错非要大写才可以,可是我的文件夹就是小写的app啊?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php laravel命名空间问题,如图,为啥小写会报错非要大写才可以,可是我的文件夹就是小写的app啊?相关的知识,希望对你有一定的参考价值。

laravel在composer.json里配置了的


app目录的namespaces 就是大写的App,所以必须用大写的

参考技术A 命名空间是命名空间,目录名是目录名,这是两个概念

更改命名空间时在 Laravel 中找不到类“\App\User”

【中文标题】更改命名空间时在 Laravel 中找不到类“\\App\\User”【英文标题】:Class '\App\User' not found in Laravel when changing the namespace更改命名空间时在 Laravel 中找不到类“\App\User” 【发布时间】:2016-06-19 16:32:21 【问题描述】:

User.php 移动到Models/User.php 时出现此错误

local.ERROR: Symfony\Component\Debug\Exception\FatalThrowableError: 致命错误: 找不到类“\App\User”

vendor/laravel/framework/src/Illuminate/Auth/EloquentUserProvider.php:126

【问题讨论】:

【参考方案1】:

转到 config/auth.php 并将 App\User:class 更改为 App\Models\User::class。

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\Models\User::class,
    ],

同时更改 User.php 模型的命名空间

namespace App\Models;

【讨论】:

如果你和我一样有同样的问题并且按照描述做了所有事情并且错误仍然发生尝试像这样清除配置缓存:php artisan config:cachephp artisan config:clear 没有人指向命名空间 App\Models;在其他答案中 谢谢。我忘记更改用户模型的命名空间 我像您的帮助一样更改了我的项目,所以它对我不起作用。谁能帮帮我。 更改您的 auth.php 后添加此命令帮助我删除了以前配置的缓存 rm bootstrap/cache/config.php【参考方案2】:

如果你在 Laravel (php artisan make:auth) 上使用默认的身份验证,你必须更改 app/Http/Controllers/Auth/ 上的 RegisterController

use App\User;

use App\Models\User;

此外,对于其余功能,您已更改用户模型上的命名空间:

namespace App\Models;

并更改 config/auth.php

'providers' => [
'users' => [
    'driver' => 'eloquent',
    'model' => App\Models\User::class,
],

【讨论】:

【参考方案3】:

这些答案都不对,你不需要把命名空间改成\App\Models\User。自动加载将加载模型文件夹,但类仍可以是class User,命名空间仍应为App。你的文件是这样设置的吗?

namespace App;

class User extends Model 

【讨论】:

【参考方案4】:

重新加载 composer 自动加载的类。

composer dump-autoload

【讨论】:

【参考方案5】:

我使用的是 Laravel 8x,并在 .php

的顶部找到了一个简单的想法
use App\Models\User

【讨论】:

虽然这段代码可以为这个问题提供一个解决方案,但最好添加上下文来说明它为什么/如何工作。这可以帮助未来的用户参考并最终将这些知识应用到他们自己的代码中。解释代码时,您也可能会得到用户的积极反馈/赞成。 请更改型号的拼写。【参考方案6】:

我终于能够通过更改以下代码来解决它。

 array (
        'driver' => 'eloquent',
        'model' => 'App\\Models\User',
      ),

【讨论】:

在哪里?在什么文件中? 在 config/auth.php 文件中 manshu 能解释一下吗? youtube.com/watch?v=RRm8QoW-hP4【参考方案7】:

如果app config被缓存了,可能无法获取到新的配置,因为config:cache在清除和缓存配置之前就给出了这个错误,所以手动删除缓存就好了:

rm bootstrap/cache/config.php

【讨论】:

【参考方案8】:

如果您使用 user.php 模型文件到文件夹 Models/user.php 那么您需要更改以下文件,这样您就不会收到任何错误

如果我们在 App\http 中创建模型文件夹,应该在哪里更改??

改变路径---

1 配置 - - auth.php - 搜索用户密钥更改 ---> app\user TO app\Models\user

2 供应商/作曲家/ -autoload_classmap.php ----> 基本路径(app\user TO app\Models\user) -autoload_static.php ----> 基本路径(app\user TO app\Models\user)

【讨论】:

【参考方案9】:

对我来说解决问题的是改变:

            'model' => 'YourAppName\User',

【讨论】:

【参考方案10】:

发生的事情是您更改了文件 user.php 的位置。

您的系统仍在旧位置寻找文件 user.php。您需要为系统提供正确的文件路径。

我猜你必须将代码从 'model' => App\User::class 更改为

'model' => App\Models\User::class,

【讨论】:

【参考方案11】:

我解决了将use App\User; 更改为use MyAppName\User; 的问题

【讨论】:

【参考方案12】:

这个问题是configcache的设置之一,通过在终端执行以下命令,90%的问题就解决了

config:clear
cache:clear
config:cache

【讨论】:

哇!天才。除了这个,其他答案都不适合我。但是,您需要编辑答案以在命令中包含前缀 php artisan,否则将无法识别命令。因此,正确的命令是php artisan config:clearphp artisan cache:clearphp artisan config:cache。谢谢【参考方案13】:

几天前我遇到了同样的问题。所以我这样做了:运行这个命令

php artisan config:cache 
php artisan config:clear

它解决了我的问题。大多数问题都由此解决。 我建议先尝试一下,如果这不能解决您的问题,请尝试其他技巧。

【讨论】:

【参考方案14】:

你需要在config/auth.php中把App\User改成App\Models\User

【讨论】:

【参考方案15】:

检查您的输入是否代表您班级的确切名称。我发现在我的一个控制器中,我被导入 App\user,小写字母“u”而不是 App\User,大写字母“u”

【讨论】:

【参考方案16】:

我只是将 use app\User 改为 use App\User 就可以了

【讨论】:

你能进一步解释你的答案吗?它如何以及为什么起作用? 如果您的服务器是 Linux,则取决于服务器,如果您的服务器是 Windows,则区分大小写,然后忽略 App 大写或小写字母

以上是关于php laravel命名空间问题,如图,为啥小写会报错非要大写才可以,可是我的文件夹就是小写的app啊?的主要内容,如果未能解决你的问题,请参考以下文章

为啥不支持将 PHP 函数导入当前命名空间

更改命名空间时在 Laravel 中找不到类“\App\User”

Laravel 5 应用命名空间

为 Laravel 8 路由定义命名空间 [重复]

laravel5.4PHP5.6+ 调用命名空间下类方法属性和对象

Laravel 5.5 找不到具有正确命名空间的类