PHP編碼規範

來源:互聯網
上載者:User

標籤:php

PHP編碼規範


每行代碼的字元數應控制在80以內

對於只含有PHP代碼的檔案,將檔案結尾標記忽略

縮排應該能都反映出代碼的邏輯結果,盡量使用四個空格


資料類型


資料類型是具有相同特性的一組資料的統稱

資料類型用來區分不同的資料;由於資料在儲存時所需要的容量各不相同,不同的資料就必須要分配不同大小的記憶體空間來儲存,所以就要將資料劃分成不同的資料類型。


在PHP中只要涉及到資料的地方都會涉及到資料類型。如變數、函數的參數及傳回值、對象的屬性等地方都會涉及到資料類型。


PHP支援8種未經處理資料類型和三種偽類型。

其中未經處理資料類型包括:

-標量類型(Scalar Type)

boolean(布爾型)

Integer(整型)

float(浮點型)

string(字串)

-複合類型(Compound Type)

array(數組)

object(對象)

-特殊類型(Special Type)

resource(資源)

NULL(空值)


整型


整型可以使用十進位、十六進位、八進位或者二進位表示

-位元字,數字前必須加上0b

-八位元字,數字前必須加上0

-十六進位數字,數字前必須加上0x

如果向八進位傳遞了一個非法數字,則後面其餘數字都會被省略


整型的儲存範圍

整型的字長和平台有關

通常最大值是大約二十億(32位有符號)

64位平台下的最大值通常是大約9e18

<?phpecho PHP_INT_MAX;  //輸出Integer的最大值echo PHP_INT_SIZE; //輸出Integer值的字長


輸出語句

輸出一個或多個字串可以通過echo語句實現

echo語句的文法結構

void echo (string $arg1 [,string $...])

<?phpecho ("Hello World");     //輸出 Hello Worldecho "Hello World";      //輸出 Hello Worldecho "Hi," , "Hello World"; //輸出 Hi,Hello Worldecho 3               //輸出 3,數字3已經被轉換成字串“3”

如果要給echo傳遞多個參數,不能使用小括弧

所有輸出的參數都將轉換成字串類型

如果要列印一個或多個運算式的結構資訊,包括運算式的類型與值,可以通過var_dump函數實現。

var_dump函數的文法結構:

void var_dump(mixed $expression [,mixed $...])

<?php

var_dump(‘php‘); //輸出string(3)“PHP”var_dump(4); //輸出int(4)


使用函數


函數是一個被命名的獨立程式碼片段。函數用於執行特定任務,並可以給調用它的程式返回一個值。

函數類型有

-系統函數,由PHP核心或特定的函數庫提供的函數

-自訂函數,由使用者根據需要自訂的函數

調用函數的方法

傳回值 函數名([參數,...])


整型溢出


如果數字超出integer的範圍,將會被解釋為float

如果運算結果超出integer範圍,也會返回float

<?php$d = 2147483649;var_dump($d); //輸出float(2147483649)$n = 2147483640;var_dump($n); //輸出int(2147483640)$t = 88;var_dump($t); //輸出int(88)$f = $n + $t;var_dump($f); //輸出float(2147483728)


浮點型


浮點型(也叫浮點數float,雙精確度數double或實數real)

浮點型(float)資料的字長和平台相關

通常最大值是1.8e308並具有14位十進位數位精度


布爾型


布爾型使用關鍵字TRUE/FALSE表示。兩者不區分大小寫

布爾值結果通常會被傳遞給控制流程程式語句。

<?php$isHot = true;$isDeleted = false;var_dump($isHot); //輸出bool(true)var_dump($isDeleted); //輸出bool(false)


字元型


字串string就是由一系列的字元組成,其中沒個字元等同於一個位元組。這意味著PHP只能支援256的字元集,因此不支援Unicode。

string最大可以達到2GB。


字串的表達方式


單引號

雙引號

Heredoc文法結構

Nowdoc文法結構

<?php$str1 = ‘PHP‘;$str2 = "String";var_dump($str1); //輸出 string(3)“php”var_dump($str2); //輸出 string(6)“String”


轉義符


屬性值 說明
\n 換行
\r 斷行符號
\t 水平定位字元
\v 垂直定位字元
\f 換頁符
\\ 反斜線
\$ 貨幣符號
\‘ 單引號
\" 雙引號


字串類型


聲明字元創類型變數,然後輸出

聲明帶有轉義符的字串類型變數,然後輸出,並且通過查看瀏覽器原始碼查看結果


轉義符的引號與HTML實體的引號

PHP代碼中引號如果需要直接列印到瀏覽器,那麼雙引號/單引號就必須採用HTML實體表示;如果引號需要在瀏覽器的原始碼中出現,那麼就必須採用轉義符


單引號和雙引號的區別

單引號只能解析\‘和\\;雙引號可以解析所有轉義符。

單引號內變數不能被解析;雙引號內的變數可以被解析。

建議字串盡量使用單引號的表示方式。這樣可以提高解析速度


花括弧文法

<?php$str = ‘app‘;echo "<p> The $str is the abbreviation of Application</p>";echo "<p> I bought an $strle</p>";

結果

The app is the abbreviation of Application

I bought an 

當PHP解析器遇到一個貨幣符號($)時,解析器盡量組合多的標識以形成合法的變數名。可以用花括弧來明確變數名稱的界線。

正確寫法

<?php$str = ‘app‘;echo "<p> The {$str} is the abbreviation of Application</p>";echo "<p> I bought an ${str}le</p>";


string中的字元可以通過一個從0開始的下標,用花括弧包含對應的數位形式來訪問和修改。

<?php

$str = ‘application‘;echo $str{4}; //輸出i$str{4} = ‘t‘;echo $str{4}; //輸出t

用超出字串長度的下標寫入將會拉長該字串並以空格填充。非認證類型下標會被轉換成整數。


Heredoc文法結構

<?php$str = <<< EOD Example of string spanning multiple lines using heredoc syntaxEOD;?>

結束時所使用的標識符必須在該行的第一列。

結束標識符這行除分號外,不能包含其他字元。

Heredoc結構可以解析轉義符。

Heredoc結構內的變數可以被解析。


Nowdoc文法結構

<?php$str = <<< ‘EOD‘ Example of string spanning multiple lines using heredoc syntaxEOD;?>

結束時所使用的標識符必須在該行的第一列。

結束標識符這行除分號外,不能包含其他字元。

Nowdoc結構不進行解析操作


複合類型

允許將多個相同類型的項聚集起來,表示為一個實體。

複合類型可以儲存多個資料項目


複合類型的分類

數組(Array)

對象(Object)

<?php$arr = array(34,67,8,25); //數組$obj = new stdClass();   //對象echo gettype($arr);     //輸出arrayecho gettype($obj);     //輸出object?>


特殊類型

提供某種特殊用途的類型,無法歸入其他任何類型

特殊類型包括

-空值(NULL)

-資源(Resource)


空值

NULL表示一個變數沒有值

在下列情況之一的變數被認為是NULL

-沒有賦值的變數

-變數賦值為NULL

-使用unset函數銷毀的變數

<?phpvar_dump($username); //輸出NULL$password = null;var_dump($password); //輸出NULL$age = 26;unset($age);var_dump($age);    //輸出NULL


資源

一種特殊的資料類型,用來表示一種PHP的外部資源,例如資料庫訪問,檔案訪問、目錄操作、映像操作等。

程式員將永遠無法直接聲明這種類型的變數,必須通過專門的函數訪問。


偽類型

本質上來說並不是真正的資料類型

為說明某些情況而“自封”的資料類型,包括:

-混合(mixed)

-數值(number)

-回呼函數(callback)

-void


混合

mixed說明參數/傳回值可以是多種不同類型

mixed不一定是所有資料類型

例如:gettype()函數可以接收所有類型的參數;str_replace()函數可以接收字串類型和數群組類型的參數。

<?php$i=3;$n=0.5;$t=‘1‘;echo gettype($i);echo gettype($n);echo gettype($t);


數值

numbet說明參數/傳回值可以是integer或者float

例如:pow()函數可以接受整型或浮點型的參數;並且傳回值的資料類型也可能為整數或浮點數。

pow函數用於實現冪運算

文法:number pow(nukber $base,number $exp)

<?phpvar_dump(pow(2,8));var_dump(pow(2.5,2));


回呼函數

回呼函數以接受使用者自訂的函數作為參數。還可以是一個對象的方法,包括靜態類的方法。


void

void作為參數列表意味著函數不接受任何參數

void作為傳回型別意味著函數的傳回值是無用的

例如:date_default_timezone_get()函數不接受任何參數

date_default_timezone_get()函數用於擷取日期時間函數所使用的時區

文法:string date_default_timezone_get(void)

<?phpecho date_default_timezone_get();


資料類型總匯

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/85/7E/wKiom1elflKg3_LBAACq69VqUZA579.png" title="資料類型.png" alt="wKiom1elflKg3_LBAACq69VqUZA579.png" />


變數處理函數


變數處理函數屬於PHP核心的組成部分。也就意味這隻要Web伺服器支援PHP即支援變數處理函數


is_int、is_integer、is_long函數可以檢測變數是否是整數

文法:bool is_int(mixed $var)

<?phpvar_dump(is_int(23));  //bool(true)var_dump(is_int("23")); //bool(false)var_dump(is_int(23.5)); //bool(false)var_dump(is_int(NULL)); //bool(false)


變數處理函數還包括


is_float、is_double、is_real 檢測變數是否為浮點型

is_string 檢測變數是否為字串類型

is_bool、is_boolean 檢測變數是否為布爾型

is_scalar 檢測變數是否為標量類型

is_arry 檢測變數是否為數組

is_object 檢測變數是否為對象

is_null 檢測變數是否為空白值

is_resource 檢測變數是否為資源

is_numeric 檢測變數是否為數字或數字字串

is_callback 檢測變數是否為回呼函數


is_null、empty、isset的區別


is_null函數檢測變數是否為NULL。如果為NULL,返回TRUE,否則返回FALSE

文法:bool is_null(mixed $var)

empty函數檢測檢查一個變數是否為空白。如果變數是非空或非零的值,則empty()返回FALSE;否則,返回TRUE

文法:bool empty(mixed $var)

isset函數禦用檢測變數是否設定,並且不是NULL

文法:bool isset(mixed $var [,mixed $...])


運算式 gettype($n) is_null empty isset
$n NULL true true false
$n = ""; string false true true
$n = null; NULL true true false
$n = arrary(); array false true true
$n = true; boolean false false true
$n = false; boolean false true true
$n = "0"; string false true true
$n = 0; integer false true true









本文出自 “擎凇離雨癡木月” 部落格,請務必保留此出處http://kinrey.blog.51cto.com/10492082/1835376

PHP編碼規範

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.