如何遍历和记录PHP对象

时间:2016-05-19 15:47:38

标签: php object logging

我已经在Javascript和JSON对象中工作了一段时间,发现JS对象很容易看出里面是什么;你可以把它登录到控制台;结构它,基本上看到很多层次。这对于我没有制作的对象来说非常棒,所以我可以看到那里有什么以及我可以访问的内容。

漂亮打印JSON我经常使用这样的东西:

var str = JSON.stringify(obj, null, 2); // spacing level = 2
console.log('my pretty JSON Object: ', str );

如何在PHP中输出像$ myObject这样的对象并输出(print_r?)呢?我真的不在乎它是否适合控制台;我真的只想知道PHP开发人员如何查看和导航PHP对象。

我知道我可以将它转换并将其打印到控制台;这一切都很好,花花公子,但人们经常做什么?我想有一种方法可以做到这一点而不需要另一种语言

3 个答案:

答案 0 :(得分:2)

有许多可用的调试包。但是,如果您只想要一些简单的东西,您可以自己实现,您可以将数据写入日志文件。假设您希望在许多位置执行此操作,您应该创建一个类,并在每次要调试代码时调用该类。您可能还想跟踪日志记录发生的日期和时间。

以下是一个示例,您可以根据自己的需要使用和自定义它:

创建一个名为Debug.php的文件:

<?php
class Debug {

    public static function output($module, $text){
        $date = date("l jS \of F Y h:i:s A");
        file_put_contents ("/opt/logs/myProject.log", "================\n", FILE_APPEND);
        file_put_contents ("/opt/logs/myProject.log", "$date\n", FILE_APPEND);
        file_put_contents ("/opt/logs/myProject.log", "$module: $text\n", FILE_APPEND);

    }
}

然后在任何其他php文件中,您可以包含Debug类,其中包含以下行:

require_once("Debug.php");

然后,只要您想使用它,只需运行以下命令:

Debug::output("My Module #1", "This is a test");

OR

Debug::output("My Module #1 - My Variable", $my_variable);

OR

Debug::output("My Module #2 - My Object", json_encode($my_object));

OR

Debug::output(__FILE__, json_encode($my_object));

*请注意文件两侧的双下划线。或者使用其他服务器变量之一来获取相应的文件名。

答案 1 :(得分:1)

您无法直接从php输出到浏览器控制台,因为php在服务器上运行,而您的控制台在客户端上。我不认为将php调试信息输出到控制台是一个好主意,但如果你绝对必须,你可以输出一些javascript形式的php来将你的对象记录到控制台:

$myObject = new MyObject();
$myEscapedJson = str_replace('"','\"', json_encode($myObject));
...
echo "<script>console.log(\"My object from PHP: $myEscapedJson\");</script>

答案 2 :(得分:-1)

回到这一点,这是我经常使用的代码,当我想在控制台中查看我的php中的最新情况时进行测试:

            ?>
            <script>
              $( document ).ready(function($){
                var json_test  = <?php echo json_encode( $your_php_variable, JSON_FORCE_OBJECT ) ?>;
                console.log("im testing testy: ", json_test );
              });// document.ready END
            </script>
            <?php