使用 XDebug 调试时,如何定义 PHP 对象在 VSCode 中的显示方式?

How to define how a PHP object will be shown in VSCode when debugging with XDebug?

我在 Visual Studio 中调试 C# 应用程序时使用了一个功能,我想知道在使用 VSCode 调试时是否可以在 PHP 中执行相同的操作] 和 XDebug。

当我在 C# 和 Visual Studio 调试器中工作时,当您将对象添加到 Debugger Watches 时,它会默认显示对象 class 名称,但是如果您在此 class,调试器将显示此函数返回的值。例如,如果我有一个用户 class:

public class User {
    public string Name { get; set; }
}

当你添加这个class的一个对象来观看时,它会显示类似:{YourNameSpace.User},但是如果你向class添加一个ToString方法,它会显示方法结果(用户:姓名)作为值。

public override string ToString()
{
    return "User: " + Name;
}

有没有办法在 PHP 中使用 XDebug 和 VSCode 做同样的事情?

Xdebug 不会自动为你调用__toString(),但你可以设置为监视:

(string) $object

简而言之:在变量名前加上(string)

这将强制 PHP 在 Xdebug 评估手表时调用 __toString 方法。

当然,要使其工作,您的 PHP class 需要定义 __toString() 方法:

<?php
class User {
    private $Name;

    function __construct($Name)
    {
        $this->Name = $Name;
    }

    function __toString()
    {
        return "User: {$this->Name}";
    }
}