PhpStorm 如何优雅的调试Hyperf的方法步骤

PHPStorm 是一款功能强大的 IDE,我们可以通过它快速地进行代码编辑、调试和测试。如果我们需要开发和调试 Hyperf 应用程序,这里介绍一种优雅的调试方法。

步骤:

  1. 安装 Hyperf Debug 插件

在代码编辑器 PHPStorm 中,找到 Settings -> Plugins 进入插件管理页面,搜索 Hyperf Debug 插件并安装。

  1. 配置 PHP 的 XDebug

在 PHP 环境中安装并启用 XDebug 扩展。打开 php.ini 文件,在尾部加入以下配置。

[xdebug]
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_port=9003
xdebug.idekey=PHPSTORM

其中,xdebug.idekey 的值必须设置为 PHPSTORM。

  1. 配置 Hyperf Debug

在 Hyperf 应用程序的配置文件 config/autoload/server.php 中,加入以下配置。

'debug' => [
    'enabled' => true,
    'handler' => \Hyperf\HttpServer\Server::class,
    'server' => 'tcp://0.0.0.0:9502',
    'env' => ['dev', 'local'], // 支持多个环境
],

其中,handler 的值为 Hyperf HttpServer 的类名,server 的值为 XDebug 连接的地址和端口。

  1. 创建 PHPStorm Debug Configuration

在 PHPStorm 中,找到 Run -> Edit Configurations 进入配置页面,点击左上角的 + 号创建一个 PHP Remote Debug。

在配置页面中,填写以下内容:

  • Name:自定义名称
  • Server:选择 Host(我们需要在后面创建)
  • IDE Key:设置为 PHPSTORM
  • Filter debug connection by IDE key:勾选

点击右侧的 Create New Server 创建一个 Server 配置。

在弹出的窗口中,填写以下内容:

  • Name:自定义名称
  • Host:填写 Hyperf 应用程序运行所在的服务器 IP 地址
  • Port:填写 Hyperf Debug 的监听端口号
  • Debugger:选择 XDebug
  • Use path mappings:勾选,并添加映射

点击 OK 完成配置。

  1. 运行 Hyperf 应用程序

在应用程序所在目录下,运行以下命令启动 Hyperf 应用程序。

php bin/hyperf.php start

此时,应用程序会监听 Hyperf Debug 的端口,等待 XDebug 的连接。

  1. 开始调试

在 PHPStorm 中,打开需要调试的 PHP 文件,在左侧代码区域的行号处添加断点,然后点击右键选择 Debug XX 即可开始调试。

示例一:

在 User.php 文件的 index 方法中添加断点,然后通过浏览器访问该方法对应的路由,在 PHPStorm 中会自动停留在断点处。

use Hyperf\HttpServer\Annotation\AutoController;

/**
 * @AutoController(prefix="user")
 */
class UserController
{
    public function index()
    {
        $users = [
            ['name' => 'Tom', 'age' => 20],
            ['name' => 'Jerry', 'age' => 22],
            ['name' => 'Spike', 'age' => 24],
        ];
        return $users;
    }
}

示例二:

在测试用例 TestCest.php 文件的 index 方法中添加断点,然后在命令行中执行 testing 命令,可以在 PHPStorm 中看到测试用例执行的完整流程。

use Tests\TestCase;

class TestCest
{
    public function indexTest(TestCase $I)
    {
        $response = $I->get('/user');
        $data = json_decode($response->getBody()->getContents(), true);

        $I->assertIsArray($data);
        $I->assertCount(3, $data);
        $I->assertEquals('Tom', $data[0]['name']);
    }
}

通过上述方法,我们可以实现轻松快速地进行 Hyerpf 应用程序的调试。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PhpStorm 如何优雅的调试Hyperf的方法步骤 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • win10 cpu 磁盘 100% 运行及内存使用量变大 优化汇总

    Win10 CPU 磁盘 100% 运行及内存使用量变大 优化汇总 问题描述 在使用Win10操作系统时,有时会遇到CPU磁盘占用率达到100%的情况,同时内存使用量也会变大。这可能导致系统运行缓慢,影响用户体验。本文将提供一些优化策略,帮助解决这个问题。 优化策略 1. 关闭不必要的后台进程和服务 有些后台进程和服务可能会占用大量的CPU和内存资源。通过关…

    other 2023年8月1日
    00
  • 微信公众号自定义菜单栏绑定关联小程序的详细步骤

    下面是“微信公众号自定义菜单栏绑定关联小程序的详细步骤”的攻略: 步骤一:创建小程序 首先,需要在微信公众平台中创建对应的小程序,并进行相应的开发和绑定操作。具体步骤如下: 登录微信公众平台,进入小程序管理页面; 点击“开发”-“开发设置”-“开发者工具”,下载微信小程序开发者工具,然后根据文档指引进行开发和调试; 在小程序管理页面中,选择“开发者工具”选项…

    other 2023年6月25日
    00
  • 在IE地址栏中输入上192.168.1.1后不弹出用户名和密码框

    这个问题其实是涉及到路由器登录验证的问题。如果在IE地址栏中输入上192.168.1.1后不弹出用户名和密码框,那么很可能是因为您的浏览器保存了之前已经输入的登录信息,导致没有再次弹出登录框。下面介绍一些解决办法: 清空浏览器缓存和Cookie 有时候,浏览器会自动保存登录信息,导致登录框不弹出。我们可以通过清空缓存和Cookie的方式来解决这个问题。 在I…

    other 2023年6月27日
    00
  • 查看linux文件的命令详解

    当我们在使用Linux操作系统时,经常需要查看文件的内容,这时候就需要使用一些查看文件的命令了。下面,我将详细讲解一下Linux系统中常用的查看文件命令。 1. cat命令 使用cat命令可以查看文件的内容,cat命令可以打印文件的所有内容。 cat filename 其中filename是要查看的文件名,使用该命令会将文件的所有内容打印到终端上。需要注意的…

    other 2023年6月26日
    00
  • MySQL 8.0.28 安装配置图文教程

    下面是关于MySQL 8.0.28安装配置的完整攻略。 1.前言 MySQL是比较常用的关系型数据库,本文将介绍如何在Windows系统下安装MySQL 8.0.28并配置。 2.下载MySQL 首先,要到MySQL官网下载MySQL Community Server 8.0.28,下载链接如下:https://dev.mysql.com/downloads…

    other 2023年6月20日
    00
  • css用css3新特性text-shadow制作艺术字效果

    以下是关于“CSS用CSS3新特性text-shadow制作艺术字效果”的完整攻略,包含两个示例。 CSS用CSS3新特性text-shadow制作艺术字效果 text-shadow是CSS3中的一个新特性,可以用于制作艺术字效果。以下是关于如何使用text-shadow制作艺术字效果的详细攻略。 1. 使用text-shadow制作阴影效果 使用text-…

    other 2023年5月9日
    00
  • Objective-C中关于实例所占内存的大小详解

    Objective-C中关于实例所占内存的大小详解 在Objective-C中,每个实例对象都会占用一定的内存空间。了解实例所占内存的大小对于优化内存使用和性能至关重要。本攻略将详细讲解Objective-C中实例所占内存的大小,并提供两个示例说明。 1. 实例对象的内存布局 Objective-C的实例对象内存布局由以下几个部分组成: isa指针:每个实例…

    other 2023年8月1日
    00
  • 解读Jvm的内存结构与GC及jvm参数调优

    解读Jvm的内存结构与GC及jvm参数调优攻略 1. Jvm的内存结构 Jvm的内存结构主要分为以下几个部分: 方法区(Method Area):用于存储类的信息、常量、静态变量等。在JDK8及之前的版本中,方法区被实现为永久代(Permanent Generation),而在JDK8及之后的版本中,被实现为元空间(Metaspace)。 堆(Heap):用…

    other 2023年7月31日
    00
合作推广
合作推广
分享本页
返回顶部