模型的實例化操作(重點)
模型雖然已經創建完成,但是由於模型的本質是一個類,類在使用的時候需要實例化操作。
5.1、普通實例化方法
普通實例化方法是指通過自己編寫代碼來new一個對象。
$obj = new 類名();
在控制器中定義一個方法來實例化模型,使用的是普通方式實例化:
創建部門控制器文件:
實例化代碼:
實例化結果:
5.2、快速實例化方法
上述的普通實例化方法雖然可以進行實例化操作,但是使用上比較麻煩,還需要考慮命名空間,所以ThinkPHP為了簡單、快速、高效開發,為我們提供了2個快速方法可以對模型進行實例化操作:
M方法和D方法。
D方法實例化:
$obj = D([‘模型名’]);
表達的含義:實例化我們自己創建的模型(分組/Model目錄中);如果傳遞了模型名,則實例化指定的模型,如果沒有指定或者模型名不存在,則直接實例化父類模型(Model.class.php)。
M方法實例化:
$obj = M([‘不帶前綴的表名’]);
表達的含義:直接實例化父類模型(Think目錄下的Model.class.php);如果指定了表名,則實例化父類模型的時候關聯指定的表;如果沒有指定表名(沒有傳遞參數)則不關聯表,一般用於執行原生的sql語句(M() -> query(原生的sql語句))。
案例:使用快速方法D和M方法對模型進行實例化操作。
實例化代碼:
經典面試題:
問:實例化方法中D方法和M方法有什么區別?
答:D方法是實例化自定義模型,如果自定義模型不存在,則實例化父類模型;M方法本身就是直接實例化父類模型。兩者的差異就是實例化的對象不一樣。
在后期開發的時候怎么去選擇是使用D方法還是M方法呢?
可以根據自身的情況,如果需要使用的操作父類中已經封裝好了,則可以直接實例化父類(使用M方法),如果父類中方法不能滿足我們的開發需要求,需要自己定義方法,則這個時候可以使用D方法實例化自定義模型。