这可能很容易,但我似乎无法弄清楚如何打印/回应一个类,所以我可以找到一些关于它的细节。

我知道这不起作用,但这就是我要做的事情:

<?php echo $class; ?>

实现这样的目标的正确方法是什么?

有帮助吗?

解决方案

如果您只想打印课程内容以进行调试,请使用 print_r var_dump

其他提示

您可以尝试添加 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;
?>

在班级的实例上使用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/电流/组件/ 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);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top