Я использовал get_object_vars
какое-то время. Он всегда возвращает только публичные свойства объекта, но вдруг он также возвращает защищенные 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 )
Нет, это не новое поведение, ни поведение, которое было пропущено на ваш компьютер в одночасье.
Из документации :
Возвращает ассоциативный массив определенных объектов доступных нестатических свойств для указанного объекта в области видимости.
Нет упоминаний о уровнях доступа.
Тем не менее, существует недокументированная грань, которая сводится к видимости и области видимости, сообщается пользователем, который оставил следующий комментарий на той же странице документации:
Помните о том, что это зависит от области применения. Если вы вызываете это из собственного метода объектов, то выводятся и частные и защищенные vars. Вызовите его извне объекта, и результат, скорее всего, будет тем, что вы хотите архивировать.
Документация – ваш друг. Используйте его .
Какую версию PHP вы используете?
Если вы вызываете get_object_vars внутри метода Data_model_Accounting ::, то защищенные свойства должны быть видимыми.