Расширение класса MySQLi, переменные скрытого члена - PullRequest
1 голос
/ 14 декабря 2011

Я только начал расширять класс MySQLi и обнаружил, что переменные-члены, созданные в дочернем классе, не отображаются как часть объекта при использовании print_r или var_dump и т. Д.

Takeнапример, этот пример

class Database extends MySQLi {
    public function __construct( $h, $u, $p, $n ) {
        parent::__construct( $h, $u, $p, $n );

        $this->name = $n;
    }
}

При выполнении следующего, переменные-члены, которые можно ожидать увидеть в объекте MySQLi, присутствуют и выводятся успешно.Тем не менее, переменные-члены, которые я создаю, отсутствуют.

$obj = new Database( 'a', 'b', 'c', 'd' )
print_r( $obj );

Однако я обнаружил, что могу успешно использовать вызовы echo $obj->name.

При дальнейшей проверке я могу успешно осмотреть объект, используя следующую информацию:

print_r( get_object_vars( $obj ) );

Array
(
    [name] => my_database
    [affected_rows] => 
    [client_info] => 
    [client_version] =>

[...]

Я нашел этот вопрос , но на самом деле он не предлагает ответа.принятое решение предполагает, что это невозможно, один ответ приходит к тому же выводу, что и я, а другой не имеет значения.

Руководство для print_r() предполагает, что в теории мои переменные-члены должныбудет показано, потому что они не являются статическими.

print_r (), var_dump () и var_export () также покажут защищенные и закрытые свойства объектов с PHP 5. Статические члены класса не будут показаны.

Есть ли способ, с помощью которого я могу расширить класс MySQLi и иметь возможность быстро отлаживать объекты моей базы данных, используя print_r без требования get_object_vars().Это предполагаемое поведение или ошибка, о которой следует сообщать разработчикам PHP?

Я использую PHP версии 5.3.5 в Windows 7. Я еще не тестировал это в своей среде разработки Linux.

1 Ответ

1 голос
/ 14 декабря 2011

Да - переписав метод __ toString () -Magic, вы можете вывести его, как хотите, написав собственную функцию дампа.Поскольку у вас есть собственная среда, вы можете также проверить отладку php с помощью xdebug и получить гораздо больше возможностей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...