felippe-regazio/php-hot-reloader

一个用于给任何PHP项目添加完整实时重载功能的类

dev-master 2021-04-20 16:12 UTC

This package is auto-updated.

Last update: 2024-09-20 23:49:08 UTC


README

[未维护]: 该仓库目前未维护,我最近几个月非常忙,一直在努力找时间来维护这个仓库,但一直没有成功。对于使用它的人表示歉意。如果您想维护这个仓库,请提交一个问题并告知我。

这是一个为任何PHP项目添加实时重载功能的类。它允许您在编码时动态查看页面的变化,而无需在每次更改时刷新浏览器。

此重载器使用SSE(服务器端发送事件)来监听更改并通知浏览器。因此,无需内置服务器、自定义端口或复杂的配置。

安装

使用Composer

composer require felippe-regazio/php-hot-reloader:dev-master --prefer-source

手动

克隆此仓库并将其文件夹复制到项目中的某个位置。

配置

  1. 将仓库根目录中的 phrwatcher.php 文件复制到您的应用程序中的某个位置。此文件必须通过某些URL(您可以根据需要更改其名称)可用,并且如果访问此文件,您必须看到“SSE_ADDRESS_OK | PROJECT ROOT:”的消息,告知您的项目根目录。复制此URL,您将需要它。

  2. 打开此文件并根据您的需求配置 $variables。请阅读变量的文档字符串以正确配置它们。基本上,您将在 $PROJECT_ROOT 中通知您的应用程序根目录,以及相对于应用程序根目录的文件要监视和忽略的文件在 $WATCH 和 $IGNORE 中。

  3. 现在,让我们假设您已配置了 phrwatcher.php 并在URL https:///your-project/phrwatcher.php(您在第一步中复制的URL)上可用。现在,您必须通过在您的应用程序中调用它并指向此URL来激活重载器

require_once "/php-hot-reloader/src/HotReloader.php";
new HotReloader\HotReloader('///your-project/phrwatcher.php');

如果您使用Composer安装了此仓库,则不需要 require_once,只需在您的应用程序中添加“自动加载器”并调用重载器即可。

因此,您必须传递指向您的 phrwatcher.php 文件的地址,作为 HotReloader() 函数的参数。您不需要添加协议,只需添加 "//" 作为URL前缀。强烈建议在您的应用程序的一些前端控制器上启动 HotReloader。此外,您应该在生产环境中禁用重载器,永远不要在生产环境中激活此功能。

Git集成

phrwatcher.php 文件中的 $WATCH 变量定义了要跟踪的文件和文件夹。因此,您无需设置文件和文件夹列表并观察它们,您可以观察您的仓库。热重载器将使用Git来跟踪当前正在更改的文件并观察它们。这节省了大量时间和处理,因为被跟踪的文件会自动更新,并且仅限于您当前正在工作的文件。要使用Git跟踪,您必须将 $WATCH 变量设置如下

$WATCH = "git:your/absolute/repository/path/";

如果您的 phrfile.php 在您的项目根目录中,您可以使用一个自动和动态的版本

$WATCH = "git:" . __DIR__;

现在热重载器将自动使用您的Git状态来观察文件。

技巧

当与较大的项目一起工作时,diff算法可能需要一些时间来计算更改的文件。为了避免“输入延迟”,您可以遵循以下技巧

  1. 在您的 phrwatcher.php 文件中的 $WATCH 数组中,尽量只保留必要的。如果您的项目很大,避免使用 ".",并且逐个指定路径,避免不必要的巨大文件夹,如 vendors、tmp、log。或者考虑使用 Git 集成。

  2. $IGNORE 数组仅与您正在监视的内容相关。如果您正在监视的路径中存在任何 vendor 文件夹,您必须将其添加到您的忽略列表中。例如,将 vendor、node_modules、sass_cache、tmp、log 等路径保持为忽略。

  3. 如果您的项目非常大,建议将 'git' 模式添加到您的 $WATCH 列表中。这样,您的列表将始终是 git status 的结果,因此,您将始终监视您目前正在工作的文件。

示例

在仓库的根目录下有一个示例文件。即 example.php。在您的浏览器中打开此文件,以查看热加载器的工作情况。