Home  >  Article  >  Backend Development  >  Examples of PHP conforming to PSR programming specifications

Examples of PHP conforming to PSR programming specifications

墨辰丷
墨辰丷Original
2018-05-29 11:16:441400browse

Good code writing habits can make people happy. The following article will share with you PHP example code that complies with PSR programming standards. Friends in need can refer to it. Let’s take a look.

Preface

Regarding development standards, it can be said that the styles have always been very different. Each company has its own way of playing, and the folk are more It's a personal game. At present, several of our more famous domestic frameworks (Yii, Laravel) have already supported Composer and have joined PHP-FIG (php framework program group).

Composer’s automatic loading supports the PSR-0 and PSR-4 specifications specified by PHP-FIG to implement the automatic loading mechanism, and Composer recommends using PSR-4

PHP-FIG

This is a voluntary and informal organization, but judging from the current impact on us, it may have defaulted to one The public trust organization has indeed formulated a lot of very good standards

Currently, judging from the official website, there are some that have been passed by voting (http://www.php-fig.org/psr/) 7 big specifications

  1. PSR-0 automatic loading specification (officially abandoned, mainly because there was no namespace before php5.3)

  2. PSR-1 coding specification

  3. PSR-2 coding style recommendation

  4. PSR-3 log interface

  5. PSR-4 improved automatic loading specification (official recommendation, the specification is more concise and clear)

  6. PSR-6 cache interface

  7. PSR-7 HTTP message interface

Example

<?php
namespace Standard; // 顶部命名空间
// 空一行
use Test\TestClass;//use引入类

/**
 * 类描述
 *
 * 类名必须大写开头驼峰.
 */
abstract class StandardExample // {}必须换行
{
  /**
  * 常量描述.
  *
  * @var string
  */
 const THIS_IS_A_CONST = &#39;&#39;; // 常量全部大写下划线分割

 /**
  * 属性描述.
  *
  * @var string
  */
 public $nameTest = &#39;&#39;; // 属性名称建议开头小写驼峰
            // 成员属性必须添加public(不能省略), private, protected修饰符

 /**
  * 属性描述.
  *
  * @var string
  */
 private $_privateNameTest = &#39;&#39;; // 类私有成员属性,【个人建议】下划线小写开头驼峰

 /**
  * 构造函数.
  *
  * 构造函数描述
  *
  * @param string $value 形参名称/描述
  */
 public function __construct($value = &#39;&#39;)// 成员方法必须添加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 = &#39;&#39;)// 成员方法必须小写开头驼峰
 {
   // code...
 }

 /**
  * 成员方法名称.
  *
  * 成员方法描述
  *
  * @param string $value 形参名称/描述
  *
  * @return 返回值类型    返回值描述
  */
 private function _privateTestFunction($value = &#39;&#39;)// 私有成员方法【个人建议】下划线小写开头驼峰
 {
   // code...
 }

 /**
  * 成员方法名称.
  *
  * 成员方法描述
  *
  * @param string $value 形参名称/描述
  *
  * @return 返回值类型    返回值描述
  */
 public static function staticFunction($value = &#39;&#39;)// static位于修饰符之后
 {
  // code...
 }

 /**
  * 成员方法名称.
  *
  * 成员方法描述
  *
  * @param string $value 形参名称/描述
  *
  * @return 返回值类型    返回值描述
  */
 abstract public function abstractFunction($value = &#39;&#39;); // abstract位于修饰符之前

 /**
  * 成员方法名称.
  *
  * 成员方法描述
  *
  * @param string $value 形参名称/描述
  *
  * @return 返回值类型    返回值描述
  */
 final public function finalFunction($value = &#39;&#39;)// 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  = &#39;&#39;, // 变量命名可小写开头驼峰或者下划线命名,个人那习惯,据说下划线可读性好
  $valueTwo  = &#39;&#39;,
  $valueThree = &#39;&#39;,
  $valueFour = &#39;&#39;,
  $valueFive = &#39;&#39;,
  $valueSix  = &#39;&#39;)// 参数过多换行
 {
  if ($valueOne === $valueTwo) {// 控制结构=>后加空格,同{一行,(右边和)左边不加空格
   // code...
  }

  switch ($valueThree) {
   case &#39;value&#39;:
    // code...
    break;

   default:
    // code...
    break;
  }

  do {
   // code...
  } while ($valueFour <= 10);

  while ($valueFive <= 10) {
   // code...
  }

  for ($i=0; $i < $valueSix; $i++) { 
   // code...
  }
 }
}

The above is the entire content of this article, I hope it will be helpful to everyone's study.


Related recommendations:

php design pattern one namespace, automatic loading class, PSR-0 coding specification

PSR specification of PHP specification

Detailed explanation of PHP object-oriented PSR-0 specification

The above is the detailed content of Examples of PHP conforming to PSR programming specifications. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn