gpt4 book ai didi

php - 为什么 get_object_vars 返回 protected 属性?

转载 作者:行者123 更新时间:2023-12-04 03:49:59 24 4
gpt4 key购买 nike

我已经使用 get_object_vars 一段时间了。它总是只返回一个对象的公共(public)属性,但突然间它也返回 protected 变量?!?怎么可能?它以前从未这样做过

代码

print_r($row);
print_r(get_object_vars($row));

返回

Data_model_Accounting Object
(
[get_external:protected] => 1
[put_external:protected] => 1
[delete_external:protected] => 1
[post_class:protected] => 1
[external_field_const:protected] => Array
(
[type] => Array
(
[0] => LEDGER
[1] => DEBTOR_LEDGER
[2] => CREDITOR_LEDGER
[3] => DEBTOR_INVOICE
[4] => CREDITOR_INVOICE
)

)

[external_field_condition_unset:protected] => Array
(
[invoice_id_] => Array
(
[type] => Array
(
[mode] => not_in
[values] => Array
(
[0] => DEBTOR_INVOICE
[1] => CREDITOR_INVOICE
)

)

)

[invoice_time_due] => Array
(
[type] => Array
(
[mode] => not_in
[values] => Array
(
[0] => DEBTOR_INVOICE
[1] => CREDITOR_INVOICE
)

)

)

)

[table:protected] =>
[predata:protected] => Array
(
)

[data:protected] => Array
(
)

[external:protected] => 1
[put_error:protected] =>
[action_mode:protected] =>
[Shell:protected] =>
[access_admin_primary:protected] => 1
[get_admin_external:protected] =>
[put_admin_external:protected] =>
[delete_admin_external:protected] =>
[id] => 19
[time] => 1362787200
[type] => DEBTOR_LEDGER
[account_id_] => 16000
[account_name] => Debitor
[accountoff_id_] => 16000
[accountoff_name] => Debitor
[vatcode_name] =>
[subaccount_id_] => 10
[subaccount_type] => DEBTOR
[subaccount_name] => hehe
[subaccountoff_id_] => 101
[subaccountoff_type] => DEBTOR
[subaccountoff_name] => oskel
[dimension_name] =>
[dimensionoff_name] =>
[currency_name] =>
[invoice_id_] =>
[invoice_time_due] => 0
[amount] => -165
[currency_amount] => -165
[currency_rate] => 1
)
Array
(
[table] =>
[predata] => Array
(
)

[data] => Array
(
)

[external] => 1
[put_error] =>
[action_mode] =>
[Shell] =>
[access_admin_primary] => 1
[get_admin_external] =>
[put_admin_external] =>
[delete_admin_external] =>
[id] => 19
[time] => 1362787200
[type] => DEBTOR_LEDGER
[account_id_] => 16000
[account_name] => Debitor
[accountoff_id_] => 16000
[accountoff_name] => Debitor
[vatcode_name] =>
[subaccount_id_] => 10
[subaccount_type] => DEBTOR
[subaccount_name] => hehe
[subaccountoff_id_] => 101
[subaccountoff_type] => DEBTOR
[subaccountoff_name] => oskel
[dimension_name] =>
[dimensionoff_name] =>
[currency_name] =>
[invoice_id_] =>
[invoice_time_due] => 0
[amount] => -165
[currency_amount] => -165
[currency_rate] => 1
)

最佳答案

不,这不是新行为,也不是一夜之间传送到您计算机中的行为。

来自 the documentation :

Returns an associative array of defined object accessible non-static properties for the specified object in scope.

没有提及访问级别。

但是, 有一个未记录的方面,归结为可见性和范围,由一位在同一文档页面上留下以下评论的用户报告:

Be aware of the fact that this is scope-sensitive. If you're calling this from an objects own method, then private and protected vars will be outputted as well. Call it from outside the object and the result will most likely be what you want to archive.

文档是您的 friend 。 使用它

关于php - 为什么 get_object_vars 返回 protected 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14802429/

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