Pergunta

Este é provavelmente muito fácil, mas eu não consigo descobrir como imprimir / eco de uma classe para que eu possa descobrir alguns detalhes sobre isso.

Eu sei que isso não funciona, mas isso é o que estou tentando fazer:

<?php echo $class; ?>

O que é a maneira correta de conseguir algo assim?

Foi útil?

Solução

Se você quiser apenas imprimir o conteúdo da classe para fins de depuração, use print_r ou var_dump .

Outras dicas

Você poderia tentar adicionar um toString método na sua classe. então você pode ecoar alguma informação útil, ou chamar um método para gerar HTML ou algo rende!

O método __toString é chamado quando você faz algo como o seguinte:

echo $class;

ou

$str = (string)$class;

O exemplo ligada é a seguinte:

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

Use var_dump em uma instância de sua classe.

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

Para obter informações mais detalhadas fora de sua classe (se você quiser saber o que está disponível para uma classe filha, por exemplo), você pode adicionar um método debug().

Aqui está um exemplo de classe com tal método que eu uso que imprime os métodos, padrão vars e instância vars de uma maneira agradável estruturado:

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

Você pode usar Symfony VarDumper Component http://symfony.com/doc/ componentes / current / var_dumper / introduction.html :

Instale-o via Compositor:

composer require symfony/var-dumper 

Uso:

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

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

dump($someVar);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top