PHP コーディング標準
コードをより読みやすく、保守しやすくし、コメントの記述を減らすために、標準化された名前付けとコード記述を通じて「ドキュメントとしてのコード」を実現したいと考えています。 目的。 Yigao 電子商取引システムのすべての PHP ファイルは、ドキュメントで指定されているコーディング規約に従う必要があります。同時に、SVN のサーバー側で仕様チェックを追加しました。提出されたコード内に仕様に準拠していないコードがあった場合、SVN はエラー メッセージを返します。気をつけてください SVN エラー メッセージを読みます。メッセージには、仕様を満たしていない詳細なエラー ファイル、行番号、説明が含まれています。
サードパーティのクラス ライブラリについては、必要に応じてプロジェクト マネージャーに問い合わせてください。
エディタ設定
- コードのインデント: すべてのインデントでタブの代わりにスペースが使用され、各インデントには 4 つのスペースが含まれます。
- ファイル エンコーディング: すべての PHP ファイルは UTF-8 として保存されます (BOM なし ) 文字エンコーディング、ANSI は使用できません。
命名規則
変数の名前付け
変数名はキャメルケースで名前付けされ、最初の文字は小文字、後続の単語の最初の文字は大文字になります。例:
$currentUser は正しいですが、$currentuser
と $current_user
それは正しくありません。
$requestUrl は正しいですが、$requestURL
それは正しくありません。
名前は説明的かつ簡潔である必要があります。もちろん、変数名として長い文を使用することは望ましくありませんが、変数が何に使われるかを考えるよりも、もう少し多くの文字を入力する方が良いでしょう。
定数の名前付け
定数名は、ORDER_TYPE のように、すべて大文字とアンダースコア (_) で構成されます。
ループカウンター
単一文字の変数名が許可される唯一の状況は、ループ カウンタとして使用される場合です。この場合、外側のループのカウンターは常に次のようにする必要があります。 $i。このループ内にループがある場合、そのカウンターは $j になるはずです。 kドルなどループのカウンターが意味のある名前を持つ既存の変数である場合、この仕様は適用されません。
for ($i = 0; $i <h3 id="関数名">関数名</h3> <p>関数にはわかりやすい名前を付ける必要があります。ここでは C でプログラミングしているわけではありませんし、「stristr()」のような関数を書きたくありません。上記と同様に、単語はキャメルケースを使用して区別されます。関数名のどこかに動詞を含めた方がよいでしょう。より適切な関数名は、printLoginStatus()、getUserData() などです。 </p> <p><strong>関数パラメータ</strong> </p> <p>パラメータは変数名と同じ規則に従います。 doStuff($a, $b, $c) のような大量の関数は必要ありません。ほとんどの場合、関数の宣言を見るだけで関数の使用方法がわかります。パラメータの数は 5 つのパラメータ以内で制御する必要があります。配列を使用して 5 つを超えるパラメータを渡すこともできます。 </p> <h3 id="カテゴリ">カテゴリ</h3>
- クラスの名前 : まず、意味のある英語の単語またはフレーズである必要があります。クラス名は大文字で始まり、各単語の最初の文字も大文字にする必要があります。
- クラスのメンバー変数 : メンバー変数の命名は、変数の命名規則と一致している必要があります。
- クラスのメンバーメソッド 注: メソッドの名前は関数の名前と一致している必要があります。 ご注意ください 注: プライベート メソッドの場合は、メソッド名がアンダースコアで始まる必要があります。
概要
ここでの基本的な哲学は、単に怠惰にするためにコードの明瞭さを犠牲にしないことです。ただし、このバランスをとるには、いくつかの常識を使用する必要があります。 たとえば、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 クラス、関数、および制御ステートメントの中括弧は常に同じ行にあります<p> 。例: <strong> <pre name="code" class="php">class MyClass { public function foo() { if (cond) { doSomething(); } } }?
符号前后使用空格
这是不用太费事就可以保持代码可读性的另一个简单,容易的步骤。 无论何时你写一个赋值,表达式,等等,始终在符号之间保留一个空格。基本上,把代码当作英语来写。在变量名和运算符之间插入空格。不要在起始括弧后或者终 止括弧前加空格。不要在逗号或者分号之前加空格。一些例子很好地展示了这一点。例如:
/* 每一对给出了错误方式,紧跟正确方式。 */ $i=0; $i = 0; if($i 8) ) ... if (($i 8)) ... do_stuff( $i, "foo", $b ); do_stuff($i, "foo", $b); for($i=0; $i <h3 id="运算符优先级">运算符优先级</h3> <p>你知道 PHP 中所有运算符的详细的优先级吗?我不知道。不要猜。始终用括号强制一个表达式的优先级可以使优先级明显,这样你知道它会做些什么。例如:</p> <pre name="code" class="php"> /* 结果是什么?谁知道? */ $bool = ($i 8 || $k == 4); /* 现在你确定这里我在做什么了。 */ $bool = (($i <h2 id="数据库命名规范">数据库命名规范</h2>
- 数据库以及数据表的命名与类的命名相同,采用首字母大写的驼峰方式命名。需要注意的是: 所有数据表的名字必须是复数的写法。
- 所有字段的名称应该是由描述性的单词组成,命名的规则和变量命名规范 保持一致。
- 为了配合 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';

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

在PHP中,可以利用implode()函数的第一个参数来设置没有分隔符,该函数的第一个参数用于规定数组元素之间放置的内容,默认是空字符串,也可将第一个参数设置为空,语法为“implode(数组)”或者“implode("",数组)”。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

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

ドリームウィーバー CS6
ビジュアル Web 開発ツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、
