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 危险函数全解析
Sep 09 PHP
PHP判断图片格式的七种方法小结
Jun 03 PHP
php中get_defined_constants函数用法实例分析
May 12 PHP
php图像处理类实例
Jul 28 PHP
PHP操作MySQL的mysql_fetch_* 函数的常见用法教程
Dec 25 PHP
PHP设计模式之简单投诉页面实例
Feb 24 PHP
Zend Framework教程之Autoloading用法详解
Mar 08 PHP
PHP中如何判断exec函数执行成功?
Aug 04 PHP
老生常谈PHP中的数据结构:DS扩展
Jul 17 PHP
Docker搭建自己的PHP开发环境
Feb 24 PHP
php微信扫码支付 php公众号支付
Mar 24 PHP
YII框架常用技巧总结
Apr 27 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
MVC模式的PHP实现
2006/10/09 PHP
PHP采集相关教程之一 CURL函数库
2010/02/15 PHP
MySQL时间字段究竟使用INT还是DateTime的说明
2012/02/27 PHP
一个显示某段时间内每个月的方法 返回由这些月份组成的数组
2012/05/16 PHP
ThinkPHP行为扩展Behavior应用实例详解
2014/07/22 PHP
PHP随手笔记整理之PHP脚本和JAVA连接mysql数据库
2015/11/25 PHP
js下判断 iframe 是否加载完成的完美方法
2010/10/26 Javascript
Angular 根据 service 的状态更新 directive
2016/04/03 Javascript
js 求时间差的实现代码
2016/04/26 Javascript
js 定义对象数组(结合)多维数组方法
2016/07/27 Javascript
Angular实现双向折叠列表组件的示例代码
2017/11/21 Javascript
微信小程序如何获取用户收货地址
2018/11/27 Javascript
深入koa-bodyparser原理解析
2019/01/16 Javascript
vue cli 3.0 搭建项目的图文教程
2019/05/17 Javascript
移动端手指操控左右滑动的菜单
2019/09/08 Javascript
Vant picker 多级联动操作
2020/11/02 Javascript
[40:17]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第一场
2018/04/06 DOTA
使用Django的模版来配合字符串翻译工作
2015/07/27 Python
一个基于flask的web应用诞生 flask和mysql相连(4)
2017/04/11 Python
Python列表和元组的定义与使用操作示例
2017/07/26 Python
TF-IDF算法解析与Python实现方法详解
2017/11/16 Python
Python流行ORM框架sqlalchemy安装与使用教程
2019/06/04 Python
对Python中TKinter模块中的Label组件实例详解
2019/06/14 Python
Python3 JSON编码解码方法详解
2019/09/06 Python
Python3 pandas 操作列表实例详解
2019/09/23 Python
pygame实现五子棋游戏
2019/10/29 Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
2020/09/17 Python
详解如何使用rem或viewport进行移动端适配
2020/08/14 HTML / CSS
德国最大的拼图在线商店:Puzzle.de
2016/12/17 全球购物
轻化专业学生实习自我鉴定
2013/09/20 职场文书
医药专业应届毕业生求职信范文
2014/01/01 职场文书
优秀教师的感人事迹
2014/02/04 职场文书
股东授权委托书范本
2014/09/13 职场文书
2015年元旦文艺晚会总结(学院)
2014/11/28 职场文书
学历证明范文
2015/06/16 职场文书
Java实现扫雷游戏详细代码讲解
2022/05/25 Java/Android