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的substr_replace将指定两位置之间的字符替换为*号
May 04 PHP
php的大小写敏感问题整理
Dec 29 PHP
php使用function_exists判断函数可用的方法
Nov 19 PHP
php实现json编码的方法
Jul 30 PHP
php抓取并保存网站图片的实现代码
Oct 28 PHP
WordPress中查询文章的循环Loop结构及用法分析
Dec 17 PHP
php封装好的人民币数值转中文大写类
Dec 20 PHP
Yii的Srbac插件用法详解
Jul 14 PHP
PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图
May 15 PHP
PHP用户注册邮件激活账户的实现代码
May 31 PHP
PHP APP微信提现接口代码
Sep 30 PHP
PHP获取数据库表中的数据插入新的表再原删除数据方法
Oct 12 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实现mysql封装类示例
2014/05/07 PHP
php设计模式之简单工厂模式详解
2014/09/04 PHP
自己写的兼容低于PHP 5.5版本的array_column()函数
2014/10/24 PHP
Linux系统下PHP-FPM的安装和配置教程
2015/08/17 PHP
详解PHP中array_rand函数的使用方法
2016/09/11 PHP
php mysql_list_dbs()函数用法示例
2017/03/29 PHP
PHP学习记录之数组函数
2018/06/01 PHP
PHP后台备份MySQL数据库的源码实例
2019/03/18 PHP
php7连接MySQL实现简易查询程序的方法
2020/10/13 PHP
Javascript面象对象成员、共享成员变量实验
2010/11/19 Javascript
JQUERY设置IFRAME的SRC值的代码
2010/11/30 Javascript
使用jQuery不判断浏览器高度解决iframe自适应高度问题
2014/12/16 Javascript
浅谈setTimeout 与 setInterval
2015/06/23 Javascript
AngularJS 实现按需异步加载实例代码
2015/10/18 Javascript
js初始化验证实例详解
2016/11/26 Javascript
axios基本入门用法教程
2017/03/25 Javascript
angularjs实现上拉加载和下拉刷新数据功能
2017/06/12 Javascript
r.js来合并压缩css文件的示例
2018/04/26 Javascript
Webpack的dll功能使用
2018/06/28 Javascript
Vue项目部署在Spring Boot出现页面空白问题的解决方案
2018/11/26 Javascript
微信小程序webview组件交互,内联h5页面并网页实现微信支付实现解析
2019/08/16 Javascript
JS实现盒子拖拽效果
2020/02/06 Javascript
Python实现的HMacMD5加密算法示例
2018/04/03 Python
Python实现读取机器硬件信息的方法示例
2018/06/09 Python
Python3中urlencode和urldecode的用法详解
2019/07/23 Python
Python实现Singleton模式的方式详解
2019/08/08 Python
浅析Python 简单工厂模式和工厂方法模式的优缺点
2020/07/13 Python
韩国邮政旗下生鲜食品网上超市:epost
2016/08/27 全球购物
性能服装:HYLETE
2018/08/14 全球购物
美国排名第一的泳池用品直接来源:In The Swim
2019/09/23 全球购物
大学生入党思想汇报
2014/01/01 职场文书
《童趣》教学反思
2014/02/19 职场文书
入股协议书
2014/04/14 职场文书
民政局办理协议离婚(范本)
2014/10/25 职场文书
动画电影《擅长捉弄人的高木同学》6月10日上映!
2022/03/20 日漫
python中urllib包的网络请求教程
2022/04/19 Python