thinkcmf 控制器、类名为什么要用驼峰命名,原因在这里!!!

今天设计了一个数据表名为cmf_survey_company的表,在实例话的时候用D("Common/Surveycompany"),发现一直报报不到cmf_surveycompany这个表,花了几个小时找到原因了,原来是MODEL在获取表名的时候,会判断字符串是否有大写字母,如果有,刚把字符串以“_”连起来,所以用D("Common/SurveyCompany"),即可解决找到表“cmf_survey_company”

/**
* 得到完整的数据表名
* @access public
* @return string
*/
public function getTableName() {
if(empty($this->trueTableName)) {
$tableName = !empty($this->tablePrefix) ? $this->tablePrefix : '';
if(!empty($this->tableName)) {
$tableName .= $this->tableName;
}else{
$tableName .= parse_name($this->name);
}
$this->trueTableName = strtolower($tableName);
}
return (!empty($this->dbName)?$this->dbName.'.':'').$this->trueTableName;
}

 

/**
* 字符串命名风格转换
* type 0 将Java风格转换为C的风格 1 将C风格转换为Java的风格
* @param string $name 字符串
* @param integer $type 转换类型
* @return string
*/
function parse_name($name, $type=0) {
if ($type) {
return ucfirst(preg_replace_callback('/_([a-zA-Z])/', function($match){return strtoupper($match[1]);}, $name));
} else {
return strtolower(trim(preg_replace("/[A-Z]/", "_\\0", $name), "_"));
}
}

posted @ 2016-04-20 00:13  doudou130702  阅读(206)  评论(0编辑  收藏  举报