2009-10-24 56 views
10

這可能很容易,但我似乎無法弄清楚如何打印/回顯一個類,以便我可以找出有關它的一些細節。如何「回顯」班級?

我知道這是不行的,但是這是我想要做的事:

<?php echo $class; ?> 

什麼是要實現這樣的事情的正確方法?

+0

向我們展示不起作用的代碼毫無意義。我們不能推斷你想做什麼,因爲代碼不起作用:根據定義,它沒有描述你想要做什麼。它沒有意義。所以,請描述(或用英文解釋)你想要的輸出。 – 2011-07-23 15:00:16

回答

16

如果你只是想要打印該類的內容以進行調試,請使用print_rvar_dump

+0

+1的速度:-) – 2009-10-24 23:31:47

+6

我的速度是+1嗎? – 2009-10-24 23:34:15

+0

這麼快我接受的答案已經被刪除,因爲它是一個重複的 – Andrew 2009-10-24 23:37:06

24

您可以嘗試在班級中添加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; 
?> 
+1

當你第一個回答,你有2 :) – 2009-10-24 23:36:46

5

在你的類的實例上使用var_dump。

<?php 
$my_class = new SomeClass(); 
var_dump($my_class); 
?> 
+0

-1緩慢.. jk – 2009-10-25 00:57:09

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(); 
0

您可以使用Symfony的VarDumper組件http://symfony.com/doc/current/components/var_dumper/introduction.html

經由作曲安裝:

composer require symfony/var-dumper 

用法:

require __DIR__.'/vendor/autoload.php'; 

// create a variable, which could be anything! 
$someVar = ...; 

dump($someVar); 
+0

未在Symfony,bro。上標記的問題。 – 2015-11-22 16:10:35

+0

該組件可以用於任何項目。 – 2015-11-23 00:24:25