ホームページ > バックエンド開発 > PHPチュートリアル > PHP コーディング標準と初心者向けの提案

PHP コーディング標準と初心者向けの提案

小云云
リリース: 2023-03-17 19:08:01
オリジナル
1262 人が閲覧しました

優れたプログラマーになりたいのであれば、優れたコーディング標準は非常に重要です。どうすれば優れたコードを書くことができるでしょうか?この記事では、PHP コーディング標準と推奨事項をいくつか紹介します。

コーディング仕様

  • PHP コード ファイルは

<?php //开头

// 不结尾
ログイン後にコピー

  • PHP コード ファイルは、BOM なしで UTF-8 でエンコードする必要があります。

例sublime, setting增加,"show_encoding" : true
ログイン後にコピー

  • 1行の文字数は80文字を超えてはなりません

例,sublime
"word_wrap": "true",
"wrap_width": 80,
ログイン後にコピー

  • スペースを4つ押してください

例,sublime
"tab_size": 4,
ログイン後にコピー

  • PHP コードではクラスのみを定義する必要があります( trait)/function/constant/副作用を引き起こすその他の操作 (ファイル出力の生成や .ini 構成ファイルの変更など) のうち、1 つだけ選択できます。

例,
a.php
class A
{

}

b.php
function demo()
{

}

c.php
define(&#39;A&#39;, value);

d.php
ini_set(&#39;some_vars&#39;, value);
ログイン後にコピー

  • クラス/特性/インターフェースの命名は、大文字で始まる StudlyCaps のキャメルケース命名規則に従う必要があります。

class StudlyCaps
{

}

trait StudlyCaps
{

}

Interface StudlyCaps
{

}
ログイン後にコピー

  • クラス内の定数は大文字にする必要があり、単語はアンダースコアで区切る必要があります。

define(&#39;FOO_BAR&#39;, &#39;something more&#39;);

const FOO_BAR = value;
ログイン後にコピー

  • メソッドの名前 (クラス/トレイト内) は、小文字で始まるキャメルケース スタイルのキャメルケース命名規則に準拠する必要があります。

class StudlyCaps
{
    public function studlyCaps()
    {
        // coding...
    }
}
ログイン後にコピー

  • 関数名は、snake_case スタイルの下線の命名規則に準拠する必要があります。

function snake_case()
{
    // coding...
}
ログイン後にコピー

  • プライベート (プライベート) メソッド (クラス/特性内) 名は、アンダースコアが先行し、小文字でキャメルケースで始まるという _camelCase スタイルの命名規則に準拠する必要があります。

class StudlyCaps
{
    private function _studlyCaps()
    {
        // coding...
    }
}
ログイン後にコピー

  • メソッド名の最初の単語は動詞です。

class StudlyCaps
{
    public function doSomething()
    {
        // coding...
    }
}
ログイン後にコピー

  • 変数は、小文字のキャメルケースで始まるキャメルケースの命名規則に準拠する必要があります。

class StudlyCaps
{
    public function doSomething()
    {
        $someVariable = &#39;demo&#39;;
        // coding...
    }
}
ログイン後にコピー

  • メソッド/関数に複数のパラメーターがある場合、それらの間にスペースが必要です

class StudlyCaps
{
    public function doSomething($variableOne, $variableTwo)
    {
        // coding...
    }
}
ログイン後にコピー

  • 演算子/式にはスペースが必要です

$a = $b + $c;
$a = $b . $c;
ログイン後にコピー

  • 各名前空間宣言ブロックと使用宣言ブロックの後に空行を挿入する必要があります。

namespace Standard;
// 空一行
use Test\TestClass;//use引入类
// 空一行
ログイン後にコピー

  • 左中括弧「{」は関数宣言の後の独自の行に記述する必要があり、右中括弧「}」も関数本体の後の独自の行に記述する必要があります。

class StudlyCaps
{

}
ログイン後にコピー

  • メソッド/関数の左中括弧 { は関数宣言の後の独自の行に記述する必要があり、右中括弧 } も関数本体の後の独自の行に記述する必要があります。

class StudlyCaps
{
    public function studlyCaps()
    {
        // coding...
    }
}

function snake_case()
{
    // coding...
}
ログイン後にコピー

  • クラスのプロパティとメソッドにはアクセス修飾子 (private、protected、public) を追加する必要があり、abstract と Final はアクセス修飾子の前に宣言する必要があり、static はアクセス修飾子の後に宣言する必要があります。

abstract class StudlyCaps
{
	abstract public function studlyCaps();

	final public static function studlyCapsOne()
	{

	}
}
ログイン後にコピー

  • 制御構造体のキーワードの後に​​はスペースが必要ですが、メソッドや関数を呼び出すときはスペースを入れてはいけません。

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...
}

$demo = new Demo()
$demo->doSomething();

do_something();</p>
<p> </p>
<ul class=" list-paddingleft-2"><li><p> 制御構造体の左中括弧 { は宣言と同じ行に記述し、右中括弧 } は本文の後の独自の行に記述する必要があります。 </p></li></ul>
<pre class="brush:php;toolbar:false">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...
}
ログイン後にコピー

  • 制御構造の左括弧の開始と右括弧の前にスペースがあってはなりません。

if ($valueOne === $valueTwo) {// 控制结构(右边和)左边不加空格
  // code...
}
ログイン後にコピー

コーディングの提案

  • SQLが長すぎます

// heredoc语法
$sql = <<<SQL
SELECT delivery_id
FROM d_test
WHERE delivery_id
IN (123,234)
GROUP BY delivery_id
HAVING SUM(send_number) <= 0;
SQL;
ログイン後にコピー

  • ifおよびその他の制御構造の条件が長すぎます

if ($a > 0
    && $b > 0
    && $c > 0
    && $d > 0
    && $e > 0) {

}
ログイン後にコピー

  • メソッドまたは関数のパラメータが大きい3 つ以上の改行

public function tooLangFunction(
      $valueOne   = '',
      $valueTwo   = '',
      $valueThree = '',
      $valueFour  = '',
      $valueFive  = '',
      $valueSix   = '')
{
    //coding...
}
ログイン後にコピー

  • 2 つ以上の

$this->nameTest->functionOne()
               ->functionTwo()
               ->functionThree();
ログイン後にコピー

  • 配列 php5.4 以降は、[]

$a = [
    'aaa' => 'aaa',
    'bbb' => 'bbb'
];
ログイン後にコピー

    を使用してください
  • 複数の引用符を引用します

    • 文字列に変数はありません、一重引用符で囲みます

    • 文字列に変数はあります、二重引用符で囲みます

$str = 'str';
$arg = "$str";
ログイン後にコピー

  • クラス、メソッド、または関数を宣言します 説明と属性の説明と作成者を追加します

/**
 * 类描述
 *
 * desc
 */
class StandardExample
{
  /**
   *  常量描述.
   *
   * @var string
   */
  const THIS_IS_A_CONST = '';

  /**
   * 属性描述.
   *
   * @var string
   */
  public $nameTest = '';

  /**
   * 构造函数.
   *
   * 构造函数描述
   * @author name <email>
   * @param  string $value 形参名称/描述
   * @return 返回值类型        返回值描述
   * 返回值类型:string,array,object,mixed(多种,不确定的),void(无返回值)
   */
  public function __construct($value = '')
  {
    // coding...
  }
ログイン後にコピー

  • apiメソッドはテストサンプル例を提供します

/**
 * 成员方法名称.
 *
 * 成员方法描述
 *
 * @param  string $value 形参名称/描述
 *
 * @example domain/api/controller/action?argu1=111&argu2=222
 */
public function testFunction($value = '')
{
    // code...
}
ログイン後にコピー

  • try...catch...を使用してください

try {

    // coding...

} catch (\Exception $e) {
  // coding...
}
ログイン後にコピー

  • 複数の方法 (3 つ以上) ) foreach を使用します

// 改写doSome为doSomething
class StandardExample
{
  /**
   * 方法列表
   *
   * @var array
   */
  private $_functionList = [];

  public function __construct($functionList = array())
  {
    $this->_functionList = $value;
  }

  public function doSome()
  {
    $this->functionOne();
    $this->functionTwo();
    $this->functionThree();
    $this->functionFour();
  }

  public function doSomething()
  {
      foreach($this->_functionList as $function) {
          $this->$function();
      }
  }

  ...
}
ログイン後にコピー

  • ファイルの先頭にある著作権ステートメント

// +----------------------------------------------------------------------
// | Company Name  xx服务
// +----------------------------------------------------------------------
// | Copyright (c) 2017 http://domain All rights reserved.
// +----------------------------------------------------------------------
// | Author: name <email>
// +----------------------------------------------------------------------
ログイン後にコピー

以上内容就给新手程序员的一些编写代码的规范及建议,希望能帮助到大家。

相关推荐:

怎样优化自己的JavaScript代码

PHP 代码的复用简单教程

PHP 代码规范

以上がPHP コーディング標準と初心者向けの提案の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート