• 技术文章 >后端开发 >php教程

    php大牛分享:php代码编写的规范,总结的很全

    不言不言2018-07-13 17:38:09原创841
    这篇文章主要介绍了关于php大牛分享:php代码编写的规范,总结的很全,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

    一直以来,php都是Web开发中使用最频繁的编程语言,也正因为如此,众多的从业者,导致了很多不规范的代码。

    PHP-FIG(PHP框架接口组织)制定了一整套完善的标准,推荐给广大的php开发使用。

    一共制定了五套标准:

    (PSR: PHP推荐标准)

    PSR-1: 基本的代码风格;

    PSR-2: 严格的代码风格;

    PSR-3: 日志记录器接口;

    PSR-4: 自动加载

    其实还有一个PSR-0,不过已被PSR-4代替了,所以不存在 PSR-0版本。

    一、PSR-1:基本代码风格

    1. 标签: 必须要把php代码写在 <?php 和 ?>, 或者 <?= 和 ?>标签中,不得使用其它格式的标签;

    2. 编码: 必须采用无BOM头的UTF-8字符集,目前大多数的IDE编辑器都自动支持;

    3. 类名: 必须采用驼峰式: CamelCase,这种格式也叫标题式,例如: IndexController;

    4. 常量: 必须采用大写字母,多个单词之间采用下划线连接: APP_PATH;

    5. 方法: 必须采用小驼峰式: camelCase(),例如: getStatus();

    二、PSR-2: 严格的代码风格

    1. 代码必须首先符合PSR-1的规范;

    2. 缩进: 必须统一采用四个空格;

    3. 换行: 必须使用UNIX换行风格;

    4. 结尾: 必须要有一个空行,并且不允许有关闭标签 ?>;

    5. 每行代码不超过80字符,最多不能超过120个字符;

    6. 关键字全部使用小写字母,例如: true,false,use....;

    7. 命名空间:后面必须紧跟一个空行;

    8. use导入空间后,也必须紧跟一个空行;

    9. 类的起始括号{, 必行另起一行;

    10. 方法与函数的起始括号{,也必须另起一行;

    11. 类中所有成员,必须声明可见性:public, protected,private;

    12. 类中成员的特征: abstract, final, 必须放在可见性声明之前;

    13. static 关键字,必须放在类成中的可见性声明之后;

    14. 控制结构的起始括号必须与语句在同一行,例如: if () {};

    15. 控制结构的参数之间,逗号之后必须要有空格,例如:($m, $n);

    三、PSR-3: 日志记录接口

    这个规范与前面的规范不同,它不是一个推荐标准,而是一个接口标准,规则了日志记录器可以实现的方法。

    只要遵循这个标准,就必须实现以下9个方法:

    <?php
    namespace Psr\Log;
    interface LoggerInterface
    {
    public function emergency($message, array $context=[]);
    public function alert($message, array $context=[]);
    public function critical($message, array $context=[]);
    public function error($message, array $context=[]);
    public function warning($message, array $context=[]);
    public function notice($message, array $context=[]);
    public function info($message, array $context=[]);
    public function debug($message, array $context=[]);
    public function log($level, $message, array $context=[]);
    }

    四、PSR-4: 自动加载器

    1. 为什么要有自动加载器?

    之前一个php脚本中,可能会加载大量的文件:

    <?php 
    include 'demo1.php';
    include 'demo2.php';
    include 'demo3.php';
    ......

    有了自动加载器,就可以根据功能,按需加载。

    在没有该标准之前, 我们可以通过__autoload()和spl_autoload_register()进行加载器注册,现在可以借助命名空间实现自动加载。

    2. 自动加载原理

    主要是将类,接口,trait等所在文件路径,与代码的命名空间进行映射,使之一一对应,赋予了命名空间第二次生命。

    例如:

    <?php
    namespace app\controller;
    class UserController
    {
    //代码
    }

    说明:

    1. 类名: app\controller\UserController;

    2. 类文件与类同名: app/controller/UserController.php

    3. 类名与类文件名,通过命名空间进行映射:

    <?php
    define('ROOT_PATH', __DIR__);
    spl_autoload_register(function($className){
    require ROOT_PATH . '/' . str_replace('\\','/', $className) . '.php';
    });

    4. 将类名与命名空间进行关联,是现代php开发框架的基础,composer也是基于此实现了组件自动加载;

    更多的编程规范,可以登录php中文网(m.sbmmt.com)查阅。

    相关推荐:

    关于php-fpm的进程数管理

    对于PHP面向对象设计五大原则(SOLID)的总结

    以上就是php大牛分享:php代码编写的规范,总结的很全的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php代码编写
    上一篇:Nginx请求限制和访问控制的解析 下一篇:PHP生成带参数的微信小程序的二维码
    千万级数据并发解决方案

    相关文章推荐

    • 用PHP实现自己的sha-256哈希算法!• 怎么采用新窗口打开• PHP页面跳转几种兑现技巧• DEDECMS分页标签的有关问题,用求大神• php上传文件有关问题
    1/1

    PHP中文网