検索
ホームページバックエンド開発PHPチュートリアルPHPコードスタイルのスタイル仕様の共有

この記事では主に 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
}

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

(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

php

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 までご連絡ください。
どのデータをPHPセッションに保存できますか?どのデータをPHPセッションに保存できますか?May 02, 2025 am 12:17 AM

phpssionscanStorestrings、numbers、arrays、andobjects.1.strings:textdatalikeusernames.2.numbers:integersorfloatsforcounters.3.arrays:listslikeshoppingcarts.4.objects:complextructuresthataresialized。

どのようにPHPセッションを開始しますか?どのようにPHPセッションを開始しますか?May 02, 2025 am 12:16 AM

tostartaphpsession、outsession_start()atthescript'sbeginning.1)placeitbe foreanyouttosetthesscookie.2)usesionsionsionsionserdatalikelogintatussorshoppingcarts.3)再生セッションインドストップレベントフィックスアタック

セッションの再生とは何ですか?また、セキュリティをどのように改善しますか?セッションの再生とは何ですか?また、セキュリティをどのように改善しますか?May 02, 2025 am 12:15 AM

セッション再生とは、新しいセッションIDを生成し、セッション固定攻撃の場合にユーザーが機密操作を実行するときに古いIDを無効にすることを指します。実装の手順には次のものが含まれます。1。感度操作を検出、2。新しいセッションIDを生成する、3。古いセッションIDを破壊し、4。ユーザー側のセッション情報を更新します。

PHPセッションを使用する際のパフォーマンスの考慮事項は何ですか?PHPセッションを使用する際のパフォーマンスの考慮事項は何ですか?May 02, 2025 am 12:11 AM

PHPセッションは、アプリケーションのパフォーマンスに大きな影響を与えます。最適化方法には以下が含まれます。1。データベースを使用してセッションデータを保存して応答速度を向上させます。 2。セッションデータの使用を削減し、必要な情報のみを保存します。 3.非ブロッキングセッションプロセッサを使用して、同時実行機能を改善します。 4.セッションの有効期限を調整して、ユーザーエクスペリエンスとサーバーの負担のバランスを取ります。 5.永続的なセッションを使用して、データの読み取り時間と書き込み時間を減らします。

PHPセッションはCookieとどのように異なりますか?PHPセッションはCookieとどのように異なりますか?May 02, 2025 am 12:03 AM

phpsesionsareserver-side、whilecookiesareclient-side.1)Sessionsionsionsoredataontheserver、aremoresecure.2)cookiesstoredataontheclient、cookiestoresecure、andlimitedinsizeisize.sesionsionsionivationivationivationivationivationivationivationivate

PHPはユーザーのセッションをどのように識別しますか?PHPはユーザーのセッションをどのように識別しますか?May 01, 2025 am 12:23 AM

phpidentifiesauser'ssessionsingsinssessionCookiesIds.1)whensession_start()iscalled、phpgeneratesauniquesidstoredsored incoookienadphpsessidontheuser'sbrowser.2)thisidallowsphptortorieSessiondatadata fromthata

PHPセッションを保護するためのベストプラクティスは何ですか?PHPセッションを保護するためのベストプラクティスは何ですか?May 01, 2025 am 12:22 AM

PHPセッションのセキュリティは、次の測定を通じて達成できます。1。session_regenerate_id()を使用して、ユーザーがログインまたは重要な操作である場合にセッションIDを再生します。 2. HTTPSプロトコルを介して送信セッションIDを暗号化します。 3。Session_Save_Path()を使用して、セッションデータを保存し、権限を正しく設定するためのSecure Directoryを指定します。

PHPセッションファイルはデフォルトで保存されていますか?PHPセッションファイルはデフォルトで保存されていますか?May 01, 2025 am 12:15 AM

phpsessionFilesToredInthededirectoryspecifiedBysession.save_path、通常/tmponunix-likesystemsorc:\ windows \ temponwindows.tocustomizethis:1)uesession_save_path()tosetaCustomdirectory、ensuringit'swritadistradistradistradistradistra

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン