细说php这么难懂,挺难懂的解决方法
挺难懂的
下面这段代码如何理解呢,最好在关节点上给与解释
* 行为模型实例
*
* @param string $model 模型名称
* @return obj 对象形式的返回结果
*/
function Logic($model = null, $base_path = null){
static $_cache = array();
$cache_key = $model.'.'.$base_path;
if (!is_null($model) && isset($_cache[$cache_key])) return $_cache[$cache_key];
$base_path = $base_path == null ? BASE_DATA_PATH : $base_path;
$file_name = $base_path.'/logic/'.$model.'.logic.php';
$class_name = $model.'Logic';
if (!file_exists($file_name)){
return $_cache[$cache_key] = new Model($model);
}else{
require_once($file_name);
if (!class_exists($class_name)){
$error = 'Logic Error: Class '.$class_name.' is not exists!';
throw_exception($error);
}else{
return $_cache[$cache_key] = new $class_name();
}
}
}
------解决思路----------------------
function Logic($model = null, $base_path = null){
//定义静态变量
static $_cache = array();
//定义缓存key值
$cache_key = $model.'.'.$base_path;
//若是静态变量中有这个模型的实例就直接返回
if (!is_null($model) && isset($_cache[$cache_key])) return $_cache[$cache_key];
//组织类文件路径
$base_path = $base_path == null ? BASE_DATA_PATH : $base_path;
$file_name = $base_path.'/logic/'.$model.'.logic.php';
$class_name = $model.'Logic';
//类文件是否存在
if (!file_exists($file_name)){
//不存在就实例一个model
return $_cache[$cache_key] = new Model($model);
}else{
//存在就引入
require_once($file_name);
//判断是否存在 该类
if (!class_exists($class_name)){
//不存在就抛出异常
$error = 'Logic Error: Class '.$class_name.' is not exists!';
throw_exception($error);
}else{
//存在就实例化它,存入静态数组中并返回
return $_cache[$cache_key] = new $class_name();
}
}
}
细说php这么难懂,挺难懂的解决方法相关推荐
- 计算机管理损坏的图像,损坏的图像(打开软件出现)解决方法
在我们日常使用电脑的过程中,我们都会在不经意的时候下载了一些不知名的软件,或者说一些附加软件.通常这些软件的安装,都会使我们的电脑出现一些莫名其妙的情况.比如说,当我们打开软件的时候,就会弹出&quo ...
- php cannot call constructor,安装ECshop普遍问题的解决方法
安装时的问题: 1.Strict Standards: Non-static method cls_image::gd_version() should not be called staticall ...
- 【转】C#中的弱事件:不同的解决方法
中文原文:http://www.itgrass.com/a/csharp/C-sl/200811/05-8388.html 英文出处:http://www.codeproject.com/KB/cs/ ...
- linux启动sql server数据库,SQL Server数据库启动过程详解及启动不起来的问题分析及解决方法...
第五步.启动系统数据库model model系统数据库同样也是SQL Server启动过程中用到的一个非常关键的数据库,如果这个库损坏,SQL Server启动也会失败,关于model数据不能启动的原 ...
- 安装centos后无法引导启动windows7的解决方法
在电脑Windows7系统上安装Centos7,安装后找不到Windows7引导菜单. 原因:因为CentOS 7已采用新式的grub2系统,所以需要进入/boot/grub2目录后使用vi编辑gru ...
- 关于excel导入到封装成工具类jar包和web版门店收银网络无法无法连接上的解决方法...
2011-12-4 1.excel导入工具封装碰到如何给传输过来的泛型对象进行对象点Setter的方法,解决方法应该可以查看struts2框架的源码查看他在拦截器作用下是怎么给action这个类的一个 ...
- 除了iframe还有什么方法加载第三方网页_IE9常见问题的解决方法
IE9偶尔出现的网页显示不正常或者崩溃的情况该如何应对呢?我们来看看几个比较常见的现象和对应的解决方法 导致这些现象的最终原因可以归咎于以下几个方面: 1.网页的代码与IE9不兼容或兼容性不好: 2. ...
- aspnet_merge.exe”已退出,代码为1的错误的解决方法
VS2005发布网站时不会像VS2003一样生成规则的DLL文件.而生成的DLL文件名含有随机数且不能一个项目生成一个DLL文件.让人有一些遗憾.为了做到像vs2003一样,微软发布了WebDeplo ...
- 服务器登陆密码到期登不上去_英雄联盟手游注册系统炸服怎么回事?服务器瘫痪登不上解决方法[多图]...
英雄联盟手游服务器在开测日一天就顶不住炸服了,由于人数太多导致注册系统炸服,很多玩家想要进入游戏的时候都发现登不上去,关于服务器瘫痪这个问题,下面也会带来详细的资讯,并给大家提供解决的方法. 英雄联盟 ...
最新文章
- android 模拟器 device disconnect,Jenkins上的Android模拟器错误:设备离线
- 网络营销——浅析网站改版之后对网站展开新的网络营销有哪些影响?
- 【设计模式】—— 中介者模式Mediator
- sscanf用法详解-hdu2072
- Django contenttypes 应用
- Activity的属性taskAffinity
- java里新建线程设置线程名字_多线程开发不得不掌握,设置和获取线程名称及JVM如何运行的...
- mysql 的一些操作
- ElasticSearch - term 和 match 的差别
- Asp.Net异步加载
- SSH项目搭建-03-DAO层,Controller层创建及代码抽取
- EXCEL导入SQL的语句
- 记录用NoteExpress下载文献全文成功
- 手机投屏到电视上怎么操作?
- 电脑图标出现蓝色问号解决方法
- 如何快速画出霍夫曼树
- 二元二次方程例题_二元二次方程组例题_相关文章专题_写写帮文库
- windows下安装PHP的swoole拓展
- 计算机专业自我总结100字,计算机专业学生自我评价100字
- USB Full-Speed 基础波形
热门文章
- Change Fiori launchpad logo
- SAP JAM的回收站
- Workaround for Search for my account in MyAppointment
- SAP ABAP实用技巧介绍系列之 ABAP XSLT apply_template keyword
- HTTP 307 redirect
- 部署到CloudFoundry上的应用,启动超时的处理
- SAP UI5框架绘制footer区域的入口调试
- 利用ABAP调试模式修改SE16里数据库表的内容
- high severity error mysql_pg将运行日志导入表中的方法及时区问题解决
- 目前最厉害的象棋软件_qq什么引流方式最厉害,QQ引流目前最有效的方法