前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PSR-1: 基本编码规范

PSR-1: 基本编码规范

作者头像
ianzhi
发布2019-07-31 11:41:33
4210
发布2019-07-31 11:41:33
举报
文章被收录于专栏:LNMP开发那些事LNMP开发那些事

一、能愿动词

MUST 必须

MUST NOT 一定不能

SHOULD 应该

SHOULD NOT 不应该

二、概览

  • 文件必须(MUST)只用<?php或者<?=标签。
  • php代码必须使用UTF-8 without BOM编码。
  • 文件应该只用于声明符号(symbols),例如类,方法,常量等,或者只用来做有边际影响的事(side-effects),例如创建输出,修改配置文件等,但是不应该同时做这两件事。
  • 命名空间和类必须遵循一个“自动加载”规范:[PSR-0PSR-4]。
  • 类名称必须声明为StudlyCaps的形式,即名称中每个单词首字母大写。
  • 类常量必须只使用大写字母,用下划线来做单词间隔离。
  • 方法名称必须声明为camelCase的形式。

三、文件

php标签

php代码必须使用<?php ?>标签或者短输出标签<?= ?>一定不能使用其他类型的标签。

字符编码

php代码必须使用UTF-8 without BOM编码。

边际影响

一个文件应该用来定义新符号(类, 方法, 常量等)并且不会带来边际影响,或者它应该执行可能带来边际影响的逻辑代码,但是不应该同时做这两件事。

边际影响意思是业务代码的执行不会直接涉及到声明类,方法,常量等,而是仅仅来自包含文件

边际影响包含但是不限于:创建输出,明确的使用require或者include,连接外部服务修改配置文件,抛出错误或者异常,修改全局或者静态变量,从文件读取或者写入文件等等。

下面是一个同时包含声明和边际影响的例子;

换句话说,一个应该避免的例子:

代码语言:javascript
复制
<?php
// 边际影响:修改配置文件
ini_set('error_reporting', E_ALL);

// 边际影响:加载文件
include "file.php";

// 边际影响:创建输出
echo "<html>\n";

// 声明
function foo()
{
    // function body
}

下面是一个包含声明但是没有边际影响的例子;也就是说,一个应该被效仿的例子:

代码语言:javascript
复制
<?php
// 声明
function foo()
{
    // function body
}

// 条件控制声明不是一个边际影响
if (! function_exists('bar')) {
    function bar()
    {
        // function body
    }
}

四、命名空间和类名称

命名空间和类必须遵循一个“自动加载”规范:[PSR-0PSR-4]。

这意味着每一个类在一个单独的文件中,并且在至少一个层级的命名空间中:一个顶级的包名称。

类名称必须声明为StudlyCaps的形式。

php5.3以及以后版本的代码必须使用正式的命名空间。

例如:

代码语言:javascript
复制
<?php
// php 5.3版本以后
namespace Vendor\Model;

class Foo
{
}

php5.2.x及以前的版本应该使用虚拟命名空间惯例,将Vendor_前缀添加到类名称前。

代码语言:javascript
复制
<?php
// PHP 5.2.x and earlier:
class Vendor_Model_Foo
{
}

五、类常量,属性和类方法

术语“类”指所有类,接口和trait

常量

类常量必须使用大写字母定义,使用下划线来分隔单词。

例如:

代码语言:javascript
复制
<?php
namespace Vendor\Model;

class Foo
{
    const VERSION = '1.0';
    const DATE_APPROVED = '2012-06-01';
}

属性

这个指导将回避使用$StudlyCaps$camelCase,还是$under_score属性命名的争论。

无论使用任何命名习惯,在一个合理的范围应该被保持一致。这个合理的范围可能是vendor级别,包级别,类级别或者方法级别。

方法

方法名称应该声明为camelCase()的形式。

文章作者ianzhi,原文地址:https://cloud.tencent.com/developer/article/1476752

文章版权归作者所有,转载请保留此声明。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-10-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、能愿动词
  • 二、概览
  • 三、文件
    • php标签
      • 字符编码
        • 边际影响
        • 四、命名空间和类名称
        • 五、类常量,属性和类方法
          • 常量
            • 属性
              • 方法
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档