问一个SP存在,OOP框架也存在的问题

#1 redguan

问这个问题,是因为我对OOP刚接触,不是太了解。

OOP的出现,很方便。

将某个类做成另一个类的子类,或者方法。调用非常方便。

$SS->db->pager->cache->sql

但是这样多次调用后。关系有点乱套了。

这个$SS 拥有DB数据库的方法,和资源。 而其它类同样也拥有。
dump($GLOBALS['G_SP']);


虽然我看到PHP对于资源是共享的。但这样会不会多重调用后,产生一个非常巨大的类而将性能突然间下降?

同理,当$GLOBALS['G_SP'] 这个变量比较大的时候,会不会产生这个原因?

PS:在WINDOWS下,当一个目录的文件数超过1万左右时,速度下降得非常快。当达到3万左右时,I/O操作基本被卡死。

2010-05-26 10:58:19

#2 jake

呵呵,要知道$GLOBALS['G_SP'] 有多大,直接serialize成字符串,保存字符串到文件就知道有多大了。通常不会大于1K(1024b),一般一个apache线程有20M左右的内存空间,所以问题不大,而且其他程序(DZ,WORDPRESS或是其他框架)也是一样,保存数据库链接或者配置的句柄,也是保存在内存里面。

OOP方面,SP已经尽可能地少多重继承,像model,model之下就是数据库驱动类,两层。和其他的OOP框架相差很大,某些OOP框架,一个抽象父类,model,数据库中间层,数据库驱动层,M部分就已经四层了,所以从这个角度来说,SP是比较节约资源的。

另外,从PHP5编译器的角度来说,对类的支持并非如楼主想象中那样呆板,而是非常的弹性和智能,它会动态处理类继承的问题,以保证使用极小的资源来达到类的功能。

2010-05-26 11:13:25

#3 redguan

我使用SP也是因为层数比较少。

2010-05-26 12:09:33