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 相关文章推荐
一个用mysql_odbc和php写的serach数据库程序
Oct 09 PHP
php 动态添加记录
Mar 10 PHP
php编写一个简单的路由类
Apr 13 PHP
php学习之运算符相关概念
Jun 09 PHP
利用php+mcDropdown实现文件路径可在下拉框选择
Aug 07 PHP
解析PHP强制转换类型及远程管理插件的安全隐患
Jun 30 PHP
教你在PHPStorm中配置Xdebug
Jul 27 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
Apr 07 PHP
php获取字符串前几位的实例(substr返回字符串的子串用法)
Mar 08 PHP
关于Yii中模型场景的一些简单介绍
Sep 22 PHP
Laravel框架中集成MongoDB和使用详解
Oct 17 PHP
PHP序列化和反序列化深度剖析实例讲解
Dec 29 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使用CURL_MULTI实现多线程采集的例子
2014/07/29 PHP
ThinkPHP模型详解
2015/07/27 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
2017/02/04 PHP
php 如何设置一个严格控制过期时间的session
2017/05/05 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
最简单的jQuery程序 入门者学习
2009/07/09 Javascript
js 获取Listbox选择的值的代码
2010/04/15 Javascript
JQuery的read函数与js的onload不同方式实现
2013/03/18 Javascript
jQuery监控文本框事件并作相应处理的方法
2015/04/16 Javascript
举例讲解JavaScript substring()的使用方法
2015/11/09 Javascript
JavaScript计划任务后台运行的方法
2015/12/18 Javascript
jquery pagination分页插件使用详解(后台struts2)
2017/01/22 Javascript
微信小程序点击控件修改样式实例详解
2017/07/07 Javascript
Angularjs按需查询实例代码
2017/10/30 Javascript
Angular5集成eventbus的示例代码
2018/07/19 Javascript
VUE路由动态加载实例代码讲解
2019/08/26 Javascript
Vue通过Blob对象实现导出Excel功能示例代码
2020/07/31 Javascript
jQuery实现动态加载瀑布流
2020/09/01 jQuery
解决element-ui的下拉框有值却无法选中的情况
2020/11/07 Javascript
python使用calendar输出指定年份全年日历的方法
2015/04/04 Python
python中的字典使用分享
2016/07/31 Python
Python中列表与元组的乘法操作示例
2018/02/10 Python
通过python的matplotlib包将Tensorflow数据进行可视化的方法
2019/01/09 Python
python 通过SSHTunnelForwarder隧道连接redis的方法
2019/02/19 Python
如何使用python3获取当前路径及os.path.dirname的使用
2019/12/13 Python
详解Python3中的 input() 函数
2020/03/18 Python
奥地利顶级内衣丝袜品牌英国站:Wolford英国
2016/08/29 全球购物
介绍一下SQL Server的全文索引
2013/08/15 面试题
进程的查看和调度分别使用什么命令
2015/03/25 面试题
医务人员竞聘职务自我评价分享
2013/11/08 职场文书
应届生自我鉴定
2013/12/11 职场文书
幼儿园教师岗位职责
2014/03/17 职场文书
银行求职信怎么写
2014/05/26 职场文书
小学少先队工作总结2015
2015/05/26 职场文书
教师师德承诺书2016
2016/03/25 职场文书
分享3个非常实用的 Python 模块
2022/03/03 Python