gpt4 book ai didi

php - PHP 构造函数的用途

转载 作者:IT老高 更新时间:2023-10-28 12:09:24 25 4
gpt4 key购买 nike

我正在处理类和对象类结构,但不是在复杂级别 - 只是类和函数,然后在一个地方进行实例化。

关于__construct__destruct,请简单的告诉我:构造函数和析构函数的目的是什么

我知道学校层面的理论解释,但我期待在现实世界中出现类似的情况,比如我们必须在哪些情况下使用它们。

请提供一个例子。

问候

最佳答案

构造函数是在对象被初始化(其内存分配、实例属性复制等)之后执行的函数。其目的是使对象处于有效状态。

通常,要处于可用状态的对象需要一些数据。构造函数的目的是在实例化时强制将此数据提供给对象,并禁止任何没有此类数据的实例。

考虑一个简单的类,它封装了一个字符串,并且有一个方法可以返回这个字符串的长度。一种可能的实现是:

class StringWrapper {
private $str;

public function setInnerString($str) {
$this->str = (string) $str;
}

public function getLength() {
if ($this->str === null)
throw new RuntimeException("Invalid state.");
return strlen($this->str);
}
}

为了处于有效状态,此函数需要在 getLength 之前调用 setInnerString。通过使用构造函数,您可以在调用 getLength 时强制所有实例处于良好状态:

class StringWrapper {
private $str;

public function __construct($str) {
$this->str = (string) $str;
}

public function getLength() {
return strlen($this->str);
}
}

您还可以保留 setInnerString 以允许在实例化后更改字符串。

当一个对象即将从内存中释放时,会调用一个析构函数。通常,它包含清理代码(例如,关闭对象持有的文件描述符)。它们在 PHP 中很少见,因为当脚本执行结束时,PHP 会清除脚本持有的所有资源。

关于php - PHP 构造函数的用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3032808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com