標籤:筆記
void 常用在定義function時,function後的()內沒有參數的時候。(在語言中建議這樣使用,以保持其規範性)
try{}
catch{}是異常的普遍表示方式,但它並不是唯一的,比如PDO就有其自己的異常表達方式。
Instanceof在定義class時,代表一個判斷,如A instanceof B,就帶表判斷A是不是的B執行個體(或對象),這種書寫方式比賦予一個靜態變數null,再在if裡判斷這個靜態變數是不是空要更加規範。
C(create)R(retrieve讀)U(update)D(delete)特指增刪改查,全網通用。
PDO預先處理的文法舉例如:650) this.width=650;" src="https://s2.51cto.com/wyfs02/M02/8C/E1/wKioL1h8vrOgspnzAABxoIDNUKw416.jpg-wh_500x0-wm_3-wmp_4-s_410938624.jpg" title="11.jpg" alt="wKioL1h8vrOgspnzAABxoIDNUKw416.jpg-wh_50" />
這其中,$c,bindParam後面的兩個值,前一個只能是欄位名,後一個只能是一個被定義了的變數,而不能直接跟欄位值。
為了看著簡單,最後定義預先處理內容的幾行完全可以寫為數組的形式,方便調用。
(增刪改都用這種方式,但查的時候應該有資料返回,因此我們應該讓查出來的資料輸出到瀏覽器上,用fetch的方法。)
貼圖如下:
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M00/8C/E4/wKiom1h8vwjjrOTGAAA1g8CdXtM962.jpg-wh_500x0-wm_3-wmp_4-s_3255100028.jpg" title="22.jpg" alt="wKiom1h8vwjjrOTGAAA1g8CdXtM962.jpg-wh_50" />
需要聲明的是,fetchALL雖然好用,可以瞬間輸出所有查到的東西,但一般情況下盡量別用,因為它會一次性查詢所有資料,若資料過大,會佔用極大的資源。
我了個丟:學習一個新東西並不難,難的是,學習新東西時,要將其寫成一個可以儲存為模板的函數……方便隨時調用,隨時修改的函數。
建立模板函數的時候,第一步是想清楚此函數需要多少個參數,要執行什麼樣的功能,功能上是否嚴謹,第二步是想辦法實現它。
執行第二步的痛點在於,函數的參數是固定的,但參數的類型是多變的,建立的模板應該方便修改,而不是每次都需要手動輸入許多東西(比如單雙引號),模板函數的目標是簡單化,並且不出錯。所以在字串拼接、調取某個數組的下標、下標後的值時,一定要處理好其中的關係。
如:
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M00/8C/E4/wKiom1h8v5jwvPsMAACwS6Soa_c896.jpg" title="33.jpg" alt="wKiom1h8v5jwvPsMAACwS6Soa_c896.jpg" />
函數參數如id、name等,後面的值是不一樣的類型,需要用到字串和數組函數,將不合格內容轉化為整形或字串,並且讓函數自動加上引號或冒號、逗號等,規範其格式。
用Parent::方法名()可以在繼承了父類屬性的子類內調用父類的方法,就算在子類裡面,父類的方法已經被重寫,也可以調用原始的父類方法,但不能用此方法調用父類的屬性,會出現致命錯誤。
當子類重寫父類的方法時,子類的許可權不能比父類的許可權更嚴格(看個人理解),也就是說,若父類的方法許可權是public,那麼子類的方法就不能是protected和private,只能是public,而反過來,若父類的方法是private,那麼子類就可以是protected、private和public。若父類的方法是protected,那麼子類的方法就只能是protected和public。
魔術方法的特點:
以兩個底線開頭;
在某種情況下被自動調用;
方法名是固定的;
有固定的作用;
私人屬性專用:
__set():在外部為某個類的私人屬性重新賦值時被自動調用,固定作用是,接收所有被重新賦值的私人屬性的變數名和值,(一條代碼,接收所有,但是分開調用。)常用在報告錯誤上。
__get():在外部要調用查看某個類的私人屬性時被自動調用,固定作用是,在外部想要查看某個類的私人屬性時,反饋想要自訂的值。常用在對使用者的警告上。
__inset():當外部使用inset(私人屬性)時被調用。(意思是當外部使用public屬性時不會被調用生效。)
__unset():當外部使用unset(私人屬性)時被調用。它用來接收這個私人屬性,並且根據自訂的方法在內部對私人屬性進行處理(一般情況下是刪除這個私人屬性)。(與inset相同,當外部使用public屬性時不會被調用生效。)
__call(): 當外部調用類中不存在(或非public許可權修飾)的方法時被調用,用來接收這個方法名和所有參數。一般來說有兩個參數,前一個是方法名,後一個是數組。
__tostring():當執行個體化的對象被當做字串使用的時候被調用。且非常嚴格,只對字串有效。
__autoload():當執行個體化一個不存在的類時,此方法被自動調用。它可以自動載入要執行個體化的類。(這樣就可以知道使用者的請求,並且做出對應的判斷。)需要聲明的是,autoload函數不能定義在類的內部,而是必須放在外部。常用來引入外部檔案,自動調取使用者所要求的類。
__clone():當使用clone結構去建立一個新對象時,自動載入要執行個體化的類。用來為clone結構添加其他動作,如果將其加在單利裡面,可以屏蔽複製。
clone:沒有兩道底線,也沒有括弧,甚至沒有參數,用於複製,快速複製一個對象,新複製出來的對象與它的模板相等不全等,它可以瞬間複製一個單例出來,破壞單例“只允許執行一次”的規則。
serialize:將對象儲存為檔案。(儲存為檔案的原因是,資源內的任何東西都需要以一個檔案類型來在網上傳輸。)與之對應的有unserialize,可以將儲存成檔案類型的類對象或者類再還原回來。這個方法稱為“串化”和“反串化”。
namespace(命名空間):為了避免出現一個檔案夾內不能建立兩個同名變數(類、常量等)的問題,用代碼建立一個虛擬檔案夾。
兩個檔案夾內的同名檔案在運行和調用的時候互不影響,且存在與真實建立檔案夾一樣的父子關係,需要聲明的是,Windows識別/和\,它認為正斜線和反斜線都是檔案夾的分割方式,但linux系統只識別\,不識別/。
用use可以調用某個命名空間,後面直接加上空間名就可以,也可以為其取別名,在use後直接加as。
而類似 new \first\c();的稱作完全限定或絕對限定。
而前面不加類似於根的\的方法,稱為相對新丁,非完全限定。
不加任何修飾的,成為非限定或不限定。
命名空間的一個顯著作用是:執行自動載入。
在第一個命名空間的上方,不允許有任何的輸出(包括空格、斷行符號、div等)。
魔法常量(區分大小寫):
__LINE__:當前所在的行數。
__FILE__:當前的檔案名稱(包含完整路徑)。
__DIR__:當前檔案所在的路徑。
__FUNCTION__:擷取當前的函數名。
__METHOD__:擷取當前的方法名。
__NAMESPACE__:擷取當前所在命名空間名。
__CLASS__:擷取當前的類名。
最後來個捲軸:
+====================+
|| M ||
|| ||
|| D ||
|| ||
|| Z ||
|| ||
|| Z ||
|| ||
|| ||
|| ||
|| ||
|| ||
+====================+
本文出自 “12244243” 部落格,請務必保留此出處http://12254243.blog.51cto.com/12244243/1892401
依然上傳一些筆記。