为什么实例化一个对象将其内容打印到屏幕上?

时间:2019-01-15 09:01:14

标签: php class oop

我有一个带有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属性)一起输出。

那么为什么这样工作?

2 个答案:

答案 0 :(得分:0)

实例化对象不会打印任何内容。实例化对象不会打印对象内容。您可以使用echo语句打印定义的字符串...

答案 1 :(得分:0)

  

为什么这样的事情会在屏幕上打印出文本。

因为进行打印的方法被称为,所以。

$object = new NewClass;创建此类的新对象实例,在此过程中,该类的构造函数被称为-代码中的public function __construct部分。 (在以前的PHP版本中,与该类同名的方法会自动称为构造函数,现在是通过保留名称__construct完成的。)该方法包含一个echo语句,因此您得到“类已实例化”输出。

(您的示例不应输出您说得到的“我是财产”部分-因为包含该内容的$data属性不会在任何地方访问它们,而您的代码为显示的实际上并没有输出,请参见https://3v4l.org/XKcUR

当整个脚本结束时,PHP进行“垃圾收集”并执行关闭功能,以清理所有内容。在此过程中,将调用所有仍然存在的对象的 destructor 方法(如果存在)。这就是示例中“这是课程的结尾!”的输出来源。

您可以在http://php.net/manual/en/language.oop5.decon.php

上了解有关构造函数和析构函数的更多信息。