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

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


輸出語句

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

echo語句的語法結構

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

<?php
echo ("Hello World");     //輸出 Hello World
echo "Hello World";      //輸出 Hello World
echo "Hi," , "Hello World"; //輸出 Hi,Hello World
echo 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 syntax
EOD;
?>

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

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

Heredoc結構可以解析轉義符。

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


Nowdoc語法結構

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

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

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

Nowdoc結構不進行解析操作


複合類型

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

複合類型可以存儲多個數據項


複合類型的分類

數組(Array)

對象(Object)

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


特殊類型

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

特殊類型包括

-空值(NULL)

-資源(Resource)


空值

NULL表示一個變量沒有值

在下列情況之一的變量被認爲是NULL

-沒有賦值的變量

-變量賦值爲NULL

-使用unset函數銷燬的變量

<?php
var_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)

<?php
var_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)

<?php
echo date_default_timezone_get();


數據類型總彙

wKiom1elflKg3_LBAACq69VqUZA579.png


變量處理函數


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


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

語法:bool is_int(mixed $var)

<?php
var_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_nullemptyisset
$nNULLtruetruefalse
$n = "";stringfalsetruetrue
$n = null;NULLtruetruefalse
$n = arrary();arrayfalsetruetrue
$n = true;booleanfalsefalsetrue
$n = false;booleanfalsetruetrue
$n = "0";stringfalsetruetrue
$n = 0;integerfalsetruetrue









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章