php雖然容易入門,但是要想深入,還是有些路要走的,今天我們就來聊聊php一些比較難理解的知識點。
● use
php從5.3.0開始引入了一個叫作命名空間的新特征,讓我們能夠定義相同的類和處理與第三方庫同名類的時候有了很好的解決方案,在一個命名空間里面能夠包括類、函數(shù)、接口和常量,有了命名空間以后,在其他地方需要使用命名空間時,需要使用use引入該命名空間或者為該命名空間定義一個別名再使用,這是use的第一種使用情況,特別注意的是,這里的use并沒有將其對應的文件加載進來。
在使用php的時候,我們發(fā)現(xiàn)有很多函數(shù)有一個回調函數(shù)的參數(shù),我們可以使用匿名函數(shù)(也叫閉包來實現(xiàn)),同時,我們知道在php的函數(shù)里面無法直接用外部的變量,那么在閉包里面要使用外面的變量,怎么辦呢?參考下面的例子,用use就可以做到,這是use的第二種用法。
至于use的第三種用法請看下面的Traits。
● Traits
我們知道,php不像C++一樣,是多繼承語言,它是一種單繼承語言,如果有時我們需要繼承多個類怎么辦?這個時候Traits就上場了,我們僅僅需要在類中用use聲明多個trait,這樣當前類中的同名方法覆蓋trait,而trait又覆蓋基類中的同名方法,屬性也是一樣的。
● 錯誤和異常的區(qū)別
不管是錯誤發(fā)生還是某種異常我們未捕獲,我們的程序都會出現(xiàn)問題,而且不管是錯誤還是未捕獲異常,二者的表現(xiàn)都是一樣的,導致我們對錯誤和異常的理解總是很模糊,其實異常就是理論上程序沒有問題,但是運行的時候,因為某些特殊的情況而終止了程序的運行,比如鏈接數(shù)據(jù)庫的操作,如果一切都好,那么我們應該可以正常的鏈接數(shù)據(jù)庫,但是當數(shù)據(jù)庫的可用連接數(shù)沒有了,或者無法鏈接數(shù)據(jù)庫,那么這個時候,如果沒有捕獲這個異常,肯定是會出錯的。