你好,我是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