Domanda

Questo è probabilmente molto semplice ma non riesco a capire come stampare / fare eco a una classe in modo da poter scoprire alcuni dettagli al riguardo.

So che non funziona, ma questo è quello che sto cercando di fare:

<?php echo $class; ?>

Qual è il modo corretto per ottenere qualcosa del genere?

È stato utile?

Soluzione

Se vuoi solo stampare il contenuto della classe per scopi di debug, usa print_r o var_dump .

Altri suggerimenti

Potresti provare ad aggiungere un toString metodo per la tua classe. Puoi quindi fare eco ad alcune informazioni utili o chiamare un metodo di rendering per generare HTML o qualcosa del genere!

Il metodo __toString viene chiamato quando si esegue qualcosa di simile al seguente:

echo $class;

o

$str = (string)$class;

L'esempio collegato è il seguente:

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

Usa var_dump su un'istanza della tua classe.

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

Per ottenere informazioni più dettagliate dalla tua classe (se vuoi sapere cosa è disponibile ad una classe figlio per esempio), puoi aggiungere un metodo debug () .

Ecco una classe di esempio con un metodo tale che uso che stampa i metodi, le variabili predefinite e le variabili di istanza in un modo strutturato piacevole:

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

È possibile utilizzare Symfony VarDumper Component http://symfony.com/doc/ corrente / componenti / var_dumper / introduction.html :

Installalo tramite Composer:

composer require symfony/var-dumper 

Utilizzo:

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

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

dump($someVar);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top