<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                今天我們的代碼規范是基于以上規范進行了整理。 ### **1、`PHP`**源文件只能使用**`<?php`**和**`<?=`**這兩種標簽**** > `<?php`標簽通常用于純`PHP`的腳本當中,而`<?=`通常用于模板當中。 ### **2、`PHP`**源文件必須是不帶**`BOM`**的**`UTF-8`**編碼的文件**** > `BOM(Byte Order Mark)`,字節順序標記,出現在文本文件頭部,`Unicode`編碼標準中用于標識文件是采用哪種格式的編碼。 ### **3、`PHP`**源文件縮進采用 4 個空格**** > 很多編輯器使用`Tab`作為縮進。會造成空格性問題。 ### **4、純**`PHP`**代碼的源文件關閉標簽**`?>`**必須省略** > `PHP`解析器在對文件進行解釋的時候,會有性能提升。并且,這能一定程序避免在`?>`之后有多余的空格導致程序報錯。 ### **5、請嚴格控制每行 120 個字符** > 過長的代碼會導致多種分辨率的顯示器造成兼容問題。并且,過長的代碼也會造成難以閱讀理解。如果實在太長,請把代碼換行。 ### **6、所有的類必須設定一個命令空間** > 命令空間給代碼結構有較強的說明性,以及杜絕同名類的沖突問題。同時,也能用到 Composer 的自動加載優勢特性。 ~~~php <?php namespace core; ~~~ ### **7、命名空間(`namespace`)的聲明后面必須有一行空行** > 空行會讓代碼看起來更加清晰容易閱讀。 ~~~php <?php namespace core; use common; ~~~ ### **8、所有的導入(use)聲明必須放在命名空間(namespace)聲明的下面** > 這樣會讓代碼結構變得清晰容易閱讀。 ~~~php <?php namespace core; use common; ~~~ ### **9、一句聲明中,必須只有一個導入(use)關鍵字** > 雖然 PHP 允許一行代碼當中允許使用多個 use 關鍵字導入一個類。但是,這會使代碼閱讀造成障礙。 錯誤: ~~~text <?php namespace core; use common, library; ~~~ 正確: ~~~php <?php namespace core; use common; use library; ~~~ ### **10、在導入(use)聲明代碼塊后面必須有一行空行** > 空行讓代碼結構變得容易理解。 ~~~php <?php namespace core; use common; use library; class Person { } ~~~ ### **11、PHP 關鍵字必須小寫** > PHP 的關鍵字,必須小寫,boolean 值: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' ~~~ ### **12、繼承(extends) 和實現(implement) 必須和 class name 寫在一行,切花括號要換行寫。** ~~~php <?php namespace Lib\Databaes; class Mysql extends ParentClass implements \PDO, \DB // 寫一行 { // 換行寫{ } ~~~ ### **13、成員屬性訪問修飾符必須顯示聲明不能省略** > 成員屬性有三種訪問修飾符:`public`、`protected`、`private`。不能使用老式的`var`來聲音成員屬性。 ~~~php <?php namespace Lib\Databaes; class Mysql extends ParentClass implements \PDO, \DB // 寫一行 { public $foo = null; private $name = 'sam'; protected $age = '17'; } ~~~ ### **14、成員方法訪問修飾符必須顯示聲明不能省略** > 成員方法有三種訪問修飾符:`public`、`protected`、`private`。 錯誤: ~~~php <?php namespace Lib\Databases; class MySQL { function fetchOne() { // ...... } } ~~~ 正確: ~~~php <?php namespace Lib\Databases; class MySQL { public function fetchOne() { // ...... } } ~~~ ### **15、方法的參數有多個的時候,每個參數的逗號后面必須加個空格** ~~~php namespace Lib\Databaes; class Mysql extends ParentClass implements \PDO, \DB // 寫一行 { public getInfo ($name, $age, $gender = 1) { } } ~~~ ### **16、當用到抽象(abstract)和終結(final)來做類聲明時,它們必須放在可見性聲明(public 還是protected還是private)的前面。而當用到靜態(static)來做類聲明時,則必須放在可見性聲明的后面。** ~~~php <?php namespace Vendor\Package; abstract class ClassName { protected static $foo; // static 放后面 abstract protected function zim(); // abstract 放前面 final public static function bar() // final 放前面,static 放最后。 { // 方法主體部分 } } ~~~ ### **17、控制結構花括號、換行、空格等規范** > if、else、elseif、switch、for、foreach、case、while、go、try、catch 等關鍵詞后面必須加空格。可以說,沒有特殊說明的情況下,基本上所有的 PHP 關鍵詞后面都必須加空格。 > 流程控制語句起始的花括號是不需要另起一行。 ~~~php if ($expr1) { // 左右空格 // if body } elseif ($expr2) { // elesif 連著寫 // elseif body } else { // else body; } switch ($expr) { // 左右空格 case 0: echo 'First case, with a break'; // 對齊 break; // 換行寫break,也對齊。 case 1: echo 'Second case, which falls through'; // no break case 2: case 3: case 4: echo 'Third case, return instead of break'; return; default: echo 'Default case'; break; } while ($expr) { // 左右空格 // structure body } do { // structure body; // 左右空格 } while ($expr); for ($i = 0; $i < 10; $i++) { // 注意幾個參數之間的空格 // for body } foreach ($iterable as $key => $value) { // 還是空格問題 // foreach body } try { // try body } catch (FirstExceptionType $e) { // 同樣也是注意空格。 // catch body } catch (OtherExceptionType $e) { // catch body } ~~~ ### **18、類名必須與文件名一樣** > 這個很容易理解,沒啥好補充說明的。除非框架有特殊的加載規則。 ### **19、類的命名必須遵循**`**StudlyCaps**`**大寫開頭的駝峰命名規范** > StudlyCaps 即單詞首字母大寫風格。有些人也稱它為大駝峰。 ### **20、方法名稱必須符合**`**camelCase**`**式的小寫開頭駝峰命名規范** > camelCase 即第一個單詞首字母小寫后面的單詞首字母大寫的風格。 ### **21、類中的常量所有字母都必須大寫,單詞間用下劃線分隔** ~~~text CONST ORDER_STATUS = 1; ~~~ ### **22、變量必須使用小駝峰命名風格** ~~~text $cardNo = ''; // 卡號。 $idCardNo = ''; // 身份證號。 ~~~ ### **23、參數必須使用駝峰命名風格** > 參數也是變量的一種。故與變量的命名風格一致。 ### **24、所有方法的起始花括號必須另起一行。** 雖然以下兩種在實際開發中都是允許的。但是,為了保持代碼一致。所以,必須強制使用。 錯誤: ~~~text <?php class MySQL { public function fetchOne() { } } ~~~ 正確: ~~~text <?php class MySQL { public function fetchOne() { } } ~~~ ### **25、直接在方法中寫數組參數時格式如下** ~~~text $object->callFunc([ 'userId' => 1, 'username' => 'sam', 'age' => 20, 'sex' => 'male' ]); ~~~ ### **26、方法參數注釋** ~~~text /** * 管理后臺獲取優惠券發送記錄。 * * @author fingerQin 2018-02-23 * @modify fingerQin 2019-02-25 修復了 SQL 性能問題。 * * @param int $couponId 優惠券ID。 * @param string $username 用戶名。 * @param string $mobilephone 用戶手機號。 * @param int $page 當前分頁頁碼。 * @param int $count 每頁顯示條數。 * @param array $data 請求參數。 * * ------------------- eg:start --------------------- * $data = [ * 'username' => '用戶賬號,沒有時傳空字符串', * 'age' => '用戶年齡,沒有時傳0', * ]; * ------------------- eg:end ----------------------- * * @return array */ public static function getBackendSendHistory($couponId = -1, $username, $mobilephone, $page, $count, $data) { } ~~~ 可以看出,有以下幾個注釋特點: 1)方法說明。 2)創建方法的同事編號以及時間。 3)修改方法的同事編號以及時間與修改的內容。 4)參數注釋:類型、名稱、參數說明。參數與其他注釋之間要有空行。 5)參數示例:如果參數當中有復雜的參數。可以在參數下方給出示例以增強說明。 6)返回值。需要給出返回的類型。 ### **27、方法的代碼行數不能超過一屏** 每個人的顯示器分辨率不一樣。既然不超過一屏也會出現別的同事一屏會超出的情況。所以,即使未超過一屏,也盡量保證代碼行在 40 行以內。如果發現自己的代碼超過了 40 行,那么就需要考慮自己的代碼是不是有拆分不合理的地方。特殊情況允許超過 40 行。但是,整個方法里面的代碼必須是簡單的判斷邏輯。不包含復雜的業務判斷邏輯。因為,不同的業務判斷最佳實踐是單獨封裝一個方法。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看