gpt4 book ai didi

php - 为什么 Laravel 迁移类没有命名空间?

转载 作者:可可西里 更新时间:2023-11-01 00:40:32 24 4
gpt4 key购买 nike

我现在使用的是 Laravel 5.1。

php artisan make:migration create_users_table --create=users 命令生成的迁移类文件如下所示:

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUsersTable extends Migration
{
// up and down ...
}

当我编辑这个迁移类文件并保存它时,我的 sublime text 中的 PHP Code Sniffer 会指出一条非标准消息 'Each Class must be in a namespace of at least one level'.

我在两个 [ https://laravel.com/docs/5.1/migrations] 中都没有得到答案和前几批搜索结果。 stackoverflow 上的相关问题也不清楚。

谁知道原因,或者给我一些提示?谢谢!

最佳答案

基本上,这是一个设计问题。有人在那里使用命名空间迁移。但是,迁移器将迁移加载并存储在迁移数据库表中的方式可能会成为命名空间的问题。如果你稍微检查一下,你会发现类的名称是迁移文件名称的一部分,Laravel 需要使用该名称来实例化迁移类以执行它。例如,将其命名空间可能会导致 2 个具有相同基类名称(类名称减去命名空间)的不同类,这会发生冲突并且很难找到。一个解决方案是将命名空间添加到迁移文件名中,但他们必须将其命名为类似

2015_12_16_164131_database_migrations|create_users_table.php

这将转化为一个类

Database\Migrations\CreateUsersTable

我正在使用 | 将 namespace 与文件(类)名称分开,但整个事情有点奇怪,你不觉得吗?

此外,由于迁移需要按特定顺序执行,迁移文件名开头的日期和时间戳是强制性的,因此,这就是部分原因。

关于php - 为什么 Laravel 迁移类没有命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41233837/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com