我的 PHP 工具包,用于构建(相当)无框架应用程序 Slim 框架 CSRF 保护 Slim 框架 Flash 消息 Monolog - PHP 日志记录 zend-permissions-acl Guzzle,PHP HTTP 客户端 zend-xmlrpc PHPMailer - 一个功能齐全的 PHP 电子邮件创建和传输类 PHP-JWT 配置 Sclable XML Lint yaml-lint dockerfile-lint 目录快速入门 ShellCheck - 一个 shell 脚本静态分析工具 Fractal League\Flysystem 流 JSON 编码器 使用生成器的迭代原语 安全的 PHP EasyDB - 简单的数据库抽象层 Normie

2025-06-04

我的 PHP 工具包,用于构建(相当)无框架的应用程序

Slim Framework CSRF 保护

Slim 框架 Flash 消息

Monolog - PHP 日志记录持续集成

zend-permissions-acl

Guzzle,PHP HTTP 客户端

zend-xmlrpc

PHPMailer – 一个功能齐全的 PHP 电子邮件创建和传输类

PHP-JWT

配置

可扩展 XML Lint

yaml-lint

dockerfile-lint

目录

快速入门

ShellCheck——shell脚本静态分析工具

分形

联盟\飞行系统

流式 JSON 编码器

使用生成器的迭代原语

安全的 PHP

EasyDB - 简单数据库抽象层

诺米

嘿,让我向你介绍一些我在生产中运行的许多 PHP 项目中使用的库和工具。

每次启动一个新的 PHP 项目时,我都会从下面的列表中挑选库来构建自己的框架。但说实话,我必须承认,我仍然使用一个微框架来处理基本的 HTTP 功能:Slim

📝我不使用 ORM,主要使用 Web API 构建后端应用程序。

图书馆

1. 轻薄框架

苗条的

🙋目的: 用于构建 Web API 的微框架
🌠 GitHub 星标: 9,475
🔗 URL: slimphp/slim

2. Slim Framework CSRF防护中间件

GitHub 徽标 slimphp / Slim-Csrf

Slim Framework CSRF 保护中间件

Slim Framework CSRF 保护

构建状态 覆盖状态

此仓库包含一个 Slim Framework CSRF 保护 PSR-15 中间件。CSRF 保护适用于所有不安全的 HTTP 请求(POST、PUT、DELETE、PATCH)。

您可以使用 Request 对象的getAttribute()方法获取最新的 CSRF 令牌的名称和值。默认情况下,CSRF 令牌的名称存储在csrf_name属性中,CSRF 令牌的值存储在csrf_value属性中。

安装

通过 Composer

$ composer require slim/csrf
Enter fullscreen mode Exit fullscreen mode

需要 Slim 4.0.0 或更新版本。

用法

在大多数情况下,您希望为所有路由注册 Slim\Csrf,但是,由于它是中间件,您也可以为部分路由注册它。

注册所有路线

use DI\Container
use Slim\Csrf\Guard;
use Slim\Factory\AppFactory;

require __DIR__ . '/vendor/autoload.php';

// Start PHP session
session_start();

// Create Container
$container = new Container
Enter fullscreen mode Exit fullscreen mode

🙋目的: 使用 CSRF 令牌保护你的 GUI 页面
🌠 GitHub 星标: 201
🔗 URL: slimphp/csrf

3. Slim Framework 闪信

GitHub 徽标 slimphp / Slim-Flash

Slim Framework 闪信服务提供商

Slim 框架 Flash 消息

构建状态

此代码库包含一个 Slim Framework Flash 消息服务提供程序。这使您可以定义仅从当前请求持续到下一个请求的临时消息。

安装

通过 Composer

$ composer require slim/flash
Enter fullscreen mode Exit fullscreen mode

需要 Slim 3.0.0 或更新版本。

用法

苗条4

本示例假设您已经php-di/php-di安装。

<?php
use DI\ContainerBuilder;
use Slim\Factory\AppFactory;
use Slim\Flash\Messages;
use Slim\Routing\RouteContext;

require_once __DIR__ . '/../vendor/autoload.php';

$containerBuilder = new ContainerBuilder();

// Add container definition for the flash component
$containerBuilder->addDefinitions(
    [
        'flash' => function () {
            $storage = [];
            return new Messages($storage);
        }
    ]
);

AppFactory::setContainer($containerBuilder->build());

$app = AppFactory::create();

// Add session start
Enter fullscreen mode Exit fullscreen mode

🙋目的: 这使您能够定义仅从当前请求持续到下一个请求的瞬态消息
🌠 GitHub 星 104🔗 URL:slimphp/flash

4. 树枝

枝条

🙋用途: 一款非常流行的模板引擎,可与 Slim(slimphp/twig-view
完美集成 🌠 GitHub 星标: 5,705
🔗 URL: twigphp/twig

5. 独白

GitHub 徽标 塞尔达克/独白

将您的日志发送到文件、套接字、收件箱、数据库和各种 Web 服务

独白

Monolog - PHP 日志记录持续集成

总下载量 最新稳定版本

注意:这是Monolog 3.x 的文档,如果您使用的是旧版本,请参阅Monolog 2.xMonolog 1.x的文档

Monolog 将您的日志发送到文件、套接字、收件箱、数据库和各种 Web 服务。请参阅下面的处理程序完整列表。特殊处理程序允许您构建高级日志记录策略。

此库实现了PSR-3接口,您可以在自己的库中使用类型提示,以最大程度地保持互操作性。您也可以在应用程序中使用它,以确保以后始终可以使用其他兼容的日志记录器。从 1.11.0 开始,Monolog 公共 API 也将接受 PSR-3 日志级别。由于 Monolog 的日志级别早于 PSR-3,因此 Monolog 内部仍然使用其自己的级别方案。

安装

安装最新版本

composer require monolog/monolog
Enter fullscreen mode Exit fullscreen mode

基本用法

<?php
use
Enter fullscreen mode Exit fullscreen mode

🙋用途: 将日志发送到文件、套接字、收件箱、数据库和各种 Web 服务
🌠 GitHub 星标: 13,388
🔗 URL: seldaek/monolog

6. Zend ACL 权限




🙋目的: 为权限管理提供轻量级、灵活的访问控制列表(ACL)实现
🌠 GitHub 星数: 55
🔗 URL: zendframework/zend-permissions-acl

7. 狂饮

GitHub 徽标 狂饮/狂饮

Guzzle,一个可扩展的 PHP HTTP 客户端

狂饮

Guzzle,PHP HTTP 客户端

最新版本 构建状态 总下载量

Guzzle 是一个 PHP HTTP 客户端,可以轻松发送 HTTP 请求并轻松地与 Web 服务集成。

  • 用于构建查询字符串、POST 请求、流式传输大型上传、流式传输大型下载、使用 HTTP cookie、上传 JSON 数据等的简单界面...
  • 可以使用相同的接口发送同步和异步请求。
  • 使用 PSR-7 接口进行请求、响应和流传输。这允许你将其他兼容 PSR-7 的库与 Guzzle 结合使用。
  • 支持 PSR-18,允许与其他 PSR-18 HTTP 客户端互操作。
  • 抽象出底层的 HTTP 传输,允许您编写与环境和传输无关的代码;即,不依赖 cURL PHP 流、套接字或非阻塞事件循环。
  • 中间件系统允许您增强和组合客户端行为。
$client = new \GuzzleHttp\Client()
$response = $client->request('GET', 'https://api.github.com/repos/guzzle/guzzle');

echo $
Enter fullscreen mode Exit fullscreen mode

🙋用途: Guzzle 是一个 PHP HTTP 客户端,可以轻松发送 HTTP 请求并轻松与 Web 服务集成
🌠 GitHub 星标: 15,355
🔗 URL: guzzlehttp/guzzle

8.原产地保护组织

🙋用途: 用于构建和执行安全 SQL 预处理语句的 PHP 扩展
🔗 URL: PDO

9. Zend XML-RPC

GitHub 徽标 zendframework / zend-xmlrpc

Zend Framework 中的 XmlRpc 组件

zend-xmlrpc

存储库废弃于 2019-12-31

该存储库已移至laminas/laminas-xmlrpc

构建状态 覆盖状态

XML-RPC 的主页将其描述为“……使用 HTTP 作为传输协议、XML 作为编码方式的远程过程调用。XML-RPC 的设计尽可能简单,同时允许传输、处理和返回复杂的数据结构。”

Zend\XmlRpc为使用远程 XML-RPC 服务和构建新的 XML-RPC 服务器提供支持。




🙋目的: 为使用远程 XML-RPC 服务和构建新的 XML-RPC 服务器提供支持
🌠 GitHub 星数: 14
🔗 URL: zendframework/zend-xmlrpc

10. PHPMailer

GitHub 徽标 PHPMailer / PHPMailer

PHP 的经典电子邮件发送库

SWU旗帜

PHP邮件器

PHPMailer – 一个功能齐全的 PHP 电子邮件创建和传输类

测试状态 codecov.io 最新稳定版本 总下载量 执照 API 文档 OpenSSF 记分卡

特征

  • 可能是世界上最流行的 PHP 发送电子邮件的代码!
  • 被许多开源项目使用:WordPress、Drupal、1CRM、SugarCRM、Yii、Joomla!等等
  • 集成 SMTP 支持 – 无需本地邮件服务器即可发送
  • 发送具有多个收件人、抄送、密送和回复地址的电子邮件
  • 适用于无法读取 HTML 电子邮件的邮件客户端的多部分/替代电子邮件
  • 添加附件,包括内联
  • 支持 UTF-8 内容和 8bit、base64、二进制和引用可打印编码
  • 通过 SMTPS 和 SMTP+STARTTLS 传输使用 LOGIN、PLAIN、CRAM-MD5 和 XOAUTH2 机制进行 SMTP 身份验证
  • 自动验证电子邮件地址
  • 防止标头注入攻击
  • 超过 50 种语言的错误消息!
  • DKIM 和 S/MIME 签名支持
  • 兼容 PHP 5.5 及更高版本,包括 PHP 8.2
  • 命名空间以防止名称冲突
  • 更多!

为什么你可能需要它

许多 PHP 开发人员需要从代码中发送电子邮件。唯一的……

🙋目的: 一个功能齐全的 PHP 电子邮件创建和传输类
🌠 GitHub 星标: 12,422
🔗 URL: phpmailer/phpmailer

11. Firebase / PHP-JWT

GitHub 徽标 firebase / php-jwt

JWT 的 PHP 包

构建状态 最新稳定版本 总下载量 执照

PHP-JWT

一个在 PHP 中编码和解码 JSON Web 令牌(JWT)的简单库,符合RFC 7519

安装

使用 Composer 管理你的依赖项并下载 PHP-JWT:

composer require firebase/php-jwt
Enter fullscreen mode Exit fullscreen mode

或者,paragonie/sodium_compat如果您的 php 环境没有安装 libsodium,请从 composer 安装软件包:

composer require paragonie/sodium_compat
Enter fullscreen mode Exit fullscreen mode

例子

use Firebase\JWT\JWT
use Firebase\JWT\Key;

$key = 'example_key';
$payload = [
    'iss' => 'http://example.org',
    'aud' => 'http://example.com',
    'iat' => 1356999524,
    'nbf' => 1357000000
];

/**
 * IMPORTANT:
 * You must specify supported algorithms for your application. See
 * https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40
 * for a list of spec-compliant algorithms.
 */
$jwt = JWT::encode($payload, $key, 'HS256');
$decoded = JWT::
Enter fullscreen mode Exit fullscreen mode

🙋目的: 一个在 PHP 中对 JSON Web Tokens (JWT) 进行编码和解码的简单库,符合 RFC 7519
🌠 GitHub 星标: 4,574
🔗 URL: firebase/php-jwt

12. Hassankhan/配置

GitHub 徽标 hassankhan /配置

Config 是一个轻量级的配置文件加载器,支持 PHP、INI、XML、JSON 和 YAML 文件

配置

最新版本 软件许可证 构建状态 覆盖状态 质量得分 总下载量 吉特

Config 是一个文件配置加载器,支持 PHP、INI、XML、JSON YML、Properties 以及序列化文件和字符串。

要求

配置需要 PHP 7.4+。

重要提示:如果您想使用 YAML 文件或字符串,则需要composer.json.

安装

支持通过 Composer 安装 Config。

$ composer require hassankhan/config
Enter fullscreen mode Exit fullscreen mode

用法

Config 的设计非常简单易用。你只需要加载、获取和设置即可。

加载文件

Config可以通过工厂方法创建对象,也可以通过直接实例化来创建对象load()

use Noodlehaus\Config
use Noodlehaus\Parser\Json;

// Load a single file
$conf = Config::load('config.json');
$conf = new Config('config.json');

// Load values from multiple files
$conf = new Config(['
Enter fullscreen mode Exit fullscreen mode

🙋用途: Config 是一个轻量级的配置文件加载器,支持 PHP、INI、XML、JSON 和 YAML 文件
🌠 GitHub 星数: 749
🔗 URL: hassankhan/config

工具

作为一名 PHP 工匠,以下工具是我的工具包中必备的工具。其中大多数(shellcheck除外)都可以通过composer安装,这样您就可以将它们作为开发依赖项添加到项目的 中composer.json

1. 作曲家

作曲家

🙋用途: 必备的 PHP 依赖管理器,以及更多功能
🌠 GitHub 星标: 18,049
🔗 URL: Composer

2. PHPUnit

phpunit

🙋目的: 具有模拟功能的出色单元测试框架
🌠 GitHub 星标: 12,785🔗 URL PHPUnit

3. PHP代码嗅探器

GitHub 徽标 squizlabs / PHP_CodeSniffer

PHP_CodeSniffer 对 PHP 文件进行标记并检测违反定义的一组编码标准的情况。

警告

此仓库已被废弃。其后继者是PHPCSStandards/PHP_CodeSniffer

有关详细信息,请参阅问题#3932 。

关于

PHP_CodeSniffer 是一套包含两个 PHP 脚本的程序;主phpcs脚本用于对 PHP、JavaScript 和 CSS 文件进行标记,以检测是否存在违反既定编码标准的情况;第二个phpcbf脚本用于自动纠正违反编码标准的错误。PHP_CodeSniffer 是一款必不可少的开发工具,可确保您的代码保持简洁一致。

构建状态 构建状态 代码一致性 加入聊天:https://gitter.im/squizlabs/PHP_CodeSniffer

要求

PHP_CodeSniffer 需要 PHP 5.4.0 或更高版本,但个别嗅探功能可能存在其他要求,例如需要外部应用程序和脚本。请参阅“配置选项”手册页,了解这些要求的列表。

如果您作为团队的一部分使用 PHP_CodeSniffer,或者在CI服务器上运行它,则可能需要使用配置文件来配置项目的设置

安装

开始使用 PHP_CodeSniffer 的最简单方法是下载每个 Phar 文件...

🙋用途: 静态分析工具,用于检测和修复编码标准违规
🌠 GitHub 星标: 5,915
🔗 URL: squizlabs/php_codesniffer

4. PHP 混乱检测器(又名phpmd)

phpmd

🙋用途: 静态分析工具 ,用于检测代码异味、不良设计、错误、未使用的参数等。🌠 GitHub 星数:1,315
🔗 URL:phpmd/phpmd

5. PHP 编码标准修复器(又名php-cs-fixer)

php-cs-修复程序

🙋目的: 自动修复违反编码标准的行为
🌠 GitHub 星数: 7,036
🔗 URL: friendsofphp/php-cs-fixer

6. SensioLabs 安全检查器

安全检查器

🙋用途: SensioLabs 安全检查器是一个命令行工具,用于检查您的应用程序是否使用具有已知安全漏洞的依赖项
🌠 GitHub 星标: 1,397
🔗 URL: sensiolabs/security-checker

7. XML Linter

GitHub 徽标 可缩放/ xml-lint

一个用于从命令行检查和验证 xml 文件的 php 工具。

可扩展 XML Lint

一个用于从命令行检查和验证 xml 文件的 php 工具。

构建状态 最新稳定版本 总下载量 执照

XML Lint 检查任何 xml 文件的语法并根据文件中定义的 XSD 模式验证该文件。

用法

使用 Composer 安装

如果你想使用composer将此库包含在你的项目中,只需运行:

composer require "sclable/xml-lint"

命令行用法

要检查单个 xml 文件:

vendor/bin/xmllint path/to/file.xml

要检查目录及其所有子目录:

vendor/bin/xmllint path/to/dir

帮助

xmllint已内置 cli 帮助屏幕:

vendor/bin/xmllint --help

选项

  • -v详细地显示当前要检查的文件的文件名
  • -r 0不要递归搜索(如果参数是目录)
  • -e name排除包含“名称”的文件或目录
  • -s跳过 xsd 验证

发展

运行测试

# check code style
php tools/php-cs-fixer/vendor/bin/php-cs-fixer fix --dry-run -v

# run tests
php vendor/bin/phpunit
php vendor/bin/behat
Enter fullscreen mode Exit fullscreen mode

使用docker:

# Example
docker
Enter fullscreen mode Exit fullscreen mode

🙋用途: 一个用于从命令行检查和验证 XML 文件的 PHP 工具
🌠 GitHub 星数: 6
🔗 URL: sclable/xml-lint

8. YAML Linter

GitHub 徽标 j13k / yaml-lint

用于验证 YAML 文件的紧凑命令行 linting 工具。

yaml-lint

Packagist 上的最新版本 软件许可证 总下载量 每月下载量 CI

一个紧凑的命令行 linting 工具,用于验证 YAML 文件,使用Symfony Yaml 组件的解析功能

用法

usage: yaml-lint [options] [input source]

  input source    Path to file(s), or "-" to read from standard input

  -q, --quiet     Restrict output to syntax errors
  -h, --help      Display this help
  -V, --version   Display application version

安装

作曲家

要开始在项目中使用 yaml-lint,请使用 Composer 安装它:

composer require --dev j13k/yaml-lint
Enter fullscreen mode Exit fullscreen mode

然后它可以从项目的vendor/bin目录运行。

要全局设置 yaml-lint,请将其安装在 Composer 主目录中:

composer global require j13k/yaml-lint
Enter fullscreen mode Exit fullscreen mode

bin然后它可以从Composer 主目录运行(通常是~/.composer/vendor/bin)。

二进制

每个版本发布时,都会提供一个二进制版本yaml-lint.phar可供下载。它嵌入了发布时最新的 Symfony Yaml 组件的稳定版本。

🙋用途: 用于检查 YAML 文件语法的紧凑命令行实用程序 🌠
GitHub星数: 3🔗 URL:j13k/yaml-lint

9. Dockerfile Linter

新公共管理 构建状态

dockerfile-lint

基于规则的Dockerfiles ' linter'。linter 规则可用于检查文件语法以及规则文件编写者确定的任意语义和最佳实践属性。linter 还可用于检查针对 docker 镜像的 LABEL 规则。

目录

快速入门

  1. 切换到 Dockerfile 所在的目录
  2. 跑步
  • 原子 CLI

        atomic run projectatomic/dockerfile-lint
    
        atomic run projectatomic/dockerfile-lint image <imageid>
    
  • Docker 命令行界面

        docker run -it --rm -v $PWD:/root/ \
               projectatomic/dockerfile-lint \
               dockerfile_lint [-f Dockerfile]
    
        docker run -it --rm -v $PWD:/root/  \
               -v /var/run/docker.sock:/var/run/docker.sock \
               projectatomic/dockerfile-lint \
               dockerfile_lint  image <imageid>
    

默认情况下,linter 以严格模式运行(错误和/或警告会导致非零返回码)。使用-p或运行--permissive以下命令……

🙋目的: 基于规则的 Dockerfile linter
🌠 GitHub 星标: 259
🔗 URL: projectatomic/dockerfile_lint

10. Shellcheck

GitHub 徽标 koalaman / shellcheck

ShellCheck,一个用于 Shell 脚本的静态分析工具

构建状态

ShellCheck——shell脚本静态分析工具

ShellCheck 是一个 GPLv3 工具,可以为 bash/sh shell 脚本提供警告和建议:

终端屏幕截图,突出显示有问题的 Shell 脚本行

ShellCheck 的目标是

  • 指出并澄清导致 shell 给出神秘错误消息的典型初学者语法问题。

  • 指出并澄清导致 shell 行为异常和违反直觉的典型中级语义问题。

  • 指出细微的警告、极端情况和陷阱,这些可能会导致高级用户的原本可以正常工作的脚本在未来的情况下失败。

请参阅错误代码库,了解 ShellCheck 可以帮助您识别的示例!

目录

🙋用途: shell 脚本的静态分析工具
🌠 GitHub 星标: 13,440
🔗 URL: koalaman/shellcheck

11. Swagger 命令行工具

swagger-cli

🙋用途: 验证 JSON 或 YAML 格式的 Swagger/OpenAPI 文件
🌠 GitHub 星数: 125
🔗 URL: APIDevTools/swagger-cli


所有这些工具都可以自动运行:

  • 在你的 IDE 中
  • 在 git hook 中
  • 在您的 CI/CD 管道中

如果您想了解更多,请查看我以前的一篇文章:

谢谢阅读。

再见!

文章来源:https://dev.to/biros/my-php-toolkit-to-build-a-quite-frameworkless-app-5f8g
PREV
使用 `;`、`&&` 和 `||` 在一行中运行多个命令 - Linux 技巧
NEXT
CLI 内心充满爱 ❤️