目次
エディタ設定
命名規則
変数の名前付け
定数の名前付け
ループカウンター
関数名
カテゴリ
概要
コードレイアウト
ファイルヘッダー
コメントの書き方
中括弧の位置については多くの議論があります。実際、各ステートメントにはさまざまな理由がありますが、基本的に誰もが同意していることが 1 つあります。それは、
符号前后使用空格
运算符优先级
数据库命名规范
其他规范
if 以及else if的写法
if 语句的简写方式

PHPコーディング標準

Jun 13, 2016 pm 01:10 PM
amp if lt php

PHP コーディング標準

コードをより読みやすく、保守しやすくし、コメントの記述を減らすために、標準化された名前付けとコード記述を通じて「ドキュメントとしてのコード」を実現したいと考えています。 目的。 Yigao 電子商取引システムのすべての PHP ファイルは、ドキュメントで指定されているコーディング規約に従う必要があります。同時に、SVN のサーバー側で仕様チェックを追加しました。提出されたコード内に仕様に準拠していないコードがあった場合、SVN はエラー メッセージを返します。気をつけてください SVN エラー メッセージを読みます。メッセージには、仕様を満たしていない詳細なエラー ファイル、行番号、説明が含まれています。

サードパーティのクラス ライブラリについては、必要に応じてプロジェクト マネージャーに問い合わせてください。

エディタ設定

  1. コードのインデント: すべてのインデントでタブの代わりにスペースが使用され、各インデントには 4 つのスペースが含まれます。
  2. ファイル エンコーディング: すべての PHP ファイルは UTF-8 として保存されます (BOM なし ) 文字エンコーディング、ANSI は使用できません。

命名規則

変数の名前付け

変数名はキャメルケースで名前付けされ、最初の文字は小文字、後続の単語の最初の文字は大文字になります。例:

$currentUser は正しいですが、$currentuser$current_user それは正しくありません。
$requestUrl は正しいですが、$requestURL それは正しくありません。

名前は説明的かつ簡潔である必要があります。もちろん、変数名として長い文を使用することは望ましくありませんが、変数が何に使われるかを考えるよりも、もう少し多くの文字を入力する方が良いでしょう。

定数の名前付け

定数名は、ORDER_TYPE のように、すべて大文字とアンダースコア (_) で構成されます。

ループカウンター

単一文字の変数名が許可される唯一の状況は、ループ カウンタとして使用される場合です。この場合、外側のループのカウンターは常に次のようにする必要があります。 $i。このループ内にループがある場合、そのカウンターは $j になるはずです。 kドルなどループのカウンターが意味のある名前を持つ既存の変数である場合、この仕様は適用されません。

for ($i = 0; $i < $outerSize; $i++) { 
    for ($j = 0; $j < $innerSize; $j++) { 
       foo($i, $j); 
    } 
 }
ログイン後にコピー

関数名

関数にはわかりやすい名前を付ける必要があります。ここでは C でプログラミングしているわけではありませんし、「stristr()」のような関数を書きたくありません。上記と同様に、単語はキャメルケースを使用して区別されます。関数名のどこかに動詞を含めた方がよいでしょう。より適切な関数名は、printLoginStatus()、getUserData() などです。

関数パラメータ

パラメータは変数名と同じ規則に従います。 doStuff($a, $b, $c) のような大量の関数は必要ありません。ほとんどの場合、関数の宣言を見るだけで関数の使用方法がわかります。パラメータの数は 5 つのパラメータ以内で制御する必要があります。配列を使用して 5 つを超えるパラメータを渡すこともできます。

カテゴリ

  • クラスの名前 : まず、意味のある英語の単語またはフレーズである必要があります。クラス名は大文字で始まり、各単語の最初の文字も大文字にする必要があります。
  • クラスのメンバー変数 : メンバー変数の命名は、変数の命名規則と一致している必要があります。
  • クラスのメンバーメソッド 注: メソッドの名前は関数の名前と一致している必要があります。 ご注意ください 注: プライベート メソッドの場合は、メソッド名がアンダースコアで始まる必要があります。

概要

ここでの基本的な哲学は、単に怠惰にするためにコードの明瞭さを犠牲にしないことです。ただし、このバランスをとるには、いくつかの常識を使用する必要があります。 たとえば、printLoginStatusForAGivenUser() は行き過ぎです。この関数の名前は printUserLoginStatus() です。 あるいは、単に printLoginStatus() を使用することもできます。

コードレイアウト

ファイルヘッダー

テンプレート ファイルとサードパーティの PHP プログラムを除き、すべての PHP ファイル ヘッダーには、ファイルの目的やその他の情報を説明する標準ファイル ヘッダーが含まれている必要があります。例:

<?php
/**
 * 这里是该文件的描述,说明这个文件的作用
 *
 * $Id$
 *
 * @copyright Xingchangxinda Inc., all rights reserved.
 * @package Framework
 * @todo system entrance
 * @author Weber Liu
 */
?>?
ログイン後にコピー

著作権およびその他のタグについては、PHP ドキュメントを参照してください。 の説明。

コメントの書き方

一般的なコメントの書き方に従って、コードセグメントのコメントは次の方法で記述する必要があります:

ブロックレベルのコメント:
この種のコメントは、以下の複数行の目的を説明するために使用されます。一般に、空白行は次のように記述されます。

/* 这里是注释的内容 */

/**
 * 如果注释的内容比较多
 * 请用这种方式来写
 */?
ログイン後にコピー

インラインコメント: この種のコメントは、変更されたコードを説明するために使用されます。一般に、コメントとコードは次のように同じ行に置かれます。

中かっこ! ! !
 $userInfo = $user->getInfo(); // 获得用户的详细资料?
ログイン後にコピー

中括弧の位置については多くの議論があります。実際、各ステートメントにはさまざまな理由がありますが、基本的に誰もが同意していることが 1 つあります。それは、

常に中括弧を使用する

です。 、ステートメントがどんなに短くても、必ず中括弧を使用してください。例: ?

中括弧の位置について:
/* 这些是对的 */ 
  if (condition) { 
      doStuff(); 
  } 
  while (condition) { 
      doStuff(); 
  } 
  for ($i = 0; $i < size; $i++) { 
      doStuff(); 
  }
ログイン後にコピー
クラス、関数、および制御ステートメントの中括弧は常に同じ行にあります

。例:

class MyClass {
    public function foo() {
        if (cond) {
            doSomething();
        }
    }
 }?
ログイン後にコピー

符号前后使用空格

这是不用太费事就可以保持代码可读性的另一个简单,容易的步骤。 无论何时你写一个赋值,表达式,等等,始终在符号之间保留一个空格。基本上,把代码当作英语来写。在变量名和运算符之间插入空格。不要在起始括弧后或者终 止括弧前加空格。不要在逗号或者分号之前加空格。一些例子很好地展示了这一点。例如:

  /* 每一对给出了错误方式,紧跟正确方式。 */ 
  $i=0; 
  $i = 0; 
  
  if($i<7) ... 
  if ($i < 7) ... 
  
  if ( ($i < 7)&&($j > 8) ) ... 
  if (($i < 7) && ($j > 8)) ... 
 
 do_stuff( $i, "foo", $b ); 
 do_stuff($i, "foo", $b); 
 
 for($i=0; $i<$size; $i++) ... 
 for($i = 0; $i < $size; $i++) ... 
 
 $i=($j < $size)?0:1; 
 $i = ($j < $size) ? 0 : 1;?
ログイン後にコピー

运算符优先级

你知道 PHP 中所有运算符的详细的优先级吗?我不知道。不要猜。始终用括号强制一个表达式的优先级可以使优先级明显,这样你知道它会做些什么。例如:

 /* 结果是什么?谁知道? */ 
 $bool = ($i < 7 && $j > 8 || $k == 4); 
 
 /* 现在你确定这里我在做什么了。 */ 
 $bool = (($i < 7) && (($j < 8) || ($k == 4)))?
ログイン後にコピー

数据库命名规范

  • 数据库以及数据表的命名与类的命名相同,采用首字母大写的驼峰方式命名。需要注意的是: 所有数据表的名字必须是复数的写法。
  • 所有字段的名称应该是由描述性的单词组成,命名的规则和变量命名规范 保持一致。
  • 为了配合 ORM 模型,我们要求 所有的主键统一命名为 id

其他规范

if 以及else if的写法

当条件语句中的条件存在多个,并且有变量值的判断的时候,需要把变量的判断语句放在其他的条件语句之前。

 /* 正确的写法 */
 if (1 === $val && function_exists(‘ob_gzhandler’)) {
     ... ...
 }
 
 /* 错误的写法 */
 if (function_exists(‘ob_gzhandler’) && 1 === $val) {
 }
ログイン後にコピー
?

虽然在 PHP 中else if 和 elseif 的作用基本上是一样的。但是为了代码的统一性(也有传言 else if 会出现不稳定的情况),我们要求将 elseif 之间不保留空格:

 if (2 == $n) {
    ... ...
} elseif (1 == $n) {
    ... ...
}
ログイン後にコピー

上面的代码中,我用到了 1 === $n 这样的写法,而没有采用常见的 $n === 1 写法的,这么做目的是为了避免我们在写双等号时错误的写成了一个等号,而 PHP 并不会报错,这样会造成在调试过程中浪费更多的时间。

在这里我们不强行要求这种写法,但是还是强烈建议: 在写等于的逻辑判断时将常量放在等号的左侧

if 语句的简写方式

为了使代码看起来简短一点,对于下面的这种简单的if语句允许采用一种简写的方式:

 // 通常的写法
 if ($a == $b) {
     $c = 'foo';
}
 
 // 简写的方式
 $a == $b && $c = 'foo';
ログイン後にコピー
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP データベースの操作 CakePHP データベースの操作 Sep 10, 2024 pm 05:25 PM

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

See all articles