PHP符合PSR编程规范的实例分享


Posted in PHP onDecember 21, 2016

前言

关于开发标准这块,可以说一直都是风格迥异,各家都有各家的玩法,民间更是个人玩个人的。目前我们国内比较出名的几个框架(Yii,Laravel) 都已经支持Composer并且加入了PHP-FIG(php框架程序组)。

其中Composer的自动加载就支持PHP-FIG指定的PSR-0 和 PSR-4 规范来实现自动加载机制,并且Composer推荐使用PSR-4

PHP-FIG

这是一个自愿非正式的机构,但是就目前对我们的影响来看,可能都已经默认为一个公信组织了,的的确确制定了不少非常好的规范

目前从官网看,已经投票( http://www.php-fig.org/psr/  )通过的有7个大的规范了

  1. PSR-0 自动加载规范 ( 官方已废弃,主要是php5.3以前没有命名空间 )
  2. PSR-1 编码规范
  3. PSR-2 编码风格推荐
  4. PSR-3 日志接口
  5. PSR-4 改进的自动加载规范( 官方推荐 ,规范更简洁调理清晰了)
  6. PSR-6 缓存接口
  7. PSR-7 HTTP消息接口

实例

<?php
namespace Standard; // 顶部命名空间
// 空一行
use Test\TestClass;//use引入类

/**
 * 类描述
 *
 * 类名必须大写开头驼峰.
 */
abstract class StandardExample // {}必须换行
{
  /**
  * 常量描述.
  *
  * @var string
  */
 const THIS_IS_A_CONST = ''; // 常量全部大写下划线分割

 /**
  * 属性描述.
  *
  * @var string
  */
 public $nameTest = ''; // 属性名称建议开头小写驼峰
            // 成员属性必须添加public(不能省略), private, protected修饰符

 /**
  * 属性描述.
  *
  * @var string
  */
 private $_privateNameTest = ''; // 类私有成员属性,【个人建议】下划线小写开头驼峰

 /**
  * 构造函数.
  *
  * 构造函数描述
  *
  * @param string $value 形参名称/描述
  */
 public function __construct($value = '')// 成员方法必须添加public(不能省略), private, protected修饰符
 {// {}必须换行

  $this->nameTest = new TestClass();

  // 链式操作
  $this->nameTest->functionOne()
          ->functionTwo()
          ->functionThree();

  // 一段代码逻辑执行完毕 换行
  // code...
 }

 /**
  * 成员方法名称.
  *
  * 成员方法描述
  *
  * @param string $value 形参名称/描述
  *
  * @return 返回值类型    返回值描述
  * 返回值类型:string,array,object,mixed(多种,不确定的),void(无返回值)
  */
 public function testFunction($value = '')// 成员方法必须小写开头驼峰
 {
   // code...
 }

 /**
  * 成员方法名称.
  *
  * 成员方法描述
  *
  * @param string $value 形参名称/描述
  *
  * @return 返回值类型    返回值描述
  */
 private function _privateTestFunction($value = '')// 私有成员方法【个人建议】下划线小写开头驼峰
 {
   // code...
 }

 /**
  * 成员方法名称.
  *
  * 成员方法描述
  *
  * @param string $value 形参名称/描述
  *
  * @return 返回值类型    返回值描述
  */
 public static function staticFunction($value = '')// static位于修饰符之后
 {
  // code...
 }

 /**
  * 成员方法名称.
  *
  * 成员方法描述
  *
  * @param string $value 形参名称/描述
  *
  * @return 返回值类型    返回值描述
  */
 abstract public function abstractFunction($value = ''); // abstract位于修饰符之前

 /**
  * 成员方法名称.
  *
  * 成员方法描述
  *
  * @param string $value 形参名称/描述
  *
  * @return 返回值类型    返回值描述
  */
 final public function finalFunction($value = '')// final位于修饰符之前
 {
  // code...
 }

 /**
  * 成员方法名称.
  *
  * 成员方法描述
  *
  * @param string $valueOne 形参名称/描述
  * @param string $valueTwo 形参名称/描述
  * @param string $valueThree 形参名称/描述
  * @param string $valueFour 形参名称/描述
  * @param string $valueFive 形参名称/描述
  * @param string $valueSix 形参名称/描述
  *
  * @return 返回值类型    返回值描述
  */
 public function tooLangFunction(
  $valueOne  = '', // 变量命名可小写开头驼峰或者下划线命名,个人那习惯,据说下划线可读性好
  $valueTwo  = '',
  $valueThree = '',
  $valueFour = '',
  $valueFive = '',
  $valueSix  = '')// 参数过多换行
 {
  if ($valueOne === $valueTwo) {// 控制结构=>后加空格,同{一行,(右边和)左边不加空格
   // code...
  }

  switch ($valueThree) {
   case 'value':
    // code...
    break;

   default:
    // code...
    break;
  }

  do {
   // code...
  } while ($valueFour <= 10);

  while ($valueFive <= 10) {
   // code...
  }

  for ($i=0; $i < $valueSix; $i++) { 
   // code...
  }
 }
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

PHP 相关文章推荐
基于php权限分配的实现代码
Apr 28 PHP
网页上facebook分享功能具体实现
Jan 26 PHP
php网页标题中文乱码的有效解决方法
Mar 05 PHP
zf框架的校验器InArray使用示例
Mar 13 PHP
php使用codebase生成随机数
Mar 25 PHP
php结合md5实现的加密解密方法
Jan 25 PHP
php如何执行非缓冲查询API
Jul 22 PHP
Yii框架弹出框功能示例
Jan 07 PHP
Yii2下session跨域名共存的解决方案
Feb 04 PHP
PHP 中常量的知识整理
Apr 14 PHP
PHP实现微信提现功能(微信商城)
Nov 21 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
May 14 PHP
利用PHP生成CSV文件简单示例
Dec 21 #PHP
PHP实现支付宝即时到账功能
Dec 21 #PHP
简单实现PHP留言板功能
Dec 21 #PHP
PHP未登录自动跳转到登录页面
Dec 21 #PHP
PHP单例模式详解及实例代码
Dec 21 #PHP
PHP+Mysql无刷新问答评论系统(源码)
Dec 20 #PHP
PHP脚本自动识别验证码查询汽车违章
Dec 20 #PHP
You might like
PHP学习资料汇总与网址
2007/03/16 PHP
Zend Framework校验器Zend_Validate用法详解
2016/12/09 PHP
(仅IE下有效)关于checkbox 三态
2007/05/12 Javascript
HTML node相关的一些资料整理
2010/01/01 Javascript
jQuery的实现原理的模拟代码 -4 重要的扩展函数 extend
2010/08/03 Javascript
不使用XMLHttpRequest实现异步加载 Iframe和script
2012/10/29 Javascript
用javascript删除当前行,添加行(示例代码)
2013/11/25 Javascript
jquery+ajax+C#实现无刷新操作数据库数据的简单实例
2014/02/08 Javascript
jquery获取radio值(单选组radio)
2014/10/16 Javascript
vue-loader教程介绍
2017/06/14 Javascript
create-react-app使用antd按需加载的样式无效问题的解决
2019/02/26 Javascript
javascript实现贪吃蛇游戏(娱乐版)
2020/08/17 Javascript
[05:17]DOTA2睡衣妹卖萌求签名 CJ第二天全明星影像
2013/07/28 DOTA
python网络编程学习笔记(九):数据库客户端 DB-API
2014/06/09 Python
在Django的通用视图中处理Context的方法
2015/07/21 Python
python学生管理系统代码实现
2020/04/05 Python
Python对ElasticSearch获取数据及操作
2019/04/24 Python
ansible动态Inventory主机清单配置遇到的坑
2020/01/19 Python
学习Python列表的基础知识汇总
2020/03/10 Python
Python 获取异常(Exception)信息的几种方法
2020/12/29 Python
HTML 5 input placeholder 属性如何完美兼任ie
2014/05/12 HTML / CSS
HTML5 canvas基本绘图之填充样式实现
2016/06/27 HTML / CSS
英国票务网站:Ticketmaster英国
2018/08/27 全球购物
Pretty Green美国:英式摇滚服饰风格代表品牌之一
2019/01/23 全球购物
广州御银科技股份有限公司试卷(C++)
2016/11/04 面试题
可靠的数据流传输TCP
2016/03/15 面试题
UNIX文件类型
2013/08/29 面试题
公司合作协议范文
2014/10/01 职场文书
学院党委班子四风问题自查报告及整改措施
2014/10/25 职场文书
小学教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
公安机关起诉意见书
2015/05/20 职场文书
《游戏公平》教学反思
2016/02/20 职场文书
经销商会议开幕词
2016/03/04 职场文书
MySQL基础(二)
2021/04/05 MySQL
2021-4-5课程——SQL Server查询【3】
2021/04/05 SQL Server
MySQL 角色(role)功能介绍
2021/04/24 MySQL