02-如何實例化模型

在ThinkPHP中,能夠無需進行任何模型定義。只有在須要封裝單獨的業務邏輯的時候,模型類纔是必須被定義的,所以ThinkPHP在模型上有不少的靈活和方便性,讓你無需由於表太多而煩惱。 根據不一樣的模型定義,咱們有幾種實例化模型的方法,下面來分析下什麼狀況下用什麼方法:php

一、實例化基礎模型(Model) 類 在沒有定義任何模型的時候,咱們可使用下面的方法實例化一個模型類來進行操做:spa

  1. //實例化User模型
  2. $User = new Model('User');
  3. //或者使用M()快捷方法實例化,和上面的方法是等效的
  4. $User = M('User');
  5. //執行其餘的數據操做
  6. $User->select();

這種方法最簡單高效,由於不須要定義任何的模型類,因此支持跨項目調用。缺點也是由於沒有自定義的模型類,所以沒法寫入相關的業務邏輯,只能完成基本的CURD操做。繼承

 

二、實例化用戶自定義模型(×××Model)類 這種狀況是使用的最多的,一個項目不可避免的須要定義自身的業務邏輯實現,就須要針對每一個數據表定義一個模型類,例如UserModel 、InfoModel等等。 定義的模型類一般都是放到項目的Lib\Model目錄下面。例如,get

  1. <?php
  2.     class UserModel extends Model{
  3.         public function getTopUser(){
  4.             //添加本身的業務邏輯
  5.              // ...
  6.         }
  7.     }

其實模型類還能夠繼承一個用戶自定義的公共模型類,而不是隻能繼承Model類。 要實例化自定義模型類,可使用下面的方式:io

  1. <?php
  2.     //實例化自定義模型
  3.     $User = new UserModel();
  4.     //或者使用D快捷方法
  5.     $User = D('User');
  6.     //執行具體的數據操做
  7.     $User->select();

D方法能夠自動檢測模型類,若是存在自定義的模型類,則實例化自定義模型類,若是不存在,則會實例化Model基類,同時對於已實例化過的模型,不會重複去實例化。 D方法還能夠支持跨項目和分組調用,須要使用:function

  1. //實例化Admin項目的User模型
  2. D('Admin://User')
  3. //實例化Admin分組的User模型
  4. D('Admin/User')
相關文章
相關標籤/搜索