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 飞信好友免费短信API接口开源版
Jul 22 PHP
VB中的RasEnumConnections函数返回632错误解决方法
Jul 29 PHP
php中file_exists函数使用详解
May 08 PHP
使用PHP如何实现高效安全的ftp服务器(二)
Dec 30 PHP
PHP单例模式是什么 php实现单例模式的方法
May 14 PHP
PHP数组实例详解
Jun 26 PHP
PHP文件操作实例总结
Sep 27 PHP
ThinkPHP使用getlist方法实现数据搜索功能示例
May 08 PHP
php7 安装yar 生成docker镜像
May 09 PHP
thinkphp 中的volist标签在ajax操作中的特殊性(推荐)
Jan 15 PHP
PHP调用其他文件中的类
Apr 02 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
Jun 13 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中的日期时间处理利器实例(Carbon)
2017/06/09 PHP
Gambit vs CL BO3 第三场 2.13
2021/03/10 DOTA
JavaScript 变量基础知识
2009/11/07 Javascript
js中onload与onunload的使用示例
2013/08/25 Javascript
javascript在网页中实现读取剪贴板粘贴截图功能
2014/06/07 Javascript
NodeJS使用jQuery选择器操作DOM
2015/02/13 NodeJs
简介AngularJS中$http服务的用法
2016/02/06 Javascript
Vue.js动态添加、删除选题的实例代码
2016/09/30 Javascript
jQuery select自动选中功能实现方法分析
2016/11/28 Javascript
AngularJS通过ng-route实现基本的路由功能实例详解
2016/12/13 Javascript
nodejs搭建本地http服务器教程
2017/03/13 NodeJs
jQuery、layer实现弹出层的打开、关闭功能
2017/06/28 jQuery
Angular中ng-repeat与ul li的多层嵌套重复问题
2017/07/24 Javascript
AngularJS service之select下拉菜单效果
2017/07/28 Javascript
微信JS-SDK实现微信会员卡功能(给用户微信卡包里发送会员卡)
2019/07/25 Javascript
vue Treeselect下拉树只能选择第N级元素实现代码
2020/08/31 Javascript
wxPython中文教程入门实例
2014/06/09 Python
python模块之StringIO使用示例
2015/04/08 Python
详细讲解用Python发送SMTP邮件的教程
2015/04/29 Python
简单介绍Python中用于求最小值的min()方法
2015/05/15 Python
Python中操作文件之write()方法的使用教程
2015/05/25 Python
python写程序统计词频的方法
2019/07/29 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
将tensorflow.Variable中的某些元素取出组成一个新的矩阵示例
2020/01/04 Python
TensorFlow学习之分布式的TensorFlow运行环境
2020/02/05 Python
配置H5的滚动条样式的示例代码
2018/03/09 HTML / CSS
HTML5在微信内置浏览器下右上角菜单的调整字体导致页面显示错乱的问题
2021/01/19 HTML / CSS
C#实现启动一个进程
2016/10/01 面试题
羽毛球社团活动总结
2014/06/27 职场文书
博士生导师推荐信
2014/07/08 职场文书
乡镇组织委员个人整改措施
2014/09/16 职场文书
2014年移动公司工作总结
2014/12/08 职场文书
2014年青年志愿者工作总结
2014/12/09 职场文书
2015年小学生自我评价范文
2015/03/03 职场文书
python操作xlsx格式文件并读取
2021/06/02 Python
手残删除python之后的补救方法
2021/06/26 Python