Вопрос
Вероятно, это действительно просто, но, похоже, я не могу понять, как напечатать / повторить класс, чтобы я мог узнать некоторые подробности о нем.
Я знаю, что это не сработает, но это то, что я пытаюсь сделать:
<?php echo $class; ?>
Каков правильный способ добиться чего-то подобного?
Другие советы
Вы могли бы попробовать добавить toString ( строка ) метод для вашего класса.Затем вы можете повторить некоторую полезную информацию или вызвать метод рендеринга для генерации HTML или чего-то еще!
Метод __toString вызывается, когда вы делаете что-то вроде следующего:
echo $class;
или
$str = (string)$class;
Приведенный пример выглядит следующим образом:
<?php
// Declare a simple class
class TestClass
{
public $foo;
public function __construct($foo) {
$this->foo = $foo;
}
public function __toString() {
return $this->foo;
}
}
$class = new TestClass('Hello');
echo $class;
?>
Используйте var_dump для экземпляра вашего класса.
<?php
$my_class = new SomeClass();
var_dump( $my_class );
?>
Чтобы получить более подробную информацию о вашем классе (например, если вы хотите узнать, что доступно для дочернего класса), вы можете добавить метод debug ()
.
Вот пример класса с таким методом, который я использую, который распечатывает методы, переменные по умолчанию и экземпляры переменных в хорошей структурированной форме:
<?php
class TestClass{
private $privateVar = 'Default private';
protected $protectedVar = 'Default protected';
public $publicVar = 'Default public';
public function __construct(){
$this->privateVar = 'parent instance';
}
public function test(){}
/**
* Prints out detailed info of the class and instance.
*/
public function debug(){
$class = __CLASS__;
echo "<pre>$class Methods:\n";
var_dump(get_class_methods($class));
echo "\n\n$class Default Vars:\n";
var_dump(get_class_vars($class));
echo "\n\n$class Current Vars:\n";
var_dump($this);
echo "</pre>";
}
}
class TestClassChild extends TestClass{
public function __construct(){
$this->privateVar = 'child instance';
}
}
$test = new TestClass();
$test2 = new TestClassChild();
$test->debug();
$test2->debug();
Вы можете использовать компонент Symfony VarDumper http://symfony.com/doc/current/components/var_dumper/introduction.html:
Установите его через Composer:
composer require symfony/var-dumper
Использование:
require __DIR__.'/vendor/autoload.php';
// create a variable, which could be anything!
$someVar = ...;
dump($someVar);