[初学者] 关于 PHP 构造函数
你好!
我是系统开发部的松木。
这次,我们将深入研究构造函数,它是面向对象编程语言的特征之一。
什么是构造函数?
构造函数是在类实例化(对象化)时始终执行的方法。 普通方法在使用箭头运算符实例化类后可以随时调用,但构造函数在实例化时会自动调用,因此没有调用过程。
・普通方法
$object = 新类名; $object->方法名();
・构造方法
$object = 新类名;
如何编写构造函数
构造方法写如下。
public function __construct() { // 处理内容 }
虽然一开始就写着“public”,但这是访问修饰符之一。
访问修饰符有public、protected、private,但是如果不设置为public,从外部调用类时,构造函数方法将不会被调用,所以基本都使用public访问修饰符。
另外,方法名前面有两个下划线和“__”的方法称为魔术方法。魔术方法是在特殊情况下调用的方法,除了构造函数之外,还有“__get”和“__set”。我离题了,但是构造函数可以如上所示编写和使用。
使用示例
从这里开始,让我们实际使用它并建立图像。首先,创建一个类。这次,我们将创建一个人类类,Human类。
类 Human { 私有 $name; 私有 $age __construct( $name, $age, $from = '日本' ) { $this->name = $name; ; $这个->来自 = $来自; } }
由于我们正在创建一个人类类,因此我们将“姓名、年龄和出生地”作为必要的属性(变量)。调用此类时,必须将构造函数参数中指定的数字传递给创建实例时的参数。
$ human = new Human('芋头', 32);
通过编写上面的代码,我们能够通过将必要的值传递给构造函数来实例化 Human 类。 $ human 存储 Human 类。
这里出现一个问题。
“构造函数有三个参数,但实例化时只指定了两个,为什么我可以创建一个?”
这就是问题所在。
如果仔细查看构造函数的内容,您将看到第三个参数 $from 的值为 Japan。这样,在一般的构造函数和 PHP 方法中,您可以设置一个初始值,例如如果没有收到任何消息,则输入该值。如果接收到一个值,则分配接收到的值并且不调用初始值。
其次为什么变量被指定为私有,是因为禁止从外部直接改变它们。这种写法称为封装
那么, “直接从外部进行更改有什么问题吗?”
例如,如果您只想在年龄变量 $age 中输入 200 岁以下的值,并且启用直接更改,则您将能够输入 201 岁之后的值。因此,我们使用方法封装该值,通过方法等传递,通过条件检查判断是否是无效值,然后赋值给变量。
本例中,我们准备了一个set方法,并将判断表达式写在set方法内。
通过在构造函数中调用 set 方法,当 Human 类实例化时,将调用 setAge() 并限制 $age 中存储的值。
在下面的示例中,当接收到 201 或更高的值时,将强制输入 200。
类 Human { 私有 $name; 私有 $age __construct( $name, $age, $from = '日本' ) { $this->name = $name; ); $this->from = $from; } 公共函数 setAge($age) { if ($age <= 200) { $this->age = $age } else { $this->age = 200 } } }
・使用构造函数的优点
通过在构造函数中初始化变量,新创建的实例的变量将始终包含指定的值。此功能允许变量为每个对象都有值。
概括
你觉得怎么样?
这次我专注于构造函数,但是关于面向对象还有很多其他东西需要学习,所以让我们继续学习吧!
这就是本博客的全部内容。
感谢您阅读到最后。