سؤال

وربما هذا هو السهل حقا لكنني لا يمكن أن يبدو لمعرفة كيفية طباعة / صدى فئة حتى أتمكن من معرفة بعض التفاصيل حول هذا الموضوع.

وأنا أعلم أن هذا لا يعمل، ولكن هذا هو ما أحاول القيام به:

<?php echo $class; ?>

ما هي الطريقة الصحيحة لتحقيق شيء من هذا القبيل؟

هل كانت مفيدة؟

المحلول

إذا كنت ترغب فقط في طباعة محتويات الطبقة لأغراض التصحيح، استخدم print_r أو <وأ href = "http://php.net/var_dump" يختلط = "noreferrer"> var_dump .

نصائح أخرى

هل يمكن أن حاول إضافة 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;
?>

استخدم var_dump على مثيل صفك.

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

لحصول على معلومات أكثر تفصيلا من فصلك (إذا كنت تريد أن تعرف ما هو متاح لفئة الأطفال على سبيل المثال)، يمكنك إضافة أسلوب debug().

إليك فئة سبيل المثال مع هذه الطريقة التي أستخدمها أن يطبع خارج الطرق، فار الافتراضي، والمثال فار بطريقة منظمة لطيفة:

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

ويمكنك استخدام symfony لVarDumper مكون http://symfony.com/doc/ الحالية / مكونات / var_dumper / introduction.html :

وتثبيته عن طريق الملحن:

composer require symfony/var-dumper 

والاستعمال:

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

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

dump($someVar);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top