解决方案 »
- 请教utf8的中文URL如何转换成gb2312的中文URL?
- 多表插数据,怎么写
- 求2003+IIS下PHP的安装配置方法,最新的版本好像是5.2.6,一个是ZIP,一个是MSI的安装包,如果用MSI的安装包,直接安装以后就可以用了?
- 如何获取一个ip地址的HTTP状态码?
- 【新视线】PHP使用MySQL5存储过程、函数、视图、触发器专帖
- 关于图片上传问题?急!!!
- 为下载到了Mandrakelinux10.0-Official,高兴散分
- 整个页面刷新、iframe页面不刷新???
- PHP文件一般放在htdocs中,我可以把他们单独放在另一个目录中吗?
- 对方恶意留言 如何处理?
- 表单取值
- 使用php爬虫爬取(虾米音乐)出现HTTP/1.1 403 Forbidden拒绝的提问。
* 模型实例化入口
*
* @param string $model_name 模型名称
* @return obj 对象形式的返回结果
*/
function Model($model = null){
//存储已经实例化的model的数组 model名字为key 实例化为value
static $_cache = array();
//如果在cache存储中存在 则直接返回对应的存储实例
if (!is_null($model) && isset($_cache[$model])) return $_cache[$model];
//model存储的文件路径 model需要按照 xxxxx.model.php
$file_name = BASE_DATA_PATH.'/model/'.$model.'.model.php';
//model的类型需要是 xxxxModel
$class_name = $model.'Model'; if (!file_exists($file_name)){
//如果文件不存在(类不存在) 实例化一个Model的对象
return $_cache[$model] = new Model($model);
}else{
//如果文件存在(类存在) 则包含进来
require_once($file_name);
//判断类是否存在 不存在抛出异常
if (!class_exists($class_name)){
$error = 'Model Error: Class '.$class_name.' is not exists!';
throw_exception($error);
}else{
//存在则实例化 放在cache里边 并返回
return $_cache[$model] = new $class_name();
}
}
}
其实就是Model的实例化和一个对象缓存 现在一般用autoload来实现
返回途径有三个:
1、如果静态变量中已经实例过了,就直接返回;
2、如果model目录中存在类文件,则实例化其中的类
3、如果文件不存在,则直接返回一个此类的实例