この記事では主に 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) 宣言コードには空白が必要です。ブロックの後の行
コードを使用して説明します。
1
2
3
4
5
6
|
namespace LibDatabases; // class My の下にスペースが必要です。 SQL { } |
名前空間の下に空行を残した場合にのみ use を使用でき、再度空行を残した場合に use を使用して、クラスを宣言できます
12 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の書き方23 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)、関数コメント パラメータ名、属性名、ラベルのテキストは上下に揃える必要があります 12; 34567891011121314 1516 | /** * これは、追加の 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 = "文字列") {} | 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; 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 のディレクトリ区切り文字である _ は、完全修飾クラス名では特別な意味を持ちません。 クラスファイル名は.phpで終わる必要があります。 クラス名は、対応するファイル名とまったく同じである必要があり、大文字と小文字もまったく同じである必要があります。
参考:
コーディングスタイルの調査: 左中括弧は改行で囲まれていますか? ? ?
PHPのPSR-[0-4]コード仕様
【補足】配列の記述形式
Key-Valueのペアが1つの場合は1行で記述します:
1 | $where = array ('id' => 789); |
複数 (2 つ以上) のキーと値のペアがある場合は、次の行を折り返します:
以上がPHPコードスタイルのスタイル仕様の共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。 声明:この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。 |
|
|
|
| |