phpwatch/phptoken-polyfill

PHP 8.0 的 PhpToken 类的 polyfill

v0.0.3 2020-11-11 12:59 UTC

This package is auto-updated.

Last update: 2024-09-11 16:17:56 UTC


README

PHP 8.0 的 PhpToken 类引入 PHP 7.1 及以上版本的 polyfill。

Latest Stable Version License CI

概述

此库提供了一层兼容层,以引入 PHP 8 带来的 PhpToken 类。它提供了该类的全部功能,但来自于用户空间的 PHP 代码。请注意,PHP 8 内置的 PhpToken 类由于使用 C 语言编写,因此既快又节省内存。但是,如果您有一个需要 PhpToken 类的库,您可以使用此库将此功能透明地引入任何 PHP 7.1 或更高版本。

先决条件

  • PHP 7.1 或更高版本。
  • Tokenizer 扩展(几乎总是捆绑提供)

安装

最简单的方法是使用 composer 安装。

composer require phpwatch/phptoken-polyfill

如果您的系统中没有提供 PhpToken 类,composer 自动加载器将无缝地自动加载此库提供的类,以提供相同的功能。

如果您不能使用 Composer,尝试说服做出该决定的人,现在已经不是 2012 年了。如果这不起作用,您可以通过手动加载 src/ 目录中的类来手动加载。

使用方法

使用方法与 PHP 8 原生 PhpToken 类完全相同。

请确保包含该文件。如果使用 Composer,请包含其自动加载文件。如果 PhpToken 类原生可用,则不会加载此库。如果您不使用 Composer 自动加载器,则需要手动在 src 目录中 require 文件。

以下是使用 PhpToken 类的示例。下面的示例应在任何从 7.1 到 8.0 及以上版本的 PHP 版本中工作,即使 PhpToken 类不可用。

$snippet = '<?php echo "Hello World"; ?>';
$tokens = \PhpToken::tokenize($snippet);

开发、测试和贡献

欢迎贡献。请打开一个问题或发送一个 pull-request。请确保在基于 Linux 的平台和 Windows 上运行测试。Windows 使用 CRLF 行结束符,如果将断言硬编码为期望 LF/CR 优先平台的特定位置,则可能会导致测试失败。

请注意,从 Github 下载的 zip 文件中不包括测试和其他开发依赖项。这是为了保持库的大小较小。您需要克隆存储库或将其分叉以获取完整源代码。

致谢

@Ayesh: Ayesh Karunaratne.