Laravel 5迁移命名空间


Laravel 5 Migration namespace

你好,我是Codeigniter 的Laravel新手

我试图从迁移开始构建我的数据库,但我看到Github中的一些脚本以不同的方式使用名称空间,如:

use Illuminate'Database'Migrations'Migration;
use Illuminate'Database'Schema'Blueprint;
use Illuminate'Support'Facades'Schema;

另一个脚本使用:

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

以及另一种用途:

use Illuminate'Database'Migrations'Migration;

在开始上课的时候,他们为什么以这些方式使用名称空间?

我的代码在这里我使用什么,为什么??

<?php
use Illuminate'Database'Schema'Blueprint;
use Illuminate'Database'Migrations'Migration;
use Illuminate'Support'Facades'Schema;
class Test extends Migration
{
    public function up()
    {
        Schema::create('test',function(Blueprint $table){
            $table->engine = 'InnoDB';
            $table->increments('id')->unsigned();
        });
    }
    public function down()
    {
        Schema::drop('test');
    }
}

Schema立面有一个在config/app.php:中注册的别名

'aliases' => [
    ...
    'Schema' => Illuminate'Support'Facades'Schema::class,
    ...
]

由于迁移类驻留在全局命名空间中,与Schema别名相同的命名空间,因此具有use Illuminate'Support'Facades'Schema;是多余的,因为它与别名注册做相同的事情。

因此,您不需要在迁移类文件中包含use语句。拥有:

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

就足够了。


对于只包含use Illuminate'Database'Migrations'Migration;的那些,它们可能不会键入hint闭包参数。

所以如果你有这个:

public function up()
{
    // Notice the 'Blueprint $table' type hint
    Schema::create('test',function(Blueprint $table){
        $table->engine = 'InnoDB';
        $table->increments('id')->unsigned();
    });
}

您需要包括use Illuminate'Database'Schema'Blueprint;。但如果你有这个:

public function up()
{
    // Notice NO type hint for the '$table' closure parameter
    Schema::create('test',function($table){
        $table->engine = 'InnoDB';
        $table->increments('id')->unsigned();
    });
}

您不需要包含use Illuminate'Database'Schema'Blueprint;


use Illuminate'Database'Migrations'Migration;总是必需的,因为迁移类扩展了它:

class Test extends Migration