PHP代码规范之PSR-1

作者:无名 - 其它综合 -
1.概述
1. 必须使用lt;php gt; 或是lt;=gt;这两种标签
2. php代码中必须使用utf-8 without bom 编码方式
3. 每个文件建议只用来声明(类class,函数function,常量constant等)或者只用来做一些辅助操作(输出信息,修改配置等),但一个文件不建议同时做这两件事
4. 命名空间namespace和类class必须遵循"autoloading"psr标准【psr-0,psr-4】
5. 类名(class)必须使用大驼峰命名法,如userinfocontroller
6. 类中的常量必须只能用大写字母和来命名
7. 方法名(method)必须使用驼峰命名法,如getuserinfo

2.文件

2.1php 标签

php代码中必须使用lt;php gt; 或是lt;=gt;这两种标签

2.2字符编码

php 代码 必须 使用 utf-8 without bom 编码

2.3文件的内容

规则建议一个文件只应该有一种行为,例如接口只做方法的定义,具体的功能在实现类中实现,建议不要把接口和实现写在同一文件中

  lt;php
        class fruit
            {
             public function __construct($type)
                {
                    $this-gt;_type = $type;
                }
            }

            $fruit=new fruit(‘pinguo‘);
    gt;

这样就是生命和使用混写的,规则不建议这么写,而知把生命和使用放在两个文件中
文件1:

  lt;php
        class fruit
            {
             public function __construct($type)
                {
                    $this-gt;_type = $type;
                }
            }
    gt;

文件2:

lt;php
     $fruit=new fruit(‘pinguo‘);
gt;

其他依次类推,次规则的目的是尽量使类和文件的功能单一化,尽量减小耦合,但是这样也会造成类和文件爆炸的问题,这就需要需要对具体的项目进行平衡和考量

3、命名空间 namespace 和类名 class name

命名空间 namespace 和类 class 必须 遵循”autoloading” psr标准: [psr-0, psr-4].

这意味着每个文件中只能有一个类 class,并且每个类 class 至少要有一级命名空间 namespace:即一个顶级的 vendor name

类名(class)必须 使用大驼峰命名法,如 studlycaps

php5.3 之后的 必须 使用正式的命名空间 namespace,例:

lt;php
// php 5.3 and later:
namespace vendor\model;

class foo
{
}

php5.2.x 和之前的版本 建议 用伪命名空间 vendor_ 作为类名的前缀

lt;php
// php 5.2.x 及之前:
class vendor_model_foo
{
}

4、类的常量 constant,属性 property,方法 method

类 class 指所有的类 class,接口 interface 和特性 trait

4.1. 常量 constant

类中的常量 必须 只能用 大写字母 和 _ 来命名,例:
lt;php

namespace vendor\model;

class foo
{
    const version = ‘1.0‘;
    const date_approved = ‘2012-06-01‘;
}

4.2. 属性

类的属性命名可以遵循 大写开头的驼峰式 (studlycaps),都应该在一定的范围内保持一致。这个范围可以是整个团队、整个包、整个类或整个方法。

4.3. 方法

方法名称必须符合 camelcase() 式的小写开头驼峰命名规范。

引用自:

https://www.php-fig.org/psr/psr-1/

php 代码规范之psr-1

原文地址:http://blog.51cto.com/13601957/2156215

IT人知识库 该篇知识地址:http://www.itpeo.net/9999/4539847.html





标签 代码规范

python3之深浅copy对比

一、赋值对比1、列表l1=[1,2,3] l2=l1 l1.append(#39;a#39;) print(l1,l2) ...

JSP基础--九大内置对象

jsp九大内置对象 object findattribute(string name):依次在page、request ...

Markdown:Syntax

markdown: syntax main basics syntax license ...

docker部署nginx服务器

1,下载nginx镜像 docker pull nginx 2,启动 docker run --name runo ...

wepy小程序入门和项目初始化

前言: wepy小程序项目初始化的操作,官方文档看了好几遍,感觉写得不是很清楚。 这篇写得挺好的:小程序开发之wepy ...

EffectiveJavaP2CreatingandDestroyingObjects

this chapter concerns creating and destorying objects : wh ...

vue中的ref,refs使用

使用elementui时,tree遇到的坑 1、发现,this.$refs每次都是undefined; 问题原因:渲染组 ...

Leetcode672.灯泡开关II

灯泡开关ii 现有一个房间,墙上挂有n只已经打开的灯泡和 4 个按钮。在进行了m次未知操作后,你需要返回这n只灯泡可能有 ...

golang基础学习-strings包常用函数学习

package main import ( "fmt" "strings" ) //strfunc 字符串说明 ...

C#基础篇之语言和框架介绍

1.如何描述c#和.net的关系? .net的是平台,c#是为了微软公司为了.net平台开发的面向对象语言。 2.c# ...

安装使用Hadoop遇到的一些问题

安装完后却不能运行hadoop,仔细查看日志信息,hadoop记录了详尽的日志信息,日志文件保存在logs文件夹内。 ...

c++string去除首尾空格、\n、\r、\t

string s = " test "; size_t n = s.find_last_not ...

.Net基础之3——运算符

(3)convert类型转换 1、类型如果相兼容的两个变量,可以使用自动类型转换或者显示类型转换。 但是如果两个类型的变 ...

iOS的match函数

1.求余 extern double fmod(double,double); fmod(10.2,3) =1.2 ...

AndroidStudio解决ADB检测不到手机导致无法连接的问题

adb的全称是android debug bridge,是用来管理模拟器和真机的通用调试工具。   开usb调试 ...

Django==>Form组件

django ==gt; form 组件 目录: 1.基本使用 2.form中字段和插件 3.自定义验证规则 4.动态加 ...

「mysql优化专题」详解引擎(InnoDB,MyISAM)的内存优化攻略?(9)

注意:以下都是在mysql目录下的my.ini文件中改写(技术文)。 一、innodb内存优化 innodb用一块内存区 ...

新媒体的冲击,传统企业的出路在哪?

新媒体冲击,传统企业的出路在哪? 在二零壹伍克强总理提出我们进入互联网+时代起,我国正式宣布进入后互联网时代,在互联网新 ...

西南seo大神理解的互联网+

“农村将成为互联网领域的‘沃土’,而非信息时代失联的‘孤岛’。大力发展农村互联网,打造现代智慧农村。在农村产业结构调整、 ...

[poj]3281Dining

原题 题目大意 n头奶牛,只能吃某种食物和饮料(而且只能吃特定的一份) 一种食物被一头牛吃了之后,其余牛就不能吃了 第一 ...