我已经使用get_object_vars
有一段时间了。它通常只返回对象的公共属性,但突然间它也返回了受保护的变量?!这怎么可能?以前从未发生过。
代码
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
)
闭包
来打破作用域上下文。例如:$getPublic = function($var) { return get_object_vars($var); } $publicProps = $getPublic($row);
- Alain TiembloData_model_Accounting
是一个新实例的扩展。当前对象和Data_model_Accounting
具有相同的父级,但位于两个不同的实例/对象中。如果这样说可以理解的话,它们不应该在同一作用域内。 - clarkk