Frage

Dies ist wahrscheinlich wirklich einfach, aber ich kann nicht scheinen, um herauszufinden, wie / drucken eine Klasse Echo so dass ich einige Details über sie herausfinden kann.

Ich weiß, dass dies nicht funktioniert, aber das ist, was ich zu tun werde versuchen:

<?php echo $class; ?>

Was ist der richtige Weg, um so etwas zu erreichen?

War es hilfreich?

Lösung

Wenn Sie nur den Inhalt der Klasse für Debugging-Zwecke drucken möchten, verwenden Sie print_r oder var_dump .

Andere Tipps

Sie könnten versuchen, ein toString Hinzufügen Methode Ihrer Klasse. Anschließend können Sie einige nützliche Informationen Echo, oder eine Render-Methode aufrufen, HTML oder etwas zu generieren!

Die __toString Methode wird aufgerufen, wenn Sie so etwas wie die folgenden zu tun:

echo $class;

oder

$str = (string)$class;

Das Beispiel verknüpft ist wie folgt:

<?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;
?>

Verwenden Sie var_dump auf eine Instanz der Klasse.

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

Um ausführlichere Informationen aus Ihrer Klasse (wenn Sie wissen wollen, was zum Beispiel für ein Kind Klasse verfügbar ist), können Sie eine debug() Methode hinzufügen.

Hier ist ein Beispiel-Klasse mit einer solchen Methode, die ich verwenden, dass druckt die Methoden, Standard Vars und Instanz Vars in einer netten Art und Weise strukturiert:

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

Sie können Symfony VarDumper Komponente verwenden http://symfony.com/doc/ Strom / components / var_dumper / introduction.html :

Installieren Sie es über Komponist:

composer require symfony/var-dumper 

Verbrauch:

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

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

dump($someVar);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top