为了账号安全,请及时绑定邮箱和手机立即绑定

打印输出时异常对象的字段

打印输出时异常对象的字段

PHP
aluckdog 2022-10-28 14:45:11
请查看当我打印出 Exception 对象的内容时得到的输出(使用此处的内置类):    Exception Object(    [message:protected] => My custom message    [string:Exception:private] =>     [code:protected] => 2281488    [file:protected] => /home/user/scripts/test.php    [line:protected] => 18    [trace:Exception:private] => Array        (        )    [previous:Exception:private] => )大多数字段都具有field_name:visibility_keyword格式,但其中两个字段之间出现异常。这是什么意思?此外,官方手册中没有提到其他两个字段,即$stringand $trace,但我知道后者在函数内抛出异常对象时接收一个值,因此它包含调用函数的顺序,直到其中一个创建说异常。当我尝试回显异常并保持为空时,字符串字段会被分配一个值,除非我在打印出对象的内容之前回显它。你能告诉我这个领域是如何运作的吗?我会很感激我能得到的任何意见。谢谢!
查看完整描述

2 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

这与异常无关,它只是如何显示对象的私有var_dump()和print_r()受保护属性。


私有属性总是显示在类的名称之前,:private 它告诉您继承层次结构中的哪个类可以访问该属性。


受保护的属性不需要这样做,因为层次结构中的任何类都可以访问它们。


class Class1 {

    private $private1;

    protected $protected1;

    public $public1;

}

class Class2 extends Class1 {

    private $private2;

    protected $protected2;

    public $public2;

}

print_r(new Class2);

显示


Class2 Object

(

    [private2:Class2:private] => 

    [protected2:protected] => 

    [public2] => 

    [private1:Class1:private] => 

    [protected1:protected] => 

    [public1] => 

)

手册中没有提到私有属性,因为它们不是公共接口的一部分,它们仅供类内部使用。这就是为什么它们被宣布为私有的。


受保护的属性已记录在案,因为如果您定义Exception.


查看完整回答
反对 回复 2022-10-28
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

string:Exception:private. 表示具有可见string性的Exception类属性。privateprevious和相同trace。这三个属性仅在Exception类中可用。正如您所注意到的,protected属性之间没有类,因为它可以传递给子类。这句话也适用于public属性。



查看完整回答
反对 回复 2022-10-28
  • 2 回答
  • 0 关注
  • 111 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信