日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

【ThinkPHP】实例化模型的方法

發布時間:2023/12/10 php 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【ThinkPHP】实例化模型的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

歡迎大家訪問我自己架的博客站點?碼廄技術博客!

1、實例化一個Model

function D($name='', $app='') {
static $_model = array();
if (empty($name))
return new Model;
if (empty($app))
$app = C('DEFAULT_APP');
if (isset($_model[$app . $name]))
return $_model[$app . $name];
$OriClassName = $name;
if (strpos($name, '.')) { ? ? ?? // 確認Model類文件名是不是aaa.bbb.ccc結構
$array = explode('.', $name);
$name = array_pop($array); // 對于類似aaa.bbb.ccc結構文件名的Model類,只取到第一節
$className = $name . 'Model';
import($app . '.Model.' . implode('.', $array) . '.' . $className);
} else {
$className = $name . 'Model';
import($app . '.Model.' . $className);
}
if (class_exists($className)) {
$model = new $className();
} else {
$model = new Model($name);
}
$_model[$app . $OriClassName] = $model;
return $model;
}

2、實例化一個沒有模型文件的Model

function M($name='', $class='Model') {
static $_model = array();
if (!isset($_model[$name . '_' . $class]))
$_model[$name . '_' . $class] = new $class($name);
return $_model[$name . '_' . $class];
}

3、Model類構造函數
public function __construct($name='',$connection='') {
// 模型初始化
$this->_initialize();
// 獲取模型名稱
if(!empty($name)) {
$this->name = $name;
}elseif(empty($this->name)){
$this->name = $this->getModelName();
}
// 數據庫初始化操作
// 獲取數據庫操作對象
// 當前模型有獨立的數據庫連接信息
$this->db(0,empty($this->connection)?$connection:$this->connection);
// 設置表前綴
$this->tablePrefix = $this->tablePrefix?$this->tablePrefix:C('DB_PREFIX');
$this->tableSuffix = $this->tableSuffix?$this->tableSuffix:C('DB_SUFFIX');
// 字段檢測
if(!empty($this->name) && $this->autoCheckFields) $this->_checkTableInfo();
}

總結:

  • 避免重復加載一個模型,即,為了對同一個模型只實例化一次,兩種方法中都使用了靜態數組變量做實例化記錄。
  • D方法的返回結果有三種:name為空則返回空模型實例;已經實例化就返回實例;載入相應模型文件并返回實例。其中載入模型返回實例的具體操作分為兩步:第一步,根據參數確認模型文件目錄并載入模型文件。第二步,判斷類是否已經存在,即是否加載成功,也就是說模型文件是否存在規定目錄,然后使用加載模型文件或模型基類實例化模型,最后返回實例。
  • M方法就是返回一個已經存在的實例或者返回一個新的(Model或者其他模型類)實例。
  • 轉載于:https://www.cnblogs.com/catroll/archive/2011/11/23/model_of_thinkphp.html

    總結

    以上是生活随笔為你收集整理的【ThinkPHP】实例化模型的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。