整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          JavaScript 代碼規(guī)范

          JavaScript 代碼規(guī)范

          所有的 JavaScript 項(xiàng)目適用同一種規(guī)范。

          JavaScript 代碼規(guī)范

          代碼規(guī)范通常包括以下幾個(gè)方面:

          • 變量和函數(shù)的命名規(guī)則

          • 空格,縮進(jìn),注釋的使用規(guī)則。

          • 其他常用規(guī)范……

          規(guī)范的代碼可以更易于閱讀與維護(hù)。

          代碼規(guī)范一般在開(kāi)發(fā)前規(guī)定,可以跟你的團(tuán)隊(duì)成員來(lái)協(xié)商設(shè)置。

          變量名

          變量名推薦使用駝峰法來(lái)命名(camelCase):

          firstName="John";

          lastName="Doe";

          price=19.90;

          tax=0.20;

          fullPrice=price + (price * tax);

          空格與運(yùn)算符

          通常運(yùn)算符 (=+ - * / ) 前后需要添加空格:

          實(shí)例:

          var x=y + z;

          var values=["Volvo", "Saab", "Fiat"];

          代碼縮進(jìn)

          通常使用 4 個(gè)空格符號(hào)來(lái)縮進(jìn)代碼塊:

          函數(shù):

          function toCelsius(fahrenheit) {

          return (5 / 9) * (fahrenheit - 32);

          }

          不推薦使用 TAB 鍵來(lái)縮進(jìn),因?yàn)椴煌庉嬈?TAB 鍵的解析不一樣。

          語(yǔ)句規(guī)則

          簡(jiǎn)單語(yǔ)句的通用規(guī)則:

          • 一條語(yǔ)句通常以符號(hào)作為結(jié)束符。

          實(shí)例:

          var values=["Volvo", "Saab", "Fiat"];

          var person={

          firstName: "John",

          lastName: "Doe",

          age: 50,

          eyeColor: "blue"

          };

          復(fù)雜語(yǔ)句的通用規(guī)則:

          • 將左花括號(hào)放在第一行的結(jié)尾。

          • 左花括號(hào)前添加一空格。

          • 將右花括號(hào)獨(dú)立放在一行。

          • 不要以分號(hào)結(jié)束一個(gè)復(fù)雜的聲明。

          函數(shù):

          function toCelsius(fahrenheit) {

          return (5 / 9) * (fahrenheit - 32);

          }

          循環(huán):

          for (i=0; i < 5; i++) {

          x +=i;

          }

          條件語(yǔ)句:

          if (time < 20) {

          greeting="Good day";

          } else {

          greeting="Good evening";

          }

          對(duì)象規(guī)則

          對(duì)象定義的規(guī)則:

          • 將左花括號(hào)與類名放在同一行。

          • 冒號(hào)與屬性值間有個(gè)空格。

          • 字符串使用雙引號(hào),數(shù)字不需要。

          • 最后一個(gè)屬性-值對(duì)后面不要添加逗號(hào)。

          • 將右花括號(hào)獨(dú)立放在一行,并以符號(hào)作為結(jié)束符號(hào)。

          實(shí)例:

          var person={

          firstName: "John",

          lastName: "Doe",

          age: 50,

          eyeColor: "blue"

          };

          短的對(duì)象代碼可以直接寫(xiě)成一行:

          實(shí)例:

          var person={firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};

          每行代碼字符小于 80

          為了便于閱讀每行字符建議小于數(shù) 80 個(gè)。

          如果一個(gè) JavaScript 語(yǔ)句超過(guò)了 80 個(gè)字符,建議在 運(yùn)算符或者逗號(hào)后換行。

          實(shí)例:

          document.getElementById("demo").innerHTML=

          "Hello Runoob.";

          命名規(guī)則

          一般很多代碼語(yǔ)言的命名規(guī)則都是類似的,例如:

          • 變量和函數(shù)為駝峰法( camelCase

          • 全局變量為大寫(xiě) (UPPERCASE )

          • 常量 (如 PI) 為大寫(xiě) (UPPERCASE )

          變量命名你是否使用這幾種規(guī)則: hyp-hens, camelCase, 或 under_scores ?

          HTML 和 CSS 的橫桿(-)字符:

          HTML5 屬性可以以 data- (如:data-quantity, data-price) 作為前綴。

          CSS 使用 - 來(lái)連接屬性名 (font-size)。

          - 通常在 JavaScript 中被認(rèn)為是減法,所以不允許使用。

          下劃線:

          很多程序員比較喜歡使用下劃線(如:date_of_birth), 特別是在 SQL 數(shù)據(jù)庫(kù)中。

          PHP 語(yǔ)言通常都使用下劃線。

          帕斯卡拼寫(xiě)法(PascalCase):

          帕斯卡拼寫(xiě)法(PascalCase) 在 C 語(yǔ)言中語(yǔ)言較多。

          駝峰法:

          JavaScript 中通常推薦使用駝峰法,jQuery 及其他 JavaScript 庫(kù)都使用駝峰法。

          變量名不要以 $ 作為開(kāi)始標(biāo)記,會(huì)與很多 JavaScript 庫(kù)沖突。

          HTML 載入外部 JavaScript 文件

          使用簡(jiǎn)潔的格式載入 JavaScript 文件 ( type 屬性不是必須的):

          <script src="myscript.js">

          使用 JavaScript 訪問(wèn) HTML 元素

          一個(gè)糟糕的 HTML 格式可能會(huì)導(dǎo)致 JavaScript 執(zhí)行錯(cuò)誤。

          以下兩個(gè) JavaScript 語(yǔ)句會(huì)輸出不同結(jié)果:

          實(shí)例

          var obj=getElementById("Demo")

          var obj=getElementById("demo")

          HTML 與 JavaScript 盡量使用相同的命名規(guī)則。

          訪問(wèn) HTML(5) 代碼規(guī)范。

          文件擴(kuò)展名

          HTML 文件后綴可以是 .html (或r .htm)。

          CSS 文件后綴是 .css

          JavaScript 文件后綴是 .js

          使用小寫(xiě)文件名

          大多 Web 服務(wù)器 (Apache, Unix) 對(duì)大小寫(xiě)敏感: london.jpg 不能通過(guò) London.jpg 訪問(wèn)。

          其他 Web 服務(wù)器 (Microsoft, IIS) 對(duì)大小寫(xiě)不敏感: london.jpg 可以通過(guò) London.jpg 或 london.jpg 訪問(wèn)。

          你必須保持統(tǒng)一的風(fēng)格,我們建議統(tǒng)一使用小寫(xiě)的文件名。

          如您還有不明白的可以在下面與我留言或是與我探討QQ群308855039,我們一起飛!

          . PSR是什么?

          PSR是一套代碼編寫(xiě)規(guī)范,用于約束代碼風(fēng)格。以前沒(méi)有規(guī)范的時(shí)候大家都是按照自己的習(xí)慣來(lái)書(shū)寫(xiě)代碼,但每個(gè)人風(fēng)格不一樣,你的代碼在別人看來(lái)就是很不爽。而且會(huì)導(dǎo)致許多問(wèn)題:
          function 函數(shù)名是否駝峰命名,
          花括號(hào){}是否換行寫(xiě),
          是該寫(xiě)注釋呢還是不寫(xiě)
          變量名是大寫(xiě)還是小寫(xiě),
          一個(gè)php文件中是一個(gè)類好還是允許有多個(gè)
          所以PSR-[0-4]規(guī)范就應(yīng)運(yùn)而生,大家都共同遵守,就沒(méi)有風(fēng)格差異了。
          PSR是由PHP-FIG這個(gè)組織發(fā)明的,F(xiàn)IG 是 Framework Interoperability Group(框架可互用性小組)的縮寫(xiě)。PSR是Proposing a Standards Recommendation(提出標(biāo)準(zhǔn)建議)的縮寫(xiě)。截止到目前為止,總共有5套PSR規(guī)范,分別是:

          PSR-0 (Autoloading Standard) 自動(dòng)加載標(biāo)準(zhǔn)
          PSR-1 (Basic Coding Standard) 基礎(chǔ)編碼標(biāo)準(zhǔn)
          PSR-2 (Coding Style Guide) 編碼風(fēng)格向?qū)?
          PSR-3 (Logger Interface) 日志接口
          PSR-4 (Improved Autoloading) 自動(dòng)加載的增強(qiáng)版,可以替換掉PSR-0了。
          

          2. 規(guī)范的使用和定義

          1. PSR-0規(guī)范

          PSR-0是第一套規(guī)范,主要用于規(guī)范自動(dòng)加載,不過(guò)現(xiàn)在已經(jīng)過(guò)時(shí)了,被PSR-4規(guī)范替代了。
          PSR-0強(qiáng)制性要求幾點(diǎn):

          1. 一個(gè)完全合格的namespace和class必須符合這樣的結(jié)構(gòu):“\< Vendor Name>(< Namespace>)*< Class Name>”
          2. 每個(gè)namespace必須有一個(gè)頂層的namespace("Vendor Name"提供者名字)
          3. 每個(gè)namespace可以有多個(gè)子namespace
          4. 當(dāng)從文件系統(tǒng)中加載時(shí),每個(gè)namespace的分隔符(\)要轉(zhuǎn)換成 DIRECTORY_SEPARATOR(操作系統(tǒng)路徑分隔符)
          5. 在類名中,每個(gè)下劃線(_)符號(hào)要轉(zhuǎn)換成DIRECTORY_SEPARATOR(操作系統(tǒng)路徑分隔符)。在namespace中,下劃線(_)符號(hào)是沒(méi)有(特殊)意義的。
          6. 當(dāng)從文件系統(tǒng)中載入時(shí),合格的namespace和class一定是以 .php 結(jié)尾的
          7. verdor name,namespaces,class名可以由大小寫(xiě)字母組合而成(大小寫(xiě)敏感的)
          

          第一條: 一個(gè)完全合格的namespace和class必須符合這樣的結(jié)構(gòu):“\< Vendor Name>(< Namespace>)*< Class Name>”

          假如我的文件路徑為Lib/Driver/Config.php,那么我的namespace的申明和使用為:

          申明:namespace \Lib\Driver;
          使用:use \Lib\Driver\Config;
          

          第二三條:每個(gè)namespace必須有一個(gè)頂層的namespace(”Vendor Name”提供者名字),每個(gè)namespace可以有多個(gè)子namespace

          namespace \Lib\Driver\Config->/path/to/vender/Lib/Driver/Config.php
          

          Lib就是頂層namespace,Driver就是子namespace/

          第四條:當(dāng)從文件系統(tǒng)中加載時(shí),每個(gè)namespace的分隔符()要轉(zhuǎn)換成 DIRECTORY_SEPARATOR(操作系統(tǒng)路徑分隔符)

          new \Lib\Driver\Config->轉(zhuǎn)換的目錄為/Lib/Driver/Config.php,替換反斜杠為目錄分隔符
          

          第五條:在類名中,每個(gè)下劃線(_)符號(hào)要轉(zhuǎn)換成DIRECTORY_SEPARATOR(操作系統(tǒng)路徑分隔符)。在namespace中,下劃線(_)符號(hào)是沒(méi)有(特殊)意義的

          \Lib\Driver\Class_Name->轉(zhuǎn)換為目錄為/Lib/Driver/Class/Name.php
          \Lib\Package_Name\Class_Name->轉(zhuǎn)換為目錄為/Lib/Package_Name/Class/Name.php
          

          目錄中的_就是下劃線,classname中的下劃線實(shí)際上會(huì)轉(zhuǎn)為成路徑分隔符。

          但這個(gè)規(guī)定在PSR-4中已經(jīng)取消了,不再需要轉(zhuǎn)換了。

          第六條:當(dāng)從文件系統(tǒng)中載入時(shí),合格的namespace和class一定是以 .php 結(jié)尾的

          加載的文件必須是.php結(jié)尾,既然使用php當(dāng)然是.php結(jié)尾了。不再像以前那樣有什么php3,php5

          第七條:verdor name,namespaces,class名可以由大小寫(xiě)字母組合而成(大小寫(xiě)敏感的)

          由于Liunx是區(qū)分大小寫(xiě)的,而windows是不區(qū)分大小寫(xiě)的,所以如果不注意大小寫(xiě)在win下正常開(kāi)發(fā),但是到了服務(wù)器上可能就無(wú)法正常執(zhí)行了。

          2. PSR-1規(guī)范

          要求:

          1. PHP源文件必須只使用 <?php 和 <?=這兩種標(biāo)簽。
          2. 源文件中php代碼的編碼格式必須是不帶字節(jié)順序標(biāo)記(BOM)的UTF-8。
          3. 一個(gè)源文件建議只用來(lái)做聲明(類(class),函數(shù)(function),常量(constant)等)或者只用來(lái)做一些引起副作用的操作(例如:輸出信息,修改.ini配置等),但不建議同時(shí)做這兩件事。
          4. 命名空間(namespace)和類(class) 必須遵守PSR-0標(biāo)準(zhǔn)。
          5. 類名(class name) 必須使用駱駝式(StudlyCaps)寫(xiě)法 (注:駝峰式(cameCase)的一種變種,后文將直接用StudlyCaps表示)。
          6. 類(class)中的常量必須只由大寫(xiě)字母和下劃線(_)組成。
          7. 方法名(method name) 必須使用駝峰式(cameCase)寫(xiě)法。
          

          第一條: PHP源文件必須只使用 <?php 和 <?=這兩種標(biāo)簽

          因?yàn)閜hp有4種標(biāo)簽形式,所以這里規(guī)定了使用哪一種,統(tǒng)一規(guī)范。

          第二條:源文件中php代碼的編碼格式必須是不帶字節(jié)順序標(biāo)記(BOM)的UTF-8

          windows筆記本默認(rèn)是會(huì)在文件頭部加入BOM頭的,會(huì)導(dǎo)致在服務(wù)器上輸出得很奇怪。
          國(guó)內(nèi)的中文編碼是GBK,UTF-8是國(guó)際通用編碼,不統(tǒng)一的話也會(huì)導(dǎo)致亂碼。

          第三條:一個(gè)源文件建議只用來(lái)做聲明(類(class),函數(shù)(function),常量(constant)等)或者只用來(lái)做一些引起副作用的操作(例如:輸出信息,修改.ini配置等),但不建議同時(shí)做這兩件事。

          不要在一個(gè)文件中又是定義函數(shù)又是修改系統(tǒng)配置的,一個(gè)文件只做一件事。

          // 副作用:修改了ini配置
          ini_set('error_reporting', E_ALL);
          // 副作用:載入了文件
          include "file.php";
          // 副作用:產(chǎn)生了輸出
          echo "<html>\n";
          // 聲明 function
          function foo()
          {
              // 函數(shù)體
          }
          

          分開(kāi)寫(xiě)

          // 聲明 function
          function foo()
          {
              // 函數(shù)體
          }
          
          // 副作用:修改了ini配置
          ini_set('error_reporting', E_ALL);
          
          // 副作用:載入了文件
          include "file.php";
          

          這樣就很整齊。

          第四條:命名空間(namespace)和類(class) 必須遵守PSR-0標(biāo)準(zhǔn)

          參見(jiàn)PSR-0標(biāo)準(zhǔn)

          第五條:類名(class name) 必須使用駱駝式(StudlyCaps)寫(xiě)法 (注:駝峰式(cameCase)的一種變種,后文將直接用StudlyCaps表示)。

          類名必須使用駝峰命名,大駝峰小駝峰都可以。

          <?php
          class BigHouse{
          }
          

          第六條:類(class)中的常量必須只由大寫(xiě)字母和下劃線(_)組成。

          <?php
          class Test{
              const USER_INFO='xx';
              const NAME='xx';
          }
          

          第七條:方法名(method name) 必須使用駝峰式(cameCase)寫(xiě)法。

          <?php
          class Test{
              public function getUserInfo(){}
          }
          

          總結(jié):雖然規(guī)范里沒(méi)有規(guī)定使用大駝峰還是小駝峰,不過(guò)我的開(kāi)發(fā)習(xí)慣是class name大駝峰,method name小駝峰

          3. PSR-2 規(guī)范

          PSR-2用于約束代碼風(fēng)格,代碼必須遵循PSR-1 中列出的所有規(guī)則。

          1. 源文件

          1. 文件末尾必須空一行。
          2. 必須使用Unix LF(換行)作為行結(jié)束符。
          3. 純PHP代碼源文件的關(guān)閉標(biāo)簽?>必須省略。

          2. 行

          1. 行長(zhǎng)不得有硬性限制。
          2. 行長(zhǎng)度的軟限制必須是 120 個(gè)字符;自動(dòng)樣式檢查器必須警告但不能在軟限制處出錯(cuò)。
          3. 行不應(yīng)超過(guò) 80 個(gè)字符;超過(guò)此長(zhǎng)度的行應(yīng)拆分為多行,每行不超過(guò) 80 個(gè)字符。
          4. 非空行的末尾不得有尾隨空格。
          5. 可以添加空行以提高可讀性并指示相關(guān)的代碼塊。
          6. 每行不得超過(guò)一個(gè)語(yǔ)句。

          3. 縮進(jìn)

          代碼必須使用 4 個(gè)空格的縮進(jìn),并且不得使用制表符進(jìn)行縮進(jìn)。現(xiàn)代編輯器都可以設(shè)置。

          注意:僅使用空格,而不是將空格與制表符混合使用,有助于避免差異、補(bǔ)丁、歷史記錄和注釋方面的問(wèn)題。空格的使用還可以輕松插入細(xì)粒度的子縮進(jìn)以進(jìn)行行間對(duì)齊。

          4. 關(guān)鍵字和 True/False/Null

          1. PHP關(guān)鍵字必須小寫(xiě)。
          2. PHP 常量true、false和null必須小寫(xiě)。

          5. 命名空間的使用和聲明

          1. 命名空間(namespace)的聲明后面必須有一行空行。
          2. 所有的導(dǎo)入(use)聲明必須放在命名空間(namespace)聲明的下面。
          3. 一句聲明中,必須只有一個(gè)導(dǎo)入(use)關(guān)鍵字。
          4. 在導(dǎo)入(use)聲明代碼塊后面必須有一行空行。
          <?php
          namespace Vendor\Package;//下面必須空一行
          
          use FooClass;//use放在namespace下面
          use BarClass as Bar;
          use OtherVendor\OtherPackage\BazClass;//use下面也要空一行
          
          // ... additional PHP code ...
          
          

          6. 類、屬性和方法

          1. 繼承(extends) 和實(shí)現(xiàn)(implement) 必須和 class name 寫(xiě)在一行,切花括號(hào)要換行寫(xiě)。
          <?php
          namespace Vendor\Package;
          
          use FooClass;
          use BarClass as Bar;
          use OtherVendor\OtherPackage\BazClass;
          
          //寫(xiě)在一行
          class ClassName extends ParentClass implements \ArrayAccess, \Countable
          {//花括號(hào)換行寫(xiě)
              // constants, properties, methods
          }
          
          

          implements有多個(gè)時(shí)可以寫(xiě)成多行,但要保證第一個(gè)必須在下一行。每行只能寫(xiě)一個(gè)接口,每行都要縮進(jìn)。

          <?php
          namespace Vendor\Package;
          
          use FooClass;
          use BarClass as Bar;
          use OtherVendor\OtherPackage\BazClass;
          
          class ClassName extends ParentClass implements
              \ArrayAccess,//第一個(gè)接口就要寫(xiě)在下一行,注意縮進(jìn)
              \Countable,
              \Serializable
          {
              // constants, properties, methods
          }
          
          1. 屬性必須聲明可見(jiàn)性,public還是private還是protected,不能省略。也不能使用var, var是php老版本中的什么方式,等用于public。屬性名稱不應(yīng)以單個(gè)下劃線為前綴來(lái)表示受保護(hù)或私有可見(jiàn)性。每個(gè)語(yǔ)句不能聲明多個(gè)屬性。
          <?php
          namespace Vendor\Package;
          
          class ClassName
          {
              public $foo=null;
          }
          
          1. 方法(method) ,必須 聲明其可見(jiàn)性,到底是 public 還是protected還是 private,不能省略。并且,花括號(hào){必須換行寫(xiě)。如果有多個(gè)參數(shù),第一個(gè)參數(shù)后緊接, 再加個(gè)空格,如果參數(shù)有默認(rèn)值,也要用左右空格分開(kāi)。
          <?php
          namespace Vendor\Package;
          
          class ClassName
          {
              public function fooBarBaz($arg1, &$arg2, $arg3=[])
              {
                  // method body
              }
          }
          

          參數(shù)列表可以分成多行,和接口多行一樣需要縮進(jìn)。參數(shù)多行時(shí)做花括號(hào)不用換行寫(xiě),但是要在右括號(hào)后空一格。如下:

          <?php
          namespace Vendor\Package;
          
          class ClassName
          {
              public function aVeryLongMethodName(
                  ClassTypeHint $arg1,
                  &$arg2,
                  array $arg3=[]
              ) {
                  // method body
              }
          }
          
          1. 當(dāng)用到抽象(abstract)和終結(jié)(final)來(lái)做類聲明時(shí),它們必須放在可見(jiàn)性聲明 (public 還是protected還是 private)的前面。而當(dāng)用到靜態(tài)(static)來(lái)做類聲明時(shí),則必須放在可見(jiàn)性聲明的后面。
          <?php
          namespace Vendor\Package;
          
          abstract class ClassName
          {
              protected static $foo; //static修飾符放到可見(jiàn)性聲明后面
          
              abstract protected function zim();//abstract 放到前面
          
              final public static function bar()//final放到前面
              {
                  // method body
              }
          }
          
          1. 函數(shù)調(diào)用時(shí),函數(shù)名稱與左括號(hào)之間不得有空格,左括號(hào)后不得有空格,右括號(hào)前不得有空格。在參數(shù)列表中,每個(gè)逗號(hào)前不得有空格,每個(gè)逗號(hào)后必須有一個(gè)空格。參數(shù)列表可以分成多行,其中每個(gè)后續(xù)行縮進(jìn)一次。這樣做時(shí),列表中的第一項(xiàng)必須在下一行,并且每行必須只有一個(gè)參數(shù)。
          <?php
          bar();
          $foo->bar($arg1);
          Foo::bar($arg2, $arg3);
          $foo->bar(
              $longArgument,
              $longerArgument,
              $muchLongerArgument
          );
          

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

          1. 控制結(jié)構(gòu)就是if,switch這種流程控制。一般規(guī)則如下:
          2. 控制結(jié)構(gòu)關(guān)鍵字后必須有一個(gè)空格
          3. 左括號(hào)后不能有空格
          4. 右括號(hào)前不能有空格
          5. 右括號(hào)和左大括號(hào)之間必須有一個(gè)空格
          6. 結(jié)構(gòu)體必須縮進(jìn)一次
          7. 右大括號(hào)必須在正文之后的下一行

          1. if,elseif,else寫(xiě)法:

          <?php
          if ($expr1) {
              // if body
          } elseif ($expr2) {
              // elseif body
          } else {
              // else body;
          }
          

          elseif應(yīng)該連著寫(xiě) 不要寫(xiě)成else if,要看著像一個(gè)單詞。

          2. switch,case寫(xiě)法:

          <?php
          switch ($expr) {//括號(hào)前后都要有空格
              case 0:
                  echo 'First case, with a break';
                  break;//break要和上一行對(duì)齊
              case 1:
                  echo 'Second case, which falls through';
                  //沒(méi)有break語(yǔ)句的要寫(xiě)注釋no break
                  // no break
              case 2:
              case 3:
              case 4:
                  echo 'Third case, return instead of break';
                  return;
              default:
                  echo 'Default case';
                  break;
          }
          

          3. while,do while

          <?php
          while ($expr) {
              // structure body
          }
          
          do {
              // structure body;
          } while ($expr);
          

          4. for,foreach

          <?php
          for ($i=0; $i < 10; $i++) {
              // for body
          }
          
          foreach ($iterable as $key=> $value) {
              // foreach body
          }
          

          5. try,catch

          <?php
          try {
              // try body
          } catch (FirstExceptionType $e) {
              // catch body
          } catch (OtherExceptionType $e) {
              // catch body
          }
          

          8.閉包

          1. 閉包必須在function關(guān)鍵字后用空格聲明,關(guān)鍵字前后用空格聲明use
          2. 左大括號(hào)必須在同一行上,右大括號(hào)必須在正文之后的下一行。
          3. 參數(shù)列表或變量列表的左括號(hào)后不得有空格,參數(shù)列表或變量列表的右括號(hào)前不得有空格。
          4. 在參數(shù)列表和變量列表中,每個(gè)逗號(hào)前不能有一個(gè)空格,每個(gè)逗號(hào)后必須有一個(gè)空格。
          5. 具有默認(rèn)值的閉包參數(shù)必須放在參數(shù)列表的末尾。
          6. 參數(shù)列表和變量列表可以分成多行,其中每個(gè)后續(xù)行縮進(jìn)一次。這樣做時(shí),列表中的第一項(xiàng)必須在下一行,并且每行必須只有一個(gè)參數(shù)或變量
          7. 當(dāng)輸入的參數(shù)列表(無(wú)論是參數(shù)還是use的變量)被分成多行時(shí),右括號(hào)和左括號(hào)必須放在它們自己的一行上,它們之間有一個(gè)空格。
          8. 請(qǐng)注意,當(dāng)該函數(shù)或方法直接將閉包用作參數(shù)時(shí),格式化規(guī)則也適用。
          <?php
          $closureWithArgs=function ($arg1, $arg2) {
              // body
          };
          
          $closureWithArgsAndVars=function ($arg1, $arg2) use ($var1, $var2) {
              // body
          };
          
          
          //參數(shù)列表格式化
          $longArgs_noVars=function (
              $longArgument,
              $longerArgument,
              $muchLongerArgument
          ) {
              // body
          };
          
          $noArgs_longVars=function () use (
              $longVar1,
              $longerVar2,
              $muchLongerVar3
          ) {
              // body
          };
          
          $longArgs_longVars=function (
              $longArgument,
              $longerArgument,
              $muchLongerArgument
          ) use (
              $longVar1,
              $longerVar2,
              $muchLongerVar3
          ) {
              // body
          };
          
          $longArgs_shortVars=function (
              $longArgument,
              $longerArgument,
              $muchLongerArgument
          ) use ($var1) {
              // body
          };
          
          $shortArgs_longVars=function ($arg) use (
              $longVar1,
              $longerVar2,
              $muchLongerVar3
          ) {
              // body
          };
          
          //閉包作為參數(shù)傳入
          $foo->bar(
              $arg1,
              function ($arg2) use ($var1) {
                  // body
              },
              $arg3
          );
          

          4. PSR-3規(guī)范

          PSR-3規(guī)范是日志庫(kù)的通用接口,一般框架都幫我們做好了,了解即可。官網(wǎng)文檔

          5. PSR-4規(guī)范

          PSR-4也是自動(dòng)加載規(guī)范,用來(lái)取代PSR-0的。

          1. 廢除了PSR-0中就是目錄分割符的寫(xiě)法,下劃線在完全限定類名中是沒(méi)有特殊含義了。
          2. 類文件名要以 .php 結(jié)尾。
          3. 類名必須要和對(duì)應(yīng)的文件名要一模一樣,大小寫(xiě)也要一模一樣。

          總結(jié):

          psr-0,psr-4是自動(dòng)加載規(guī)范,psr-1,psr-2是代碼風(fēng)格規(guī)范,psr-3是日志庫(kù)接口。
          平常工作中盡量使用psr-1,psr-2規(guī)范來(lái)規(guī)范我們的代碼風(fēng)格。

          頁(yè)制作概述

          • HTML是WEB頁(yè)面的描述性語(yǔ)言
          • CSS則是為HTML制定樣式的機(jī)制
          • JavaScript是具有交互性Web設(shè)計(jì)最佳選擇
          • CSS和JavaScript 是都可以獨(dú)立編寫(xiě)的文本文件,還有PHP都可以嵌入在HTML中應(yīng)用

          HTML基礎(chǔ)

          • HTML(Hypertext Marked Language)
          • 文件的后綴名.html 或 .htm
          • Hypertext可以在文件中標(biāo)識(shí)圖片、鏈接、表格、文本等。
          • Marked <或>以及字符串組成 <img><p></p>
          • 是一種編程語(yǔ)言
          • 瀏覽器解釋的語(yǔ)言

          CSS基礎(chǔ)

          • CSS (Cascading style sheets)
          • 是一種用來(lái)表現(xiàn)HTML樣式的語(yǔ)言
          • 它不能獨(dú)立使用,沒(méi)有HTML就沒(méi)有CSS
          • 定義網(wǎng)頁(yè)的外觀和布局(字體、背景、文本、位置、邊緣、列表及其它)
          • 也是用瀏覽器解釋的語(yǔ)言

          HTML語(yǔ)法

          • 元素:是一整體,是一對(duì)象
          • <標(biāo)記名> </標(biāo)記名> 成對(duì)的標(biāo)記,也稱為容器
          • 標(biāo)記中可以嵌套其它的標(biāo)記
          • <br /> <hr />
          • <a href=“www.xsphp”><b>地址</b></a>
          • 使用標(biāo)記來(lái)描述元素的
          • HTML文檔就是由元素和標(biāo)記組成的文件

          HTML語(yǔ)法(二)

          • HTML標(biāo)簽屬性
          • <tag> content</tag>
          • <tag><tag2>content</tag2></tag>
          • <tag />
          • <tag pro=“value” pro2=“value2”>
          • content
          • </tag>
          • 屬性:在標(biāo)記中使用 [屬性=屬性值]
          • 多個(gè)屬性使用空格分開(kāi)
          • 屬性的值(不管什么類型)可以使用單引號(hào)、雙引號(hào)、不加引號(hào)(使用雙引號(hào))
          • <font color=“red” size=“7”>
          • 屬性是對(duì)標(biāo)記功能的擴(kuò)展或形為的修飾,每個(gè)屬性幾乎都是可選。

          HTML語(yǔ)法(三)

          • HTML標(biāo)記和屬性名都是不區(qū)分大小寫(xiě)的
          • HTML文檔注釋 <!-- 注釋內(nèi)容 -->
          • 在注釋中不能再有注釋
          • 在注釋掉的標(biāo)記之后,要保證還是一個(gè)結(jié)構(gòu)完好的文檔

          HTML語(yǔ)法(四)

          • HTML的代碼格式
          • 任何回車或空格在源代碼中都不起作用
          • 使用回車或空格進(jìn)行代碼排版

          HTML語(yǔ)法(五)

          • HTML字符實(shí)體
          • 三部分:
          • 以&開(kāi)頭
          • 一個(gè)實(shí)體名或是使用#號(hào)和一個(gè)體編號(hào)
          • 以分號(hào);結(jié)束
          • < < <
          • > > >

          HTML語(yǔ)法(六)

          • HTML顏色的設(shè)置
          • 設(shè)置顏色時(shí)可以是一個(gè)關(guān)鍵字或RGB的數(shù)字格式
          • White black blue ,gray green, red yellow
          • #FF (0-255)
          • #FF00BB(rgb) red green blue

          主站蜘蛛池模板: 韩国精品一区二区三区无码视频 | 熟妇人妻系列av无码一区二区| 亚洲欧洲无码一区二区三区| 99精品国产一区二区三区2021| 日韩人妻一区二区三区蜜桃视频| 精品一区二区三区波多野结衣| 一本一道波多野结衣一区| 国产人妖视频一区在线观看| 综合久久一区二区三区| 四虎在线观看一区二区| 无码国产伦一区二区三区视频 | 91视频一区二区| 久久国产午夜精品一区二区三区| 亚洲一区AV无码少妇电影| 亚洲色精品aⅴ一区区三区| 天美传媒一区二区三区| 99久久精品午夜一区二区| 久久国产精品一区免费下载| 精品福利一区3d动漫| 3D动漫精品啪啪一区二区下载| 午夜视频久久久久一区 | 精品国产亚洲一区二区三区在线观看 | 人妻少妇精品一区二区三区| 高清一区高清二区视频| 国产福利无码一区在线| 国产精品视频一区国模私拍 | 国产精品一区二区不卡| 亚洲午夜精品一区二区公牛电影院| 日本免费精品一区二区三区| 亚洲一区二区三区丝袜| 人妻精品无码一区二区三区| 日韩视频在线一区| 无码人妻一区二区三区免费视频| 色综合视频一区二区三区 | 人妻无码一区二区三区免费| 久久国产精品免费一区二区三区| 无码人妻一区二区三区精品视频 | 国产美女一区二区三区| 一本大道在线无码一区| 国产免费无码一区二区| 国模大尺度视频一区二区|