这可能很容易,但我似乎无法弄清楚如何打印/回应一个类,所以我可以找到一些关于它的细节。
我知道这不起作用,但这就是我要做的事情:
<?php echo $class; ?>
实现这样的目标的正确方法是什么?
答案 0 :(得分:25)
您可以尝试在课堂上添加toString方法。然后,您可以回显一些有用的信息,或调用render方法来生成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;
?>
答案 1 :(得分:17)
答案 2 :(得分:5)
在班级的实例上使用var_dump。
<?php
$my_class = new SomeClass();
var_dump( $my_class );
?>
答案 3 :(得分:0)
要从课程中获取更详细的信息(例如,如果您想知道子课程的可用内容),可以添加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();
答案 4 :(得分:0)
您可以使用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);