PHP 怎么遵循标准

wen PHP项目 4

本文目录导读:

PHP 怎么遵循标准

  1. 编码规范(PSR 标准)
  2. 架构与设计标准(SOLID 原则)
  3. 现代 PHP 开发范式
  4. 安全编码标准
  5. 如何将这些标准落实到实际工作中?

在 PHP 中“遵循标准”主要包含两个层面:编码规范(写代码的格式)和架构规范(代码的组织方式)。

以下是 PHP 开发者最应该遵循的核心标准,从基础的编码规范到高级的设计模式:

编码规范(PSR 标准)

这是 PHP 社区最基础的标准,由 PHP-FIG(PHP Framework Interop Group)制定。你至少需要掌握 PSR-1 和 PSR-12

  • PSR-1(基础编码标准)

    • 文件必须使用 <?php<?=
    • 文件必须使用 UTF-8 编码(无 BOM)。
    • 一个文件要么只声明新符号(类、函数等),要么只执行有副作用的操作(如输出、修改配置),不要混在一起
    • 类名必须使用 StudlyCaps(大驼峰),如 UserController
    • 方法名必须使用 camelCase(小驼峰),如 getUserName
    • 类常量必须全部大写并用下划线分隔,如 MAX_LIMIT
  • PSR-3(日志接口):遵循统一的日志接口(如 Psr\Log\LoggerInterface),方便接入 Monolog 等日志库。

  • PSR-4(自动加载标准)这是日常开发中最常用的

    • 通过命名空间(Namespace)与文件路径对应,实现类的自动加载。
    • App\Models\User 对应的路径就是 src/Models/User.php(前提是 App\ 指向 src/),使用 Composer 可以自动生成 vendor/autoload.php 来处理这一切。
  • PSR-12(扩展编码风格指南):这是目前最推荐的代码风格。

    • 缩进必须使用 4 个空格,不使用 Tab。
    • 左花括号 必须写在下一行(类和方法声明),控制结构(if、for)的左花括号写在同行。
    • 每行字符数尽量不超过 120 个,超过 80 个建议换行。
    • 命名空间和 use 声明必须在同一个空行之后。
    • 所有属性和方法必须有可见性声明(publicprotectedprivate),禁止使用 var
    • 控制结构关键词后必须有一个空格(如 if (condition))。

工具推荐:使用 PHP-CS-FixerPHP_CodeSniffer 来自动检查和修复代码风格,省时省力且专业。


架构与设计标准(SOLID 原则)

这是涉及面向对象设计(OOP)的重要准则,能让代码更易维护和扩展:

  • 单一职责原则(SRP):一个类只负责一个业务逻辑,避免出现“上帝类”。
  • 开闭原则(OCP):对扩展开放,对修改关闭,尽量通过增加新代码而不是修改旧代码来添加功能(多用接口和抽象类)。
  • 里氏替换原则(LSP):子类必须能够替换其基类,且行为保持一致。
  • 接口隔离原则(ISP):不强迫客户端依赖它们不使用的接口,设计小而精的接口,而非大而全的接口。
  • 依赖倒置原则(DIP):依赖抽象(接口)而不依赖具体实现(类)。

现代 PHP 开发范式

在编写项目代码时,遵循以下范式能显著提升代码质量:

  • 类型声明(Type Hinting):在函数参数和返回值上强制声明类型(intstringboolarray、类名),这在 PHP 7+ 是标配,能有效减少运行时错误。
  • 严格类型(declare(strict_types=1):在文件顶部声明此指令,强制类型按严格模式匹配,避免 PHP 自动做宽松类型转换(如把 "1" 转为 1)。
  • 使用 Composer 管理依赖不要手动下载库文件,通过 composer.jsoncomposer.lock 精确锁定依赖版本。
  • 使用命名空间(Namespace):避免类名冲突,并配合 PSR-4 实现自动加载。
  • 依赖注入(DI):不要在类内部使用 new 来创建依赖对象(这会形成硬编码),而是通过构造函数或 Setter 传入依赖,配合容器(如 Laravel 的 Service Container)使用。

安全编码标准

遵循标准还包括写安全的代码,避免常见漏洞:

  • 验证与过滤:对所有输入($_POST$_GET)进行验证,对所有输出进行转义(htmlspecialchars())。
  • SQL 注入防护永远不要拼接 SQL 字符串,必须使用 PDO 预处理语句(Prepared Statements)
  • CSRF 防护:表单提交必须包含 CSRF Token。
  • 文件上传:校验文件类型(使用 finfo_file 而非仅看扩展名),并避免将文件保存到 Web 根目录下的可执行目录。

如何将这些标准落实到实际工作中?

如果你写的是原生 PHP,可以这样入手:

  1. 配置 Composer:在项目根目录运行 composer init

  2. 设置目录结构

    project/
    ├── public/          # Web 根目录(DocumentRoot)
    │   └── index.php    # 唯一入口
    ├── src/             # 业务代码(PSR-4 映射)
    │   ├── Controllers/
    │   ├── Models/
    │   └── Services/
    ├── config/          # 配置文件
    ├── vendor/          # 依赖库(由 Composer 自动生成)
    ├── composer.json
    └── .editorconfig    # 编辑器统一风格配置
  3. 入口文件写法(public/index.php)

    <?php
    declare(strict_types=1);
    require __DIR__ . '/../vendor/autoload.php';
    // 定义错误处理常量(开发/生产环境切换)
    if (getenv('APP_ENV') === 'production') {
        error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT);
    } else {
        error_reporting(E_ALL);
    }
    // 这里是路由分发或框架入口
  4. 使用现代框架:如果你能熟练使用 LaravelSymfony,它们会强制你遵循 PSR 标准和 MVC 架构,因为框架底层已经封装好了这些标准,写框架代码通常就是你实践和遵守标准的过程。


PHP 遵循标准,可以归纳为:

  1. 代码风格:用 PSR-12,配合 CS-Fixer 自动格式化。
  2. 自动加载:用 PSR-4,配合 Composer。
  3. 代码质量:遵循 SOLID 原则,使用类型声明和依赖注入。
  4. 安全:使用 PDO 预处理,转义输出,验证输入。

建议:从 composerPSR-12 开始,这两者能立刻改变你的代码质量,如果是在团队中,建议在 pre-commit 钩子里加入 php-cs-fixer 检查,保证团队代码风格统一。

抱歉,评论功能暂时关闭!