Come & # 8220; echo & # 8221; una classe?
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?
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);