zoukankan      html  css  js  c++  java
  • PSR规范学习笔记

    PSR已经经历了5次变革,如今PSR4就是最新的标准,但是还是有必要了解下5个版本的内容的,于是去php-fig网站看了下英文原版;

    大概看了遍,发现这规范很多的必须很多时候只是建议,但是PHP解析器在解析PHP代码时,有时如果不满足规范,就不会通过或者报错。因此写代码时建议尽量以PSR标准来编写,毕竟一个规范的出台,有其重要的现实意义,同时最大的好处是能避免不必要的异常出现;

    当然,除此之外,另一个收获是,对框架源码的布局有了更加清晰的了解,所以建议大家有事没事都要把下面几个标准看看,推荐看英文版。(而下面我的笔记只是我比较关注的地方)

    如下是PSR五个标准的英文网页: 
    http://www.php-fig.org/psr/psr-0/ 
    http://www.php-fig.org/psr/psr-1/ 
    http://www.php-fig.org/psr/psr-2/ 
    http://www.php-fig.org/psr/psr-3/ 
    http://www.php-fig.org/psr/psr-4/


    PSR-0标准

    该标准已经在2014/10/21日被明确宣布废除,取而代之的是PSR-4标准; 
    大纲如下: 
    (1) 每一个namespace和class必须是如此命名的:

    <vendor name>(<namespace>)*<class name>
    • 1

    (2) 每一个命名空间必须有一个顶级的namespace(vendor name); 
    (3) 每一个命名空间都必须有一个或多个子命名空间; 
    (4) 当加载文件时,namespace中的每一个分隔符””都会被文件系统的文件分隔符替换; 
    (5) 当加载文件时,namespace中的每一个下滑线”_”都会被文件系统的文件分隔符替换; 
    (6) 当加载文件时,在替换后,将在namespace后添加.php来查找文件; 
    (7) vendor,namespace,class的命名用大小写字母组合而成;


    PSR-1标准

    (1) php文件必须使用<?php ?> 开头结尾; 
    (2) php文件必须使用没有BOM的UTF-8编码(可我看我的博客“UTF8的编码规则,文件BOM的由来”); 
    (3) php编码时应该将无side-effects的代码(如类的声明,函数的声明),和side-effects的代码(改变php环境,改变全局变量,改变数据库),分开文件编写; 
    (4) 命名空间和类的定义,必须符合自动加载原则,即每个php文件只能定义一个类,而且其namespace必须至少有一个顶级空间名字vendor-name; 
    (5) 类里面的常量,应该用大写字母和下划线组合定义; 
    (6) 类里面的属性,命名建议是大小写开头的驼峰型或者小写下划线行,该规则不做强制,但一定的代码范围内建议使用同一种命名方法,便于阅读; 
    (7) 方法的命名,建议是小写开头的驼峰型;


    PSR-2标准

    该标准是继承和拓展了PSR-1标准,是编码的基础标准; 
    (1) 代码的缩进必须是4个space,而不是tabs; 
    (2) 该标准对代码的行长度没有硬性要求,但是建议一行代码应该小于120个字符或者是少于80个字符; 
    (3) namespace和use声明下都应该留有一空行; 
    (4) 类的左花括号必须写在类定义的下一行, 右花括号必须在代码体的下一行; 
    (5) 方法的花括号规则和类的规则一样; 
    (6) 所有属性或者方法必须有可见性声明(public,private .etc),而final和abstract必须放在可见性声明前面,而static必须放在可见性声明之后; 
    (7) 控制结构的关键字(if,switch等)后面必须有个空格,而函数名就不需要了; 
    (8) 控制结构后面的左花括号必须和控制结构关键字在同一行,右花括号在代码体的下一行; 
    (9) 控制结构的左花括号后和右花括号前不能有空格; 
    (10) 所有php文件必须使用unix的换行符进行换行; 
    (11) 所有php文件结尾必须有一空行; 
    (12) php代码结束符”?>”,在只有php代码的文件里必须省略; 
    (13) 非空行,不能在后面添加空格; 
    (14) php的关键字必须是小写; 
    (15) extends和implements必须和类的定义写在同一行; 
    (16) 所有函数的定义前必须加可见性声明; 
    (17) 函数形参的定义时,每一个参数的前后不能有空格;


    PSR-3标准

    该标准主要讲述Log体系,暂时放下;

    PSR-4标准

    该标准主要描述自动加载,兼容PSR-0标准; 
    (1) 完整类名格式如下:

    <NamsespaceName>(<SubNamespaceNames>)*<ClassName>
    • 1

    要点: 
    A 必须有一个顶级namespace, 和psr-0时说的Vendor说的是一个东西,这里用“”符号; 
    B 必须有一个或多级namespace; 
    C 以类名结束; 
    D 下划线不具有独特性(注意和PSR-0区别); 
    E 可使用人体大小写; 
    F 整个类名对大小写敏感;

    (2) 自动加载继承类不能跑出任何异常(exception,throwable,errors)

  • 相关阅读:
    Linux开发初探
    Linux开发初探
    电脑使用说明书
    电脑使用说明书
    Delegates, Events, and Anonymous Methods 委托、事件与匿名方法
    CSS haslayout
    js与flash结合使用
    sgen.exe" exited with code 1.解决方法
    selenium
    selenium支付高版本的FireFox
  • 原文地址:https://www.cnblogs.com/liluxiang/p/9498684.html
Copyright © 2011-2022 走看看