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 相关文章推荐
模仿OSO的论坛(五)
Oct 09 PHP
linux下删除7天前日志的代码(php+shell)
Jan 02 PHP
php加密解密实用类分享
Jan 07 PHP
php和editplus正则表达式去除空白行
Apr 17 PHP
PHP读取汉字的点阵数据
Jun 22 PHP
PHP+JS实现大规模数据提交的方法
Jul 02 PHP
整理php防注入和XSS攻击通用过滤
Sep 13 PHP
PHP中PDO连接数据库中各种DNS设置方法小结
May 13 PHP
图文详解phpstorm配置Xdebug进行调试PHP教程
Jun 13 PHP
php利用fsockopen GET/POST提交表单及上传文件
May 22 PHP
Laravel 5.5 异常处理 &amp; 错误日志的解决
Oct 17 PHP
php实现JWT(json web token)鉴权实例详解
Nov 05 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
不用数据库的多用户文件自由上传投票系统(2)
2006/10/09 PHP
PHP 源代码压缩小工具
2009/12/22 PHP
Codeigniter实现多文件上传并创建多个缩略图
2014/06/12 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解
2013/11/07 Javascript
nodejs npm包管理的配置方法及常用命令介绍
2014/06/05 NodeJs
页面刷新时记住滚动条的位置jquery代码
2014/06/17 Javascript
JavaScript数据类型之基本类型和引用类型的值
2015/04/01 Javascript
jQuery插件fullPage.js实现全屏滚动效果
2016/12/02 Javascript
JS监控关闭浏览器操作的实例详解
2017/09/12 Javascript
微信小程序实现图片压缩
2019/12/03 Javascript
js实现鼠标点击页面弹出自定义文字效果
2019/12/24 Javascript
Vue父组件向子组件传值以及data和props的区别详解
2020/03/02 Javascript
Vue实现简单购物车功能
2020/12/13 Vue.js
微信小程序实现下拉加载更多商品
2020/12/29 Javascript
[03:53]2016国际邀请赛中国区预选赛第三日TOP10精彩集锦
2016/06/29 DOTA
Python中请使用isinstance()判断变量类型
2014/08/25 Python
跟老齐学Python之画圈还不简单吗?
2014/09/20 Python
Python 基础知识之字符串处理
2017/01/06 Python
Python求均值,方差,标准差的实例
2019/06/29 Python
Django 拼接两个queryset 或是两个不可以相加的对象实例
2020/03/28 Python
CSS3 简单又实用的5个属性
2010/03/04 HTML / CSS
CSS3 真的会替代 SCSS 吗
2021/03/09 HTML / CSS
德国汽车零件和汽车配件网上商店:kfzteile24
2018/11/14 全球购物
大二自我鉴定范文
2013/10/05 职场文书
毕业生求职简历的自我评价
2013/10/23 职场文书
文案策划求职信
2014/03/18 职场文书
《桥》教学反思
2014/04/09 职场文书
自查自纠工作情况报告
2014/10/29 职场文书
教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
2015年财政局工作总结
2015/05/21 职场文书
2016年国庆节67周年活动总结
2016/04/01 职场文书
学习心得体会
2019/06/20 职场文书
穷人该怎么创业?谨记以下几点
2019/07/11 职场文书
创业计划书之餐饮馄饨店
2019/07/18 职场文书
Golang 并发下的问题定位及解决方案
2022/03/16 Golang