Php 这个代码是什么意思。。。?
我想为我提出这个问题。为了更好地理解PHP和LaravelPhp 这个代码是什么意思。。。?,php,mysql,oop,laravel,static-functions,Php,Mysql,Oop,Laravel,Static Functions,我想为我提出这个问题。为了更好地理解PHP和Laravel public function up() { Schema::create('tasks', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->timestamps(); }); } 这实际上是一个包含静态函数的方法?在这个静态函
public function up()
{
Schema::create('tasks', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->timestamps();
});
}
这实际上是一个包含静态函数的方法?在这个静态函数中还有一个。。。?我不得不说我是框架的初学者
这是我第一次玩它。它创建了一个表
tasks
,其中id
asauto increment
列、name
asvarchar
列和created_at
和updated_at
astimestamp
列
更多信息。它创建了一个表
tasks
,其中id
作为auto increment
列,name
作为varchar
列和在创建时和在更新时作为时间戳
列
更多信息。如果你的困惑更多的是关于代码是如何工作的,而不是它是做什么的,那么它实际上是一个相当复杂的主题。首先,它不是一个真正的静态方法
Laravel使用某种调用,允许您“静态”调用方法,这可能会让刚接触框架的人感到困惑。简而言之,facades非常方便,因为当您使用Laravel的facade调用方法时,它会为您“屏蔽”大量实例对象,然后调用该方法
让我们以本例中的Schema
为例。这个Schema
类在哪里?如果查看config/app.php
文件,您将在别名下看到这行代码:
'Schema' => Illuminate\Support\Facades\Schema::class,
因此,Schema
是illumb\Support\Facades\Schema
的别名
因此,如果您查看illumb\Support\Facades\Schema
,您将看到它扩展了Facade
。这是拉威尔的一个正面。这个目录有很多拉威尔的正面。无论如何,在本课程的顶部,您还将看到一条方便的注释,上面写道:
@see \Illuminate\Database\Schema\Builder
打开该文件,这是您的模式
类。在幕后,Laravel为您实例化此对象。这有什么大不了的?看看构造函数。此类的依赖项之一是illumb\Database\Connection
。打开这个类,它会有更多的依赖项。facades不必一直手动实例化所有这些类,而是为您完成这项工作。因此,当您执行Schema::create(…
)时,Laravel正在实例化所有这些依赖项,并在illighted\Database\Schema\Builder
类中调用create
方法。非常棒,对吧?如果您查看该文件,您将看到该方法:
/**
* Create a new table on the schema.
*
* @param string $table
* @param \Closure $callback
* @return \Illuminate\Database\Schema\Blueprint
*/
public function create($table, Closure $callback)
{
$blueprint = $this->createBlueprint($table);
$blueprint->create();
$callback($blueprint);
$this->build($blueprint);
}
您可以看到它不是一个静态方法,而是。Laravel正在幕后创建一个新实例,然后调用该方法
第一个参数接受一个字符串,它将是您正在创建的表的名称。然后它接受一个闭包。在本例中,正如@Kostas Mitsarakis所说,您正在创建一个名为tasks
的表。这个表有一个名为id
的自动递增列,等等。如果您对代码如何运行感到困惑的话rks而不是它所做的,它实际上是一个相当复杂的主题。首先,它不是一个真正的静态方法
Laravel使用的调用允许您“静态”调用方法,这可能会让刚接触框架的人感到困惑。简而言之,facades非常方便,因为当您使用Laravel的facade调用方法时,它会为您“屏蔽”大量实例对象,然后调用该方法
以本例中的Schema
为例。这个Schema
类在哪里?如果查看config/app.php
文件,您将在别名下看到这行代码:
'Schema' => Illuminate\Support\Facades\Schema::class,
因此,Schema
是illumb\Support\Facades\Schema
的别名
因此,如果你看一下illumb\Support\Facades\Schema
,你会发现它扩展了Facade
。它是Laravel的一个Facade。这个目录有很多Laravel的Facade。无论如何,在这个类的顶部,你还会看到一个方便的注释,上面写着:
@see \Illuminate\Database\Schema\Builder
打开该文件,这是您的模式
类。在幕后,Laravel为您实例化了该对象。为什么这有这么大的意义?看看构造函数。该类的一个依赖项是illighte\Database\Connection
。打开该类,它甚至有更多的依赖项。不必手动始终联合实例化所有这些类,facades为您完成工作(…
,Laravel正在实例化所有这些依赖项,并在illumb\Database\Schema\Builder
类中调用create
方法。非常棒,对吧?如果您查看该文件,您将看到该方法:
/**
* Create a new table on the schema.
*
* @param string $table
* @param \Closure $callback
* @return \Illuminate\Database\Schema\Blueprint
*/
public function create($table, Closure $callback)
{
$blueprint = $this->createBlueprint($table);
$blueprint->create();
$callback($blueprint);
$this->build($blueprint);
}
您可以看到它不是一个静态方法,而是。Laravel正在幕后创建一个新实例,然后调用该方法
第一个参数接受一个字符串,它将是您正在创建的表的名称。然后它接受一个闭包。在这种情况下,正如@Kostas Mitsarakis所说,您正在创建一个名为tasks
的表。这个表有一个名为id
的自动递增列,等等。up()
触发一个“新模式”-其中我假设模式是Laraval中的组件或模型(从未使用过)。该调用中的函数是-用于告诉Schema::create
它应该如何处理其处理结果。还要注意,create
是Schema
类的一部分。up()
触发“新模式”-其中我假设模式是Laraval中的组件或模型(从未使用过)。该调用中的函数是-用于告诉Schema::create
它应该如何处理其处理结果。还请注意create
是