我會用App::objects('model')
作爲2.x(不知道這是什麼時候實現的)。
class AppController extents Controller {
private function _modelExists($modelName){
$models = App::objects('model');
return in_array($modelName,$models);
}
}
//Somewhere in your logic
if($this->_modelExists('SomeModel')){
//do model exists logic
} else {
//do other logic
}
*請注意,App::objects('model')
將不包含插件中的模型。你可以這樣做:
$models = array_merge(
App::objects('model'),
App::objects('MyPlugin.model')
);
你也可以做到這一點與純PHP如下
if(class_exists('SomeModel')){
//do model exists logic
} else {
//do other logic
}
// The pitfall of this approach, is that it will not assure
// that `SomeModel is a decedent of the `Model` class.
實際上它從來沒有空! 其AppModel如果無法找到該類。 你需要檢查App :: import(),它返回一個成功的布爾值 – mark
嗨馬克,謝謝你做到了。 – Manu
錯了,這個init初學了一個新類,反正它與你聲明的模型不匹配 –