使用 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}";
}
}
我在 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}";
}
}