php的一些易錯點

1.單引號與雙引號的區別
一般用單引號或雙引號標識一個字符串。單引號串與雙引號串,在PHP中的處理是不同的。雙引號中的內容可以被解釋並被替換,單引號串中的內容則被作爲普通字符處理。
例如:
  • $str=6;  
  • echo "str is $str\n";  
  • echo 'str is $str\n'; 
注:單引號中輸出的內容是“所見即所得”的,無論有無變量,都被當做普通字符原樣輸出。
說明:在定義簡單的字符串時,使用單引號是一個更加合適的處理方式。如果使用雙引號,php將花費一下時間來處理字符串的轉義和變量的解析。因此,建議在定義字符串時,如果沒有特別的要求應儘量使用單引號。

2.注意echo和print的區別
PHP中echo和print都是輸出的作用,但是兩者之間還是有細微的差別。echo輸出後沒有返回值,但print有返回值,當其執行失敗時返回flase。因此可以作爲一個普通函數來使用,例如執行$r = print "Hello World"; 變量$r的值將爲1。而且代碼中echo語句的運行效率要略快於print語句。

3.注意空字符串('')和NULL的區別
PHP中空字符串和NULL都是以值爲0存儲的,但是他們的類型並不一樣,前者是string,而後者是NULL,可見字符串('')、NULL值相等但類型不等。

4.分清==(等與)和===(全等與)的區別
兩者都屬於比較運算符,==(等於)只比較值是否相等,而===(全等於)則不但比較值是否相等,還會比較類型是否相等,它更爲嚴格。

5.分清self :: 和 this-> 的區別
在訪問PHP類中的成員變量或方法時,如果被引用的變量或者方法被聲明成const(常量)或者static(靜態屬性),那麼就必須使用域操作符::,而如果被引用的變量或者方法沒有被聲明成const或者static,那麼就使用指向操作符->。

6.require 與include的區別

引用文件的方法有兩種:require 及 include。兩種方式提供不同的使用彈性。

require的使用方法如require("MyRequireFile.php");。這個函數通常放在 PHP 程序的最前面,PHP 程序在執行前,就會先讀入 require 所指定引入的文件,使它變成 PHP 程序網頁的一部份。常用的函數,亦可以這個方法將它引入網頁中。

include使用方法如include("MyIncludeFile.php");。這個函數一般是放在流程控制的處理部分中。PHP 程序網頁在讀到 include 的文件時,纔將它讀進來。這種方式,可以把程序執行時的流程簡單化。

他們兩個的用途是完全一樣的,不一定非得哪個放在最前面哪個放在中間。他們最根本的區別在於錯誤處理的方式不一樣。

require一個文件存在錯誤的話,那麼程序就會中斷執行了,並顯示致命錯誤

include一個文件存在錯誤的話,那麼程序不會中端,而是繼續執行,並顯示一個警告錯誤。

以下爲補充:

(1). include有返回值,而require沒有。

(2). include()包括並運行指定文件 在處理失敗時include() 產生一個警告,被導入的程序代碼都會被執行,而且這些程序在執行的時候會擁有和源文件中呼叫到include()語句的位置相同的變量範圍。你可以導入同一個服務器中的靜態頁面。

(3). include_once()的作用和include()是幾乎相同的

唯一的差別在於include_once()會先檢查要導入的檔案是不是已經在該程序中的其它地方被導入過了,如果有的話就不會再次重複導入(這項功能有時候是很重要的,比方說要導入的裏面宣告了一些你自行定義好的函數,那麼如果在同一個程序重複導入這個文件,在第二次導入的時候便會發生錯誤訊息,因爲PHP不允許相同名稱的函數被重複宣告第二次)。

(4). require()會將目標文件的內容讀入,並且把自己本身代換成這些讀入的內容 在處理失敗時require() 則導致一個致命錯。

這個讀入並且代換的動作是在PHP引擎編譯你的程序代碼的時候發生的,而不是發生在PHP引擎開始執行編譯好的程序代碼的時候(PHP 3.0引擎的工作方式是編譯一行執行一行,但是到了PHP 4.0以後就有所改變了,PHP 4.0是先把整個程序代碼全部編譯完成後,再將這些編譯好的程序代碼一次執行完畢,在編譯的過程中不會執行任何程序代碼)。require()通常來導入靜態的內容,而include()則適合用導入動態的程序代碼。

(5). 如同include_once(),require_once()會先檢查目標文件的內容是不是在之前就已經導入過了,如果是的話,便不會再次重複導入同樣的內容。

(6). require是無條件包含也就是如果一個流程里加入require,無論條件成立與否都會先執行require。

(7). require通常放在PHP程序的最前面,PHP程序在執行前,就會先讀入require所指定引入的文件,使它變成PHP程序網頁的一部份。常用的函數,亦可以這個方法將它引入網頁中。

(8). include一般是放在流程控制的處理部分中PHP程序網頁在讀到include的文件時,纔將它讀進來。這種方式可以把程序執行時的流程簡單化。


發佈了43 篇原創文章 · 獲贊 98 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章