以下是关于__construct的解释:
本次文章
我打算用初学者的方式解释关于构造函数(__construct)的困惑情况,在学习PHP时遇到的。
__construct是什么意思?
在创建一个新的实例时,首先被执行的函数是__construct。通过使用它,可以在生成实例时进行初始化操作。
实例
上述提到的实例是在生成的类中创建值时创建的。您可以将其视为继承了类中定义的属性(变量)。
使用方法
首先,我认为对于理解起来更容易,我们先来看一下不使用__construct的情况。
- 書いたコード
<?php
class Post
{
public $text;
public $likes;
public function show()
{
printf('%s (%d)' . PHP_EOL, $this->text, $this->likes);
}
}
$posts = [];
$posts[0] = new Post;
$posts[0]->text = "hello";
$posts[0]->likes = 0;
$posts[1] = new Post;
$posts[1]->text = "hello again";
$posts[1]->likes = 0;
$posts[0]->show();
$posts[1]->show();
- 実行結果
hello (0)
hello again (0)
~ $
接下来我们将看到使用__construct的相同内容的情况。
- 書いたコード
<?php
class Post
{
public $text;
public $likes;
public function __construct($text, $likes) //本題のコンストラクトの部分
{
$this->text = $text;
//ここで記入している$textや$likesはプロパティとは異なる変数ということに注意!
$this->likes = $likes;
}
public function show()
{
printf('%s (%d)' . PHP_EOL, $this->text, $this->likes);
}
}
$posts = [];
$posts[0] = new Post('hello', 0); //上記とは異なり、インスタンスの引数に設定
$posts[1] = new Post('hello again', 0);
$posts[0]->show();
$posts[1]->show();
- 実行結果
hello (0)
hello again (0)
~ $
__construct是一个在实例生成时执行的函数,因此将其作为参数传递。然后,可以通过写入public function __construct(变量)来使用它。此外,请注意,在construct内部使用的$text和$likes不是类的属性。通过实例的参数传递给__construct的值将被存储在$test和$likes变量中,并被存储在属性中。
总结
通过定义__construct函数,每次使用new关键字调用该函数时都能确保进行初始化操作,这样就不需要每次调用时都进行定义,从而避免了遗漏或忘记定义的问题,非常方便。在使用类时必须使用它,所以确保使用它没有错误。