关于spClass();函数实例化

#1 phpha

  • spClass在实例化前,将检查该类是否已经实例化,如已经实例化,将直接返回该实例化后的对象句柄,以免增加不必要的对象资源开销。
  • 以上是手册里面的,经测试的确如此。但是由于我在一个控制器的构造函数里面调用了2次一个外部的类,但是构造函数的初始化参数不一样,结果在后面的实例化没反映了?还是第一次实例化的参数得出的结果。
  • 想问的是,能不能对于某一个类在spClass();时不做检查。但是我不想修改框架代码。或许我可以重写spClass();函数。

呵呵,上面的问题可能是自己的思路不太对。其实吧,就像上面的问题所反馈,无须检查的话只需用最基本的 news(); 来实例化就行了
有点自问自答了……呵呵。有类似情况的可以说说~

该贴已经同步到 phpha的微博

2011-10-29 17:00:27

#2 jake


/**
* spClass  类实例化函数  自动载入类定义文件,实例化并返回对象句柄
*
* @param class_name    类名称
* @param args   类初始化时使用的参数,数组形式
* @param sdir 载入类定义文件的路径,可以是目录+文件名的方式,也可以单独是目录。sdir的值将传入import()进行载入
* @param force_inst 是否强制重新实例化对象
*/
function spClass($class_name, $args = null, $sdir = null, $force_inst = FALSE){
这里是一段spClass的代码,注意第四个参数,将第四个参数设置成 true,那么就可以重复实例化了。

2011-10-29 18:01:30