国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Rumah pembangunan bahagian belakang tutorial php PHP PSR-2 代碼風(fēng)格規(guī)范

PHP PSR-2 代碼風(fēng)格規(guī)范

Jul 23, 2016 am 08:54 AM

代碼風(fēng)格規(guī)范

本篇規(guī)范是 [PSR-1][] 基本代碼規(guī)范的繼承與擴(kuò)展。

本規(guī)范希望通過制定一系列規(guī)范化php代碼的規(guī)則,以減少在瀏覽不同作者的代碼時(shí),因代碼風(fēng)格的不同而造成不便。

當(dāng)多名程序員在多個(gè)項(xiàng)目中合作時(shí),就需要一個(gè)共同的編碼規(guī)范,
而本文中的風(fēng)格規(guī)范源自于多個(gè)不同項(xiàng)目代碼風(fēng)格的共同特性,
因此,本規(guī)范的價(jià)值在于我們都遵循這個(gè)編碼風(fēng)格,而不是在于它本身。

關(guān)鍵詞 “必須”("MUST")、“一定不可/一定不能”("MUST NOT")、“需要”("REQUIRED")、
“將會(huì)”("SHALL")、“不會(huì)”("SHALL NOT")、“應(yīng)該”("SHOULD")、“不該”("SHOULD NOT")、
“推薦”("RECOMMENDED")、“可以”("MAY")和”可選“("OPTIONAL")的詳細(xì)描述可參見 [RFC 2119][] 。

概覽


代碼必須遵循 [PSR-1][] 中的編碼規(guī)范 。

代碼必須使用4個(gè)空格符而不是 tab鍵 進(jìn)行縮進(jìn)。

每行的字符數(shù)應(yīng)該軟性保持在80個(gè)之內(nèi), 理論上一定不可多于120個(gè), 但一定不能有硬性限制。

每個(gè) namespace 命名空間聲明語句和 use 聲明語句塊后面,必須插入一個(gè)空白行。

類的開始花括號(hào)({)必須寫在函數(shù)聲明后自成一行,結(jié)束花括號(hào)(})也必須寫在函數(shù)主體后自成一行。

方法的開始花括號(hào)({)必須寫在函數(shù)聲明后自成一行,結(jié)束花括號(hào)(})也必須寫在函數(shù)主體后自成一行。

類的屬性和方法必須添加訪問修飾符(private、protected 以及 public), abstract 以及 final 必須聲明在訪問修飾符之前,而 static 必須聲明在訪問修飾符之后。

控制結(jié)構(gòu)的關(guān)鍵字后必須要有一個(gè)空格符,而調(diào)用方法或函數(shù)時(shí)則一定不能有。

控制結(jié)構(gòu)的開始花括號(hào)({)必須寫在聲明的同一行,而結(jié)束花括號(hào)(})必須寫在主體后自成一行。

控制結(jié)構(gòu)的開始左括號(hào)后和結(jié)束右括號(hào)前,都一定不能有空格符。

1.1. 例子

以下例子程序簡單地展示了以上大部分規(guī)范:

  1. namespace Vendor\Package;
  2. use FooInterface;
  3. use BarClass as Bar;
  4. use OtherVendor\OtherPackage\BazClass;
  5. class Foo extends Bar implements FooInterface
  6. {
  7. public function sampleFunction($a, $b = null)
  8. {
  9. if ($a === $b) {
  10. bar();
  11. } elseif ($a > $b) {
  12. $foo->bar($arg1);
  13. } else {
  14. BazClass::bar($arg2, $arg3);
  15. }
  16. }
  17. final public static function bar()
  18. {
  19. // method body
  20. }
  21. }
復(fù)制代碼

通則


2.1 基本編碼準(zhǔn)則

代碼必須符合 [PSR-1][] 中的所有規(guī)范。

2.2 文件

所有PHP文件必須使用Unix LF (linefeed)作為行的結(jié)束符。

所有PHP文件必須以一個(gè)空白行作為結(jié)束。

純PHP代碼文件必須省略最后的 ?> 結(jié)束標(biāo)簽。

2.3. 行

行的長度一定不能有硬性的約束。

軟性的長度約束一定要限制在120個(gè)字符以內(nèi),若超過此長度,帶代碼規(guī)范檢查的編輯器一定要發(fā)出警告,不過一定不可發(fā)出錯(cuò)誤提示。

每行不應(yīng)該多于80個(gè)字符,大于80字符的行應(yīng)該折成多行。

非空行后一定不能有多余的空格符。

空行可以使得閱讀代碼更加方便以及有助于代碼的分塊。

每行一定不能存在多于一條語句。

2.4. 縮進(jìn)

代碼必須使用4個(gè)空格符的縮進(jìn),一定不能用 tab鍵 。

備注: 使用空格而不是tab鍵縮進(jìn)的好處在于,
避免在比較代碼差異、打補(bǔ)丁、重閱代碼以及注釋時(shí)產(chǎn)生混淆。
并且,使用空格縮進(jìn),讓對(duì)齊變得更方便。

2.5. 關(guān)鍵字 以及 True/False/Null

PHP所有 [關(guān)鍵字][]必須全部小寫。

常量 true 、false 和 null 也必須全部小寫。

namespace 以及 use 聲明


namespace 聲明后 必須 插入一個(gè)空白行。

所有 use 必須 在 namespace 后聲明。

每條 use 聲明語句 必須 只有一個(gè) use 關(guān)鍵詞。

use 聲明語句塊后 必須 要有一個(gè)空白行。

例如:

  1. namespace Vendor\Package;
  2. use FooClass;
  3. use BarClass as Bar;
  4. use OtherVendor\OtherPackage\BazClass;
  5. // ... additional PHP code ...
復(fù)制代碼

類、屬性和方法


此處的“類”泛指所有的class類、接口以及traits可復(fù)用代碼塊。

4.1. 擴(kuò)展與繼承

關(guān)鍵詞 extends 和 implements必須寫在類名稱的同一行。

類的開始花括號(hào)必須獨(dú)占一行,結(jié)束花括號(hào)也必須在類主體后獨(dú)占一行。

  1. namespace Vendor\Package;
  2. use FooClass;
  3. use BarClass as Bar;
  4. use OtherVendor\OtherPackage\BazClass;
  5. class ClassName extends ParentClass implements \ArrayAccess, \Countable
  6. {
  7. // constants, properties, methods
  8. }
復(fù)制代碼

implements 的繼承列表也可以分成多行,這樣的話,每個(gè)繼承接口名稱都必須分開獨(dú)立成行,包括第一個(gè)。

  1. namespace Vendor\Package;
  2. use FooClass;
  3. use BarClass as Bar;
  4. use OtherVendor\OtherPackage\BazClass;
  5. class ClassName extends ParentClass implements
  6. \ArrayAccess,
  7. \Countable,
  8. \Serializable
  9. {
  10. // constants, properties, methods
  11. }
復(fù)制代碼
4.2. 屬性

每個(gè)屬性都必須添加訪問修飾符。

一定不可使用關(guān)鍵字 var 聲明一個(gè)屬性。

每條語句一定不可定義超過一個(gè)屬性。

不要使用下劃線作為前綴,來區(qū)分屬性是 protected 或 private。

以下是屬性聲明的一個(gè)范例:

  1. namespace Vendor\Package;
  2. class ClassName
  3. {
  4. public $foo = null;
  5. }
復(fù)制代碼
4.3. 方法

所有方法都必須添加訪問修飾符。

不要使用下劃線作為前綴,來區(qū)分方法是 protected 或 private。

方法名稱后一定不能有空格符,其開始花括號(hào)必須獨(dú)占一行,結(jié)束花括號(hào)也必須在方法主體后單獨(dú)成一行。參數(shù)左括號(hào)后和右括號(hào)前一定不能有空格。

一個(gè)標(biāo)準(zhǔn)的方法聲明可參照以下范例,留意其括號(hào)、逗號(hào)、空格以及花括號(hào)的位置。

  1. namespace Vendor\Package;
  2. class ClassName
  3. {
  4. public function fooBarBaz($arg1, &$arg2, $arg3 = [])
  5. {
  6. // method body
  7. }
  8. }
復(fù)制代碼
4.4. 方法的參數(shù)

參數(shù)列表中,每個(gè)逗號(hào)后面必須要有一個(gè)空格,而逗號(hào)前面一定不能有空格。

有默認(rèn)值的參數(shù),必須放到參數(shù)列表的末尾。

  1. namespace Vendor\Package;
  2. class ClassName
  3. {
  4. public function foo($arg1, &$arg2, $arg3 = [])
  5. {
  6. // method body
  7. }
  8. }
復(fù)制代碼

參數(shù)列表可以分列成多行,這樣,包括第一個(gè)參數(shù)在內(nèi)的每個(gè)參數(shù)都必須單獨(dú)成行。

拆分成多行的參數(shù)列表后,結(jié)束括號(hào)以及方法開始花括號(hào) 必須 寫在同一行,中間用一個(gè)空格分隔。

  1. namespace Vendor\Package;
  2. class ClassName
  3. {
  4. public function aVeryLongMethodName(
  5. ClassTypeHint $arg1,
  6. &$arg2,
  7. array $arg3 = []
  8. ) {
  9. // method body
  10. }
  11. }
復(fù)制代碼
4.5. abstract 、 final 、 以及 static

需要添加 abstract 或 final 聲明時(shí), 必須寫在訪問修飾符前,而 static 則必須寫在其后。

  1. namespace Vendor\Package;
  2. abstract class ClassName
  3. {
  4. protected static $foo;
  5. abstract protected function zim();
  6. final public static function bar()
  7. {
  8. // method body
  9. }
  10. }
復(fù)制代碼
4.6. 方法及函數(shù)調(diào)用

方法及函數(shù)調(diào)用時(shí),方法名或函數(shù)名與參數(shù)左括號(hào)之間一定不能有空格,參數(shù)右括號(hào)前也 一定不能有空格。每個(gè)參數(shù)前一定不能有空格,但其后必須有一個(gè)空格。

  1. bar();
  2. $foo->bar($arg1);
  3. Foo::bar($arg2, $arg3);
復(fù)制代碼

參數(shù)可以分列成多行,此時(shí)包括第一個(gè)參數(shù)在內(nèi)的每個(gè)參數(shù)都必須單獨(dú)成行。

  1. $foo->bar(
  2. $longArgument,
  3. $longerArgument,
  4. $muchLongerArgument
  5. );
復(fù)制代碼

控制結(jié)構(gòu)


控制結(jié)構(gòu)的基本規(guī)范如下:

控制結(jié)構(gòu)關(guān)鍵詞后必須有一個(gè)空格。

左括號(hào) ( 后一定不能有空格。

右括號(hào) ) 前也一定不能有空格。

右括號(hào) ) 與開始花括號(hào) { 間一定有一個(gè)空格。

結(jié)構(gòu)體主體一定要有一次縮進(jìn)。

結(jié)束花括號(hào) } 一定在結(jié)構(gòu)體主體后單獨(dú)成行。

每個(gè)結(jié)構(gòu)體的主體都必須被包含在成對(duì)的花括號(hào)之中,
這能讓結(jié)構(gòu)體更加結(jié)構(gòu)話,以及減少加入新行時(shí),出錯(cuò)的可能性。

5.1. if 、 elseif 和 else

標(biāo)準(zhǔn)的 if 結(jié)構(gòu)如下代碼所示,留意 括號(hào)、空格以及花括號(hào)的位置,
注意 else 和 elseif 都與前面的結(jié)束花括號(hào)在同一行。

  1. if ($expr1) {
  2. // if body
  3. } elseif ($expr2) {
  4. // elseif body
  5. } else {
  6. // else body;
  7. }
復(fù)制代碼

應(yīng)該使用關(guān)鍵詞 elseif 代替所有 else if ,以使得所有的控制關(guān)鍵字都像是單獨(dú)的一個(gè)詞。

5.2. switch 和 case

標(biāo)準(zhǔn)的 switch 結(jié)構(gòu)如下代碼所示,留意括號(hào)、空格以及花括號(hào)的位置。
case 語句必須相對(duì) switch 進(jìn)行一次縮進(jìn),而 break 語句以及 case 內(nèi)的其它語句都 必須 相對(duì) case 進(jìn)行一次縮進(jìn)。
如果存在非空的 case 直穿語句,主體里必須有類似 // no break 的注釋。

  1. switch ($expr) {
  2. case 0:
  3. echo 'First case, with a break';
  4. break;
  5. case 1:
  6. echo 'Second case, which falls through';
  7. // no break
  8. case 2:
  9. case 3:
  10. case 4:
  11. echo 'Third case, return instead of break';
  12. return;
  13. default:
  14. echo 'Default case';
  15. break;
  16. }
復(fù)制代碼
5.3. while 和 do while

一個(gè)規(guī)范的 while 語句應(yīng)該如下所示,注意其 括號(hào)、空格以及花括號(hào)的位置。

  1. while ($expr) {
  2. // structure body
  3. }
復(fù)制代碼

標(biāo)準(zhǔn)的 do while 語句如下所示,同樣的,注意其 括號(hào)、空格以及花括號(hào)的位置。

  1. do {
  2. // structure body;
  3. } while ($expr);
復(fù)制代碼
5.4. for

標(biāo)準(zhǔn)的 for 語句如下所示,注意其 括號(hào)、空格以及花括號(hào)的位置。

  1. for ($i = 0; $i // for body
  2. }
復(fù)制代碼
5.5. foreach

標(biāo)準(zhǔn)的 foreach 語句如下所示,注意其 括號(hào)、空格以及花括號(hào)的位置。

  1. foreach ($iterable as $key => $value) {
  2. // foreach body
  3. }
復(fù)制代碼
5.6. try, catch

標(biāo)準(zhǔn)的 try catch 語句如下所示,注意其 括號(hào)、空格以及花括號(hào)的位置。

  1. try {
  2. // try body
  3. } catch (FirstExceptionType $e) {
  4. // catch body
  5. } catch (OtherExceptionType $e) {
  6. // catch body
  7. }
復(fù)制代碼

閉包


閉包聲明時(shí),關(guān)鍵詞 function 后以及關(guān)鍵詞 use 的前后都必須要有一個(gè)空格。

開始花括號(hào)必須寫在聲明的同一行,結(jié)束花括號(hào)必須緊跟主體結(jié)束的下一行。

參數(shù)列表和變量列表的左括號(hào)后以及右括號(hào)前,必須不能有空格。

參數(shù)和變量列表中,逗號(hào)前必須不能有空格,而逗號(hào)后必須要有空格。

閉包中有默認(rèn)值的參數(shù)必須放到列表的后面。

標(biāo)準(zhǔn)的閉包聲明語句如下所示,注意其 括號(hào)、逗號(hào)、空格以及花括號(hào)的位置。

  1. $closureWithArgs = function ($arg1, $arg2) {
  2. // body
  3. };
  4. $closureWithArgsAndVars = function ($arg1, $arg2) use ($var1, $var2) {
  5. // body
  6. };
復(fù)制代碼

參數(shù)列表以及變量列表可以分成多行,這樣,包括第一個(gè)在內(nèi)的每個(gè)參數(shù)或變量都必須單獨(dú)成行,而列表的右括號(hào)與閉包的開始花括號(hào)必須放在同一行。

以下幾個(gè)例子,包含了參數(shù)和變量列表被分成多行的多情況。

  1. $longArgs_noVars = function (
  2. $longArgument,
  3. $longerArgument,
  4. $muchLongerArgument
  5. ) {
  6. // body
  7. };
  8. $noArgs_longVars = function () use (
  9. $longVar1,
  10. $longerVar2,
  11. $muchLongerVar3
  12. ) {
  13. // body
  14. };
  15. $longArgs_longVars = function (
  16. $longArgument,
  17. $longerArgument,
  18. $muchLongerArgument
  19. ) use (
  20. $longVar1,
  21. $longerVar2,
  22. $muchLongerVar3
  23. ) {
  24. // body
  25. };
  26. $longArgs_shortVars = function (
  27. $longArgument,
  28. $longerArgument,
  29. $muchLongerArgument
  30. ) use ($var1) {
  31. // body
  32. };
  33. $shortArgs_longVars = function ($arg) use (
  34. $longVar1,
  35. $longerVar2,
  36. $muchLongerVar3
  37. ) {
  38. // body
  39. };
復(fù)制代碼

注意,閉包被直接用作函數(shù)或方法調(diào)用的參數(shù)時(shí),以上規(guī)則仍然適用。

  1. $foo->bar(
  2. $arg1,
  3. function ($arg2) use ($var1) {
  4. // body
  5. },
  6. $arg3
  7. );
復(fù)制代碼

總結(jié)


以上規(guī)范難免有疏忽,其中包括但不僅限于:

全局變量和常量的定義

函數(shù)的定義

操作符和賦值

行內(nèi)對(duì)齊

注釋和文檔描述塊

類名的前綴及后綴

最佳實(shí)踐

本規(guī)范之后的修訂與擴(kuò)展將彌補(bǔ)以上不足。

附錄 A. 問卷調(diào)查

為了編寫本規(guī)范,小組制定了調(diào)查問卷,用來統(tǒng)計(jì)各成員項(xiàng)目的共同規(guī)范。
以下是此問卷調(diào)查的數(shù)據(jù),在此供查閱。

A.1. 問卷數(shù)據(jù)
  1. url,http://www.horde.org/apps/horde/docs/CODING_STANDARDS,http://pear.php.net/manual/en/standards.php,http://solarphp.com/manual/appendix-standards.style,http://framework.zend.com/manual/en/coding-standard.html,http://symfony.com/doc/2.0/contributing/code/standards.html,http://www.ppi.io/docs/coding-standards.html,https://github.com/ezsystems/ezp-next/wiki/codingstandards,http://book.cakephp.org/2.0/en/contributing/cakephp-coding-conventions.html,https://github.com/UnionOfRAD/lithium/wiki/Spec%3A-Coding,http://drupal.org/coding-standards,http://code.google.com/p/sabredav/,http://area51.phpbb.com/docs/31x/coding-guidelines.html,https://docs.google.com/a/zikula.org/document/edit?authkey=CPCU0Us&hgd=1&id=1fcqb93Sn-hR9c0mkN6m_tyWnmEvoswKBtSc0tKkZmJA,http://www.chisimba.com,n/a,https://github.com/Respect/project-info/blob/master/coding-standards-sample.php,n/a,Object Calisthenics for PHP,http://doc.nette.org/en/coding-standard,http://flow3.typo3.org,https://github.com/propelorm/Propel2/wiki/Coding-Standards,http://developer.joomla.org/coding-standards.html
  2. voting,yes,yes,yes,yes,yes,yes,yes,yes,yes,yes,yes,yes,yes,yes,yes,no,no,no,?,yes,no,yes
  3. indent_type,4,4,4,4,4,tab,4,tab,tab,2,4,tab,4,4,4,4,4,4,tab,tab,4,tab
  4. line_length_limit_soft,75,75,75,75,no,85,120,120,80,80,80,no,100,80,80,?,?,120,80,120,no,150
  5. line_length_limit_hard,85,85,85,85,no,no,no,no,100,?,no,no,no,100,100,?,120,120,no,no,no,no
  6. class_names,studly,studly,studly,studly,studly,studly,studly,studly,studly,studly,studly,lower_under,studly,lower,studly,studly,studly,studly,?,studly,studly,studly
  7. class_brace_line,next,next,next,next,next,same,next,same,same,same,same,next,next,next,next,next,next,next,next,same,next,next
  8. constant_names,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper
  9. true_false_null,lower,lower,lower,lower,lower,lower,lower,lower,lower,upper,lower,lower,lower,upper,lower,lower,lower,lower,lower,upper,lower,lower
  10. method_names,camel,camel,camel,camel,camel,camel,camel,camel,camel,camel,camel,lower_under,camel,camel,camel,camel,camel,camel,camel,camel,camel,camel
  11. method_brace_line,next,next,next,next,next,same,next,same,same,same,same,next,next,same,next,next,next,next,next,same,next,next
  12. control_brace_line,same,same,same,same,same,same,next,same,same,same,same,next,same,same,next,same,same,same,same,same,same,next
  13. control_space_after,yes,yes,yes,yes,yes,no,yes,yes,yes,yes,no,yes,yes,yes,yes,yes,yes,yes,yes,yes,yes,yes
  14. always_use_control_braces,yes,yes,yes,yes,yes,yes,no,yes,yes,yes,no,yes,yes,yes,yes,no,yes,yes,yes,yes,yes,yes
  15. else_elseif_line,same,same,same,same,same,same,next,same,same,next,same,next,same,next,next,same,same,same,same,same,same,next
  16. case_break_indent_from_switch,0/1,0/1,0/1,1/2,1/2,1/2,1/2,1/1,1/1,1/2,1/2,1/1,1/2,1/2,1/2,1/2,1/2,1/2,0/1,1/1,1/2,1/2
  17. function_space_after,no,no,no,no,no,no,no,no,no,no,no,no,no,no,no,no,no,no,no,no,no,no
  18. closing_php_tag_required,no,no,no,no,no,no,no,no,yes,no,no,no,no,yes,no,no,no,no,no,yes,no,no
  19. line_endings,LF,LF,LF,LF,LF,LF,LF,LF,?,LF,?,LF,LF,LF,LF,?,,LF,?,LF,LF,LF
  20. static_or_visibility_first,static,?,static,either,either,either,visibility,visibility,visibility,either,static,either,?,visibility,?,?,either,either,visibility,visibility,static,?
  21. control_space_parens,no,no,no,no,no,no,yes,no,no,no,no,no,no,yes,?,no,no,no,no,no,no,no
  22. blank_line_after_php,no,no,no,no,yes,no,no,no,no,yes,yes,no,no,yes,?,yes,yes,no,yes,no,yes,no
  23. class_method_control_brace,next/next/same,next/next/same,next/next/same,next/next/same,next/next/same,same/same/same,next/next/next,same/same/same,same/same/same,same/same/same,same/same/same,next/next/next,next/next/same,next/same/same,next/next/next,next/next/same,next/next/same,next/next/same,next/next/same,same/same/same,next/next/same,next/next/next
復(fù)制代碼
A.2. 問卷說明

indent_type:
縮進(jìn)類型. tab = "使用 tab 鍵一次", 2 or 4 = "空格的數(shù)量"

line_length_limit_soft:
每行字符數(shù)量的“軟”限制. ? = 不可辯或無作答, no 表示無限制.

line_length_limit_hard:
每行字符數(shù)量的“硬”限制. ? = 不可辯或無作答, no 表示無限制.

class_names:
類名稱的命名. lower = 只允許小寫字母, lower_under = 下滑線分隔的小寫字母, studly = StudlyCase 的駝峰風(fēng)格.

class_brace_line:
類的開始花括號(hào)是與 class 關(guān)鍵字在同一行或是在其的下一行?

constant_names:
類的常量如何命名? upper = 下劃線分隔的大寫字母.

true_false_null:
關(guān)鍵字 true、false 以及 null 是全部小寫 lower 還是全部大寫 upper?

method_names:
方法名稱如何命名? camel = camelCase, lower_under = 下劃線分隔的小寫字母.

method_brace_line:
方法的開始花括號(hào)是與方法名在同一行還是在其的下一行?

control_brace_line:
控制結(jié)構(gòu)的開始花括號(hào)是與聲明在同一行還是在其的下一行?

control_space_after:
控制結(jié)構(gòu)關(guān)鍵詞后是否有空格?

always_use_control_braces:
控制結(jié)構(gòu)體是否都要被包含在花括號(hào)內(nèi)?

else_elseif_line:
else 或 elseif 與前面的結(jié)束花括號(hào)在同一行還是在其的下一行?

case_break_indent_from_switch:
switch 語句中的 case 和 break 需要相對(duì) switch 縮進(jìn)多少次?

function_space_after:
函數(shù)調(diào)用語句中,函數(shù)名稱與變量列表的左括號(hào)間是否有空格?

closing_php_tag_required:
純 PHP 代碼的文件,是否需要 ?> 結(jié)束標(biāo)簽?

line_endings:
選擇哪種類型的行結(jié)束符?

static_or_visibility_first:
聲明一個(gè)靜態(tài)方法時(shí),static 是寫訪問修飾符前還是后?

control_space_parens:
控制結(jié)構(gòu)里,左括號(hào)后以及右括號(hào)前是否有空格?yes = if ( $expr ), no = if ($expr).

blank_line_after_php:
PHP 開始標(biāo)簽后,是否需要一個(gè)空行?

class_method_control_brace:
開始花括號(hào)在類、方法和控制結(jié)構(gòu)的位置統(tǒng)計(jì)。

A.3. 問卷統(tǒng)計(jì)結(jié)果
  1. indent_type:
  2. tab: 7
  3. 2: 1
  4. 4: 14
  5. line_length_limit_soft:
  6. ?: 2
  7. no: 3
  8. 75: 4
  9. 80: 6
  10. 85: 1
  11. 100: 1
  12. 120: 4
  13. 150: 1
  14. line_length_limit_hard:
  15. ?: 2
  16. no: 11
  17. 85: 4
  18. 100: 3
  19. 120: 2
  20. class_names:
  21. ?: 1
  22. lower: 1
  23. lower_under: 1
  24. studly: 19
  25. class_brace_line:
  26. next: 16
  27. same: 6
  28. constant_names:
  29. upper: 22
  30. true_false_null:
  31. lower: 19
  32. upper: 3
  33. method_names:
  34. camel: 21
  35. lower_under: 1
  36. method_brace_line:
  37. next: 15
  38. same: 7
  39. control_brace_line:
  40. next: 4
  41. same: 18
  42. control_space_after:
  43. no: 2
  44. yes: 20
  45. always_use_control_braces:
  46. no: 3
  47. yes: 19
  48. else_elseif_line:
  49. next: 6
  50. same: 16
  51. case_break_indent_from_switch:
  52. 0/1: 4
  53. 1/1: 4
  54. 1/2: 14
  55. function_space_after:
  56. no: 22
  57. closing_php_tag_required:
  58. no: 19
  59. yes: 3
  60. line_endings:
  61. ?: 5
  62. LF: 17
  63. static_or_visibility_first:
  64. ?: 5
  65. either: 7
  66. static: 4
  67. visibility: 6
  68. control_space_parens:
  69. ?: 1
  70. no: 19
  71. yes: 2
  72. blank_line_after_php:
  73. ?: 1
  74. no: 13
  75. yes: 8
  76. class_method_control_brace:
  77. next/next/next: 4
  78. next/next/same: 11
  79. next/same/same: 1
  80. same/same/same: 6
復(fù)制代碼

轉(zhuǎn)自Github(PizzaLiu)

PHP, PSR


Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana saya melaksanakan pengesahan dan kebenaran dalam php? Bagaimana saya melaksanakan pengesahan dan kebenaran dalam php? Jun 20, 2025 am 01:03 AM

TosecurelyhandleAuthenticationandauthorizationInphp, ikuti: 1.alwayshashpasswordswithpassword_hash () andverifyUsingPassword_verify (), usePePreparedStatementStopreventsqlInjection, andStoreUserDatain $ _SessionAsLogin.2.implescureRoleRoleRoleRoleRole

Bagaimana anda boleh mengendalikan fail memuat naik dengan selamat di php? Bagaimana anda boleh mengendalikan fail memuat naik dengan selamat di php? Jun 19, 2025 am 01:05 AM

Untuk mengendalikan muat naik fail dengan selamat di PHP, terasnya adalah untuk mengesahkan jenis fail, menamakan semula fail, dan menyekat kebenaran. 1. Gunakan finfo_file () untuk memeriksa jenis mime sebenar, dan hanya jenis tertentu seperti imej/jpeg dibenarkan; 2. Gunakan uniqid () untuk menghasilkan nama fail rawak dan simpannya dalam direktori akar bukan web; 3. Hadkan saiz fail melalui borang php.ini dan html, dan tetapkan kebenaran direktori ke 0755; 4. Gunakan Clamav untuk mengimbas malware untuk meningkatkan keselamatan. Langkah -langkah ini dengan berkesan menghalang kelemahan keselamatan dan memastikan bahawa proses muat naik fail adalah selamat dan boleh dipercayai.

Apakah perbezaan antara == (perbandingan longgar) dan === (perbandingan ketat) dalam php? Apakah perbezaan antara == (perbandingan longgar) dan === (perbandingan ketat) dalam php? Jun 19, 2025 am 01:07 AM

Dalam PHP, perbezaan utama antara == dan == adalah ketat pemeriksaan jenis. == Penukaran jenis akan dilakukan sebelum perbandingan, contohnya, 5 == "5" pulangan benar, dan === meminta nilai dan jenis adalah sama sebelum benar akan dikembalikan, sebagai contoh, 5 === "5" mengembalikan palsu. Dalam senario penggunaan, === lebih selamat dan harus digunakan terlebih dahulu, dan == hanya digunakan apabila penukaran jenis diperlukan.

Bagaimanakah anda boleh berinteraksi dengan pangkalan data NoSQL (mis., MongoDB, Redis) dari PHP? Bagaimanakah anda boleh berinteraksi dengan pangkalan data NoSQL (mis., MongoDB, Redis) dari PHP? Jun 19, 2025 am 01:07 AM

Ya, PHP boleh berinteraksi dengan pangkalan data NoSQL seperti MongoDB dan Redis melalui sambungan atau perpustakaan tertentu. Pertama, gunakan pemacu MongoDBPHP (dipasang melalui PECL atau komposer) untuk membuat contoh pelanggan dan mengendalikan pangkalan data dan koleksi, penyisipan sokongan, pertanyaan, pengagregatan dan operasi lain; Kedua, gunakan perpustakaan predis atau lanjutan phpredis untuk menyambung ke REDIS, lakukan tetapan dan pengambilalihan nilai utama, dan mengesyorkan PHPREDI untuk senario berprestasi tinggi, sementara Predis mudah untuk penempatan pesat; Kedua-duanya sesuai untuk persekitaran pengeluaran dan didokumentasikan dengan baik.

Bagaimanakah saya melakukan operasi aritmetik dalam php (, -, *, /, %)? Bagaimanakah saya melakukan operasi aritmetik dalam php (, -, *, /, %)? Jun 19, 2025 pm 05:13 PM

Kaedah menggunakan operasi matematik asas dalam PHP adalah seperti berikut: 1. Tanda tambahan menyokong bilangan bulat dan nombor terapung, dan juga boleh digunakan untuk pembolehubah. Nombor rentetan akan ditukar secara automatik tetapi tidak disyorkan kepada kebergantungan; 2. Tanda -tanda pengurangan - tanda, pembolehubah adalah sama, dan penukaran jenis juga terpakai; 3. Tanda -tanda pendaraban menggunakan tanda *, yang sesuai untuk nombor dan rentetan yang serupa; 4. Bahagian menggunakan / tanda, yang perlu mengelakkan pembahagian dengan sifar, dan perhatikan bahawa hasilnya mungkin nombor terapung; 5. Mengambil tanda modulus boleh digunakan untuk menilai angka ganjil dan bahkan, dan apabila memproses nombor negatif, tanda -tanda selebihnya selaras dengan dividen. Kunci untuk menggunakan pengendali ini dengan betul adalah untuk memastikan bahawa jenis data adalah jelas dan keadaan sempadan ditangani dengan baik.

Bagaimanakah saya tetap terkini dengan perkembangan php terkini dan amalan terbaik? Bagaimanakah saya tetap terkini dengan perkembangan php terkini dan amalan terbaik? Jun 23, 2025 am 12:56 AM

Tostaycurrentwithphpdevelopmentsandbestpractices, followeyNewsssourcesLikePhp.netandphpweekly, engageWithCommunitiesonforumsandconference, keeptoolingupdatedandgraduallyAdoptNewFeatures, dan readribcoursourcourceSource

Apakah php, dan mengapa ia digunakan untuk pembangunan web? Apakah php, dan mengapa ia digunakan untuk pembangunan web? Jun 23, 2025 am 12:55 AM

Phpbecamepopularforwebdevelopmentduetoitseaseoflearning, seamlessintegrationwithhtml, widespreadhostingsupport, andalargeecosystemincludingframeworkslikelaravelandcmsplatformsLikeWordPress.itexcelsinhandessubmissions

Bagaimana cara menetapkan zon waktu php? Bagaimana cara menetapkan zon waktu php? Jun 25, 2025 am 01:00 AM

TosetTheRightTimeZoneinPhp, USEDATE_DEFAULT_TIMEZONE_SET () functionAtthestArtAfyourscriptwithavalididentifiersuchas'america/new_york'.1.usedate_default_timeSet ()

See all articles