挺难懂的

下面这段代码如何理解呢,最好在关节点上给与解释

* 行为模型实例

*

* @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这么难懂,挺难懂的解决方法相关推荐

  1. 计算机管理损坏的图像,损坏的图像(打开软件出现)解决方法

    在我们日常使用电脑的过程中,我们都会在不经意的时候下载了一些不知名的软件,或者说一些附加软件.通常这些软件的安装,都会使我们的电脑出现一些莫名其妙的情况.比如说,当我们打开软件的时候,就会弹出&quo ...

  2. php cannot call constructor,安装ECshop普遍问题的解决方法

    安装时的问题: 1.Strict Standards: Non-static method cls_image::gd_version() should not be called staticall ...

  3. 【转】C#中的弱事件:不同的解决方法

    中文原文:http://www.itgrass.com/a/csharp/C-sl/200811/05-8388.html 英文出处:http://www.codeproject.com/KB/cs/ ...

  4. linux启动sql server数据库,SQL Server数据库启动过程详解及启动不起来的问题分析及解决方法...

    第五步.启动系统数据库model model系统数据库同样也是SQL Server启动过程中用到的一个非常关键的数据库,如果这个库损坏,SQL Server启动也会失败,关于model数据不能启动的原 ...

  5. 安装centos后无法引导启动windows7的解决方法

    在电脑Windows7系统上安装Centos7,安装后找不到Windows7引导菜单. 原因:因为CentOS 7已采用新式的grub2系统,所以需要进入/boot/grub2目录后使用vi编辑gru ...

  6. 关于excel导入到封装成工具类jar包和web版门店收银网络无法无法连接上的解决方法...

    2011-12-4 1.excel导入工具封装碰到如何给传输过来的泛型对象进行对象点Setter的方法,解决方法应该可以查看struts2框架的源码查看他在拦截器作用下是怎么给action这个类的一个 ...

  7. 除了iframe还有什么方法加载第三方网页_IE9常见问题的解决方法

    IE9偶尔出现的网页显示不正常或者崩溃的情况该如何应对呢?我们来看看几个比较常见的现象和对应的解决方法 导致这些现象的最终原因可以归咎于以下几个方面: 1.网页的代码与IE9不兼容或兼容性不好: 2. ...

  8. aspnet_merge.exe”已退出,代码为1的错误的解决方法

    VS2005发布网站时不会像VS2003一样生成规则的DLL文件.而生成的DLL文件名含有随机数且不能一个项目生成一个DLL文件.让人有一些遗憾.为了做到像vs2003一样,微软发布了WebDeplo ...

  9. 服务器登陆密码到期登不上去_英雄联盟手游注册系统炸服怎么回事?服务器瘫痪登不上解决方法[多图]...

    英雄联盟手游服务器在开测日一天就顶不住炸服了,由于人数太多导致注册系统炸服,很多玩家想要进入游戏的时候都发现登不上去,关于服务器瘫痪这个问题,下面也会带来详细的资讯,并给大家提供解决的方法. 英雄联盟 ...

最新文章

  1. android 模拟器 device disconnect,Jenkins上的Android模拟器错误:设备离线
  2. 网络营销——浅析网站改版之后对网站展开新的网络营销有哪些影响?
  3. 【设计模式】—— 中介者模式Mediator
  4. sscanf用法详解-hdu2072
  5. Django contenttypes 应用
  6. Activity的属性taskAffinity
  7. java里新建线程设置线程名字_多线程开发不得不掌握,设置和获取线程名称及JVM如何运行的...
  8. mysql 的一些操作
  9. ElasticSearch - term 和 match 的差别
  10. Asp.Net异步加载
  11. SSH项目搭建-03-DAO层,Controller层创建及代码抽取
  12. EXCEL导入SQL的语句
  13. 记录用NoteExpress下载文献全文成功
  14. 手机投屏到电视上怎么操作?
  15. 电脑图标出现蓝色问号解决方法
  16. 如何快速画出霍夫曼树
  17. 二元二次方程例题_二元二次方程组例题_相关文章专题_写写帮文库
  18. windows下安装PHP的swoole拓展
  19. 计算机专业自我总结100字,计算机专业学生自我评价100字
  20. USB Full-Speed 基础波形

热门文章

  1. Change Fiori launchpad logo
  2. SAP JAM的回收站
  3. Workaround for Search for my account in MyAppointment
  4. SAP ABAP实用技巧介绍系列之 ABAP XSLT apply_template keyword
  5. HTTP 307 redirect
  6. 部署到CloudFoundry上的应用,启动超时的处理
  7. SAP UI5框架绘制footer区域的入口调试
  8. 利用ABAP调试模式修改SE16里数据库表的内容
  9. high severity error mysql_pg将运行日志导入表中的方法及时区问题解决
  10. 目前最厉害的象棋软件_qq什么引流方式最厉害,QQ引流目前最有效的方法