ホームページ  >  記事  >  バックエンド開発  >  PHPコードスタイルのスタイル仕様の共有

PHPコードスタイルのスタイル仕様の共有

小云云
小云云オリジナル
2018-03-05 10:30:424265ブラウズ

この記事では主に PHP コード スタイルの仕様について説明します。お役に立てれば幸いです。

1. 基本規約

1. ソース ファイル

(1)、純粋な PHP コード ソース ファイルは ;ソース ファイルのエンコード形式は BOM フリーの UTF-8 形式である必要があります。

(3)、行末記号として Unix LF (改行) を使用します。

(4)、ソース ファイルは 1 種類の宣言のみを作成します。つまり、このファイルはクラスの宣言に特に使用され、そのファイルは構成情報の設定に特に使用されます。

2. インデントには Tab キーを使用し、それぞれの長さを指定します。 Tab キーは 4 つのスペースに設定されます

3 、行

これを超える場合は、一般的なエディターで折り返すことができます。

//wo

水平スクロールと垂直スクロールを防ぐための記事を追加します。

4. キーワードと True/False/Null

PHP キーワードは小文字である必要があります。ブール値: true、false、null も小文字である必要があります。

以下は PHP の「キーワード」であり、小文字にする必要があります:

'__halt_compiler'、'abstract'、'and'、'array'、'as'、'break'、'callable'、'case '、' catch'、'class'、'clone'、'const'、'Continue'、'declare'、'default'、'die'、'do'、'echo'、'else'、'elseif'、 'empty' 、 'enddeclare'、 'endfor'、 'endforeach'、 'endif'、 'endswitch'、 'endwhile'、 'eval'、 'exit'、 'extends'、 'final'、 'for'、 'foreach ', ' function'、'global'、'goto'、'if'、'implements'、'include'、'include_once'、'instanceof'、'insteadof'、'interface'、'isset'、'list'、 'namespace' 、 'new'、 'or'、 'print'、 'private'、 'protected'、 'public'、 'require'、 'require_once'、 'return'、 'static'、 'switch'、 'throw '、' trait'、'try'、'unset'、'use'、'var'、'while'、'xor'

5. 命名

(1)、クラス名には StudlyCaps を使用します;

( 2)、(クラス)メソッド名はcomeCaseで記述します

(3)、関数名は関数http_send_post()のように小文字+下線で記述します

(4)、変数名は小文字で記述します$userName などのケースの記述

関数コメント、変数コメントなど。一般的なタグには、@author、@todo、@throws などがあります。

必須 phpDocument タグのルールを遵守し、新しいタグを作成しないでください。その他のタグについては、phpDocument 公式 Web サイトを確認してください

7. ビジネス モジュール

(1) 複数のデータ テーブルの更新/追加操作を伴う場合、最外層はトランザクションを使用します。

(2)、モデル層は単純なデータ テーブル クエリのみを実行します。

(4)、コントローラー。 URL ルーティングのみを実行します。ビジネス メソッドとして呼び出すことはできません

(5)。where()、order()、および ThinkPHP フレームワークの他のモデル メソッドなどの SQL 操作ステートメントは、コントローラー層には使用できません。つまり、次のような SQL ステートメントはコントローラーには表示されません。 D('XXX')->where()->order()->limit()->find(); )、order()、limit() など。SQL メソッドはモデル層とビジネス層でのみ使用できます。

2. コードスタイル

1. 名前空間 (Namespace) と import (Use) 宣言

名前空間宣言の後には空白行が必要です。 (use) 宣言は名前空間 (namespace) 宣言の下に配置する必要があります。

ステートメントには import (use) キーワードが 1 つだけ存在する必要があります。

import (use) 宣言コードには空白が必要です。ブロックの後の行

コードを使用して説明します。

名前空間の下に空行を残した場合にのみ use を使用でき、再度空行を残した場合に use を使用して、クラスを宣言できます

1

2

3

4

5

6

namespace LibDatabases; //

class My の下にスペースが必要です。 SQL {

}

1;

2

3

4

5

6

7

less Bar;

use OtherVendorOtherPackageBazClass //

class Mysql {

}

2. クラス、プロパティ、メソッド

(1)、継承(extends)と実装(implement)はクラス名と同じ行に記述する必要があります。

1

2

3

4

5

6

namespace LibDatabaes;

class Mysql extends ParentClass 実装 PDO、DB { //

}

(2) プロパティは、public、protected、または private のいずれであっても、その可視性を宣言する必要があります。省略することはできず、var は古いものでは使用できません。 PHPのバージョンなどを公開する方法など。

1

2

3

4

5

6

7

8

namespace Lデータベース;

クラス Mysql は ParentClass を拡張します実装 PDO, DB { // 行を書きます

public $foo = null;

private $name = 'yangyi';

protected $age = '17';

}

(3)、メソッドはパブリック、プロテクト、プライベートのいずれであっても、その可視性を宣言する必要があり、省略することはできません。複数のパラメータがある場合は、最初のパラメータの後に「,」を付けてスペースを追加します: function_name ($par, $par2, $pa3) パラメータにデフォルト値がある場合は、「」の左右にスペースを入れてください。 =。

1

2

3

4

5

6

7

8

namespace Lデータベース;

クラス Mysql は ParentClass を拡張しますimplements PDO, DB { // 行を書きます

Public getInfo($name, $age, $gender = 1) { // パラメータの間にはスペースがあります。デフォルトパラメータの「=」の前後にスペース、)と{

}

}

(4)の間にスペースが入る(4)abstractとfinalを使用する場合クラス作成時宣言の場合は、可視性宣言 (public、protected、または private) の前に配置する必要があります。クラス宣言に static を使用する場合は、可視性宣言の後に配置する必要があります。

コードに直接移動します:

11

< ;? php

namespace VendorPackage;

abstract class ClassName {

protected static $foo; // static は後ろに配置されます

abstract protected function zim() // abstract は前に配置されます

Final public static function bar( ) { // Final を先頭に置き、static を最後に置きます。

3. 制御構造

if else while switch などの制御インターフェース。この種の記述標準は問題が発生しやすいため、標準化する必要があります。

(1)、if、elseif、else の書き方は、標準コードに進むだけです:

1

2

3

4

5

6

7

8

if ($expr1) { // ifと(、の間にスペースあり)と{

} elseif ($expr2) { // elesifが書かれています連続して、(,)との間にスペースあり {

の間にスペースあり } else { // else 左右にスペースあり

}

(2) 、スイッチ、ケース スペースと改行に注意するか、標準コードに直接移動します:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

switch ) { // スイッチの間にスペースがありますand (, の間にはスペースがあります) と {

case 0:

echo '最初のケース、ブレーク付き'; // 位置合わせ

ブレーク // ブレークも新しい行に書き込みます。

case 1:

echo '2 番目のケース、失敗します';

// ブレークなし case 2:

case 3:

case 4:

echo '3 番目のケース、ブレークの代わりにリターン' ;

戻る;

(3)、while、do while は同様に記述され、上記のコードは次のようになります。

< ;?phpwhile ($expr) { // while と (、 ) と {

}

do の間にはスペースがあります { // do との間にはスペースがあります{ Space

} while ($expr) // while

(4)の左右にスペースがあります、

1

の書き方2

3

4

for ($i = 0; $i <10; $i++) { // for と ( の間にスペースがあり、二項演算子で囲まれています " ="、"<" それぞれにスペースがあり、) と {
}

の間にはスペースがあります

(5)、foreachの書き方

1

2

3

4

foreach ($iterable as $key => $value) { / / foreachと(の間にスペースあり、「=>」の左右にスペースあり、)と{

}の間にスペースあり

(6)、どうやって書くには try catch

1

2

3

4

5

6

7

8

try { // 試してみてください右側にスペース

} catch (FirstExceptionType $e) { // catch と (,) の間にスペースがあり、{

の間にスペースがあります} catch (OtherExceptionType $e) { // catch と (,) の間にはスペースがあり、{ {

}の間にはスペースがあります

4. コメント

(1)、行コメント

// の後にはスペースが必要です

// の前に空でない文字がある場合は、// の前にスペースが必要です;

(2)、関数コメント

パラメータ名、属性名、ラベルのテキストは上下に揃える必要があります

1

5. スペース

(1)、代入演算子 (=、+= など)、論理演算子 (&&、||)、等号演算子 (==、!=)、関係演算子 (<、>) 、<=、>=)、ビット演算子 (&、|、^)、左右にスペースを含むコネクタ (.)

(2)、if、else、elseif、while、do、there; switch、for、foreach、try、catch、finally などとすぐ左の括弧 "(";

(3)、関数とメソッドのパラメーターの間、カンマ (",") の後のスペースです。はスペースです。

6、空行

(1)、すべての左中括弧 { は改行しないでください。また、そのすぐ下に空行があってはなりません

(2)、同じレベルのコード (インデントされている必要があります)同じ

(3) のコメント (行コメント/ブロック コメント) の前に空行があり、各メソッド/関数の間には空行があります

(4)、名前空間ステートメント、use ステートメント、 clase ステートメントの間に空行があります;

(5), return ステートメント

return ステートメントの前に PHP コードが 1 行しかない場合、return ステートメントの前に空行は必要ありません。 return ステートメントの前に少なくとも 2 行の PHP コードがある場合、return ステートメントの前に空行を追加する必要はありません

(5)、if、while、switch、for、foreach、try など。コードブロック間、および他のコードブロック間

6

7


8

namespace LibDatabaes;
2;

3

4

5

6

7

8

9

10

11

12

13

14

15

16

/**

* これは、追加の PHP

* フォーマッタ オプションを説明するためのサンプル関数です。

*

* @param $one 最初のパラメータ

* @param int $two 2 番目のパラメータ

* @param string $three 3 番目のパラメータは、ラッピングを説明するための長い

* ラッピングを説明するためのコメントです。

* @return void

* @author phpgo.cnblogs.com

* @license GPL

 */

function foo($one, $two = 0, $three = "文字列") {

}

class Mysql extends ParentClassimplements PDO, DB { // 一行書く

public getInfo($name, $age, $gender = 1 ) { // パラメータの間にスペースがあります。デフォルトパラメータの「=」の左右にスペースがあります。 ,) と {

}

}

参考2:

1

2

3

4

5

6

7

8

9

10

11

namespace VendorPackage;

abstract class ClassName {

protected static $foo; // static は後ろに置かれます

abstract protected function zim() // abstract は前に置かれます

final public static function bar() { // Final を先頭に、static を最後に置きます。

参考3:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

4 3

44

45

namespace libraryModel;

use libraryHelperImageHelper;

use libraryLogicUserMainLogic;

/**

* ユーザーテーブルデータモデル

*

* @package libraryModel

*/

class UserMainModel extends BasicModel {

/**

*/

公開function getUserCard($userId) {

$userId = intval($userId);

return UserMainLogic::instance()->getUserCard($userId);

}

/*** IDに基づいてユーザー情報を取得します* /

public function getByUserId($userId = 0, $field = '*') {

if (empty($userId)) {

return array();

}

$where = array( 'id' =>> $userId);

$info = $this->field($field)->where($where)->find();

if (isset($info) ['image']) && isset($info['sex'])) {

$info['image'] = ImageHelper::GetImageUrl($info['image'], $info['sex']) ;

}

$info;

}

}

参考4:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

$serv = 新規swoole_server("127.0.0.1", 9502);

// サーバー構成を設定します。タスクワーカーのサポートを有効にするために、task_worker_num config を 0 より大きく設定します

$serv->set(array('task_worker_num' => 4));

// 上で説明した受信イベントのハンドラーをアタッチします。

$serv->on('receive', function($serv, $fd, $from_id, $data) {

// $serv

の task() メソッドを呼び出すことで、タスク ワーカーにタスクをディスパスします

// このメソッドは、タスクの ID としてタスク ID を返します

$task_id = $serv->task($data );

echo "Dispath AsyncTask: id=$task_idn";

});

// タスク イベントのハンドラーをアタッチします。ハンドラーはタスク ワーカーで実行されます。

$serv->on( 'task', function ($serv, $task_id, $from_id, $data) {

// タスクを処理し、$data で必要なことを実行します

echo "New AsyncTask[id=$task_id]".PHP_EOL;

// タスク task が処理された後、呼び出し元の worker に結果を返します。

$serv->finish("$data -> OK");

});

// 終了イベントのハンドラーをアタッチします。ハンドラーはサーバーワーカーで実行され、同じワーカーが以前にこのタスクをディスパッチしました。

$serv->on('finish' , function ($serv, $task_id, $data) {

echo "AsyncTask[$task_id] Finish: $data".PHP_EOL;

});

$serv->start();
🎜

概要: すべての左中括弧 { は改行しないでください。また、{ のすぐ下は空行であってはなりません。

上記のコードスタイル仕様は、Java、JavaScript、Objective-C、Goなどの開発言語の仕様を参照しています。

Java 言語は中国人プログラマーに大きな影響を与えており、ほとんどの人は今でも改行を入れずに左中括弧 { を残すことに慣れています。

記述原則: 小さなモジュール性を失わずにコードをコンパクトにします。

PSR-4 仕様

PSR-4 仕様は、自動ローディング (autoload) も指定した新しい仕様です。簡単に言うと、要点は次のとおりです:

    PSR-0 のディレクトリ区切り文字である _ は、完全修飾クラス名では特別な意味を持ちません。
  1. クラスファイル名は.phpで終わる必要があります。
  2. クラス名は、対応するファイル名とまったく同じである必要があり、大文字と小文字もまったく同じである必要があります。

参考:

コーディングスタイルの調査: 左中括弧は改行で囲まれていますか? ? ?

PHPのPSR-[0-4]コード仕様

【補足】配列の記述形式

Key-Valueのペアが1つの場合は1行で記述します:

1 $where = array ('id' => 789); 複数 (2 つ以上) のキーと値のペアがある場合は、次の行を折り返します:

1$where = array(

関連する推奨事項:

ThinkPHP 3.2.3 ページネーション コード スタイルの共有

PHP コード スタイル

コーディング標準に関する php ドキュメント (コレクション)

2

3

4

'id' => 789,

'user_name' => 'phpgo'

);

以上がPHPコードスタイルのスタイル仕様の共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。