我有一个带有php类定义的文件,如下所示:
class NewClass {
public $data = "I am a property";
public function __construct() {
echo "This class has been instantiated <br>";
}
public function __destruct() {
echo "<br> This is the end of the class!";
}
}
当我将其包含在其他php文件中(带有用于输出页面的基本html代码)时,当我执行类似$object = new NewClass;
的操作时,这实际上将输出:
“该类已被实例化,我是一个属性,到此结束 全班!”
到屏幕。
为什么这样的事情会在屏幕上打印出文字?
执行$ object = new NewClass
更像是向变量赋值(对我来说),而不是将对象及其内容(例如$data
属性)一起输出。
那么为什么这样工作?
答案 0 :(得分:0)
实例化对象不会打印任何内容。实例化对象不会打印对象内容。您可以使用echo
语句打印定义的字符串...
答案 1 :(得分:0)
为什么这样的事情会在屏幕上打印出文本。
因为进行打印的方法被称为,所以。
$object = new NewClass;
创建此类的新对象实例,在此过程中,该类的构造函数被称为-代码中的public function __construct
部分。 (在以前的PHP版本中,与该类同名的方法会自动称为构造函数,现在是通过保留名称__construct
完成的。)该方法包含一个echo语句,因此您得到“类已实例化”输出。
(您的示例不应输出您说得到的“我是财产”部分-因为包含该内容的$data
属性不会在任何地方访问它们,而您的代码为显示的实际上并没有输出,请参见https://3v4l.org/XKcUR)
当整个脚本结束时,PHP进行“垃圾收集”并执行关闭功能,以清理所有内容。在此过程中,将调用所有仍然存在的对象的 destructor 方法(如果存在)。这就是示例中“这是课程的结尾!”的输出来源。
上了解有关构造函数和析构函数的更多信息。