2009-10-24 3 views
10

これはおそらくとても簡単ですが、プリント/エコーをどのようにしてクラスをエコーアウトするかわからないので、いくつかの詳細がわかります。クラスをエコーする方法は?

私は、これは動作しません知っているが、これは私がやろうとしているものです:

<?php echo $class; ?> 

このような何かを達成するための正しい方法は何ですか?

+0

私たちが動作しないコードを示すポイントはありません。コードが機能しないので、あなたがやりたいことを外挿することはできません。定義によって、あなたがしたいことを説明することはありません。それは意味がありません。だから、あなたが望む出力を記述する(または英語で説明する)。 –

答えて

16

あなただけの場合デバッグの目的でクラスの内容を出力するには、print_rまたはを使用します。。

+0

+1のスピード:-) –

+6

スピードは+1ですか? –

+0

私が受けようとしていた答えはとても速かったので、重複して既に削除されていた – Andrew

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を持っています: –

5

クラスのインスタンスでvar_dumpを使用します。

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

-1 for slowness .. jk –

0

(あなたがたとえば、子クラスに利用できるかを知りたい場合は)、あなたはdebug()メソッドを追加することができ、あなたのクラスのうち、より詳細な情報を取得します。ここで

は、私は方法、デフォルトのVARSからそのプリントを使用し、このような方法での例のクラスだし、インスタンスが素敵な構造化された方法でvarsは:

<?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の下でタグ付けされていません。 –

+0

このコンポーネントはどのプロジェクトでも使用できます。 –

関連する問題