我看到別人寫代碼的時候,直接用D("User")方法,我知道這個D方法是用來執行個體化自訂模型類的,但是我沒有在Model目錄中找到這個UserModel.class.php,請問那是怎麼回事?
回複內容:
我看到別人寫代碼的時候,直接用D("User")方法,我知道這個D方法是用來執行個體化自訂模型類的,但是我沒有在Model目錄中找到這個UserModel.class.php,請問那是怎麼回事?
沒有model就會執行個體化 系統基礎Model
function D($name = '', $layer = ''){ if (empty($name)) { return new Think\Model; } static $_model = array(); $layer = $layer ?: C('DEFAULT_M_LAYER'); if (isset($_model[$name . $layer])) { return $_model[$name . $layer]; } $class = parse_res_name($name, $layer); if (class_exists($class)) { $model = new $class(basename($name)); } elseif (false === strpos($name, '/')) { // 自動載入公用模組下面的模型 if (!C('APP_USE_NAMESPACE')) { import('Common/' . $layer . '/' . $class); } else { $class = '\\Common\\' . $layer . '\\' . $name . $layer; } $model = class_exists($class) ? new $class($name) : new Think\Model($name); } else { Think\Log::record('D方法執行個體化沒找到模型類' . $class, Think\Log::NOTICE); $model = new Think\Model(basename($name)); } $_model[$name . $layer] = $model; return $model;}
如果沒有UserModel.class.php也是可以執行的,不過你要做關聯模型就會報錯找不到這個關聯的模型,驗證這些都是要建立UserModel.class.php來才可以進行的,如果沒有這個UserModel.class.php你可以吧D當成M來使用