有人认为,PHP是每次请求都要初始化资源,这个开销很是大。由此,PHP不适合使用开发框架。 html
对于PHP,确实没有类的持久化,使得每次请求都要初始化资源,可是,这并非开销的主要问题所在。最主要的问题,是在于开发PHP框架的人,对PHP自己的特性了解多少。最简单的,MVC须要检测UA,若是使用PHP自带的get_browser函数,那确定是死定了。由于,使用上的方便与简单,致使的是性能的开销。 web
认为不可以使用PHP开发框架的,还有的观点是:因为须要每次请求的时候初始化整个框架。其实,这也是一种误解。若是好好看看PHP源码,就会了解,PHP是按请求加载须要运行的文件,并非整个框架。因此,对于框架自己,哪种框架内核代码时越小,性能越好。 算法
还有观点:因为PHP这种每请求初始化资源的机制,也形成了PHP添加跨请求的高级特性至关困难。其实,跨请求自己,要看在哪个层面。PHP提供了各种加速的缓存机制。虽然PHP的类是因为目前序列化函数仍有限制,不能持久化,但数据缓存对PHP的加速是至关快的。因此,认为因为这一限制,就使得PHP只能是一个保持在一个比较简单的web语言上面,这无疑更是错误的。PHP不乏大型的高速与高效的网站。并非这些网站底层就没有框架。 数据库
另外,还有轻信什么测试的结果。http://merbist.com/wp-content/uploads/2008/11/benchmarks.png,对于这个测试结果,我以为,没有一丝一毫的可信度。咱们没法相信这些测试结果,主要缘由有这么几个方面。其一,PHP环境配置,是否是最优化配置?第二,测试结果中所选框架,是否是最优框架?仅拿CI与CAKE二者来讲,CI的日志,没有多种输出,只有文件输出。这对于大型网站的管理是极不方便的。可是,若是将其改用LOG4PHP,那性能上的损失将会是多少,是不可想象的。缘由在于,LOG4PHP是彻底照抄的JAVA。至于CAKE,更是彻底照抄RAILS。彻底不顾及PHP的性能与语言自己的特性。 缓存
好比最简单的,大量静态方法的使用。势必形成以空间换时间。CAKE中无处不在的静态方法,致使了内存中堆积大量的类。这种以空间换时间,是速度加快了,仍是性能损失了,有多少人真正系统测试过? 架构
CAKE让RUBY的人了解PHP是对PHP的一个促进,同时,RAILS框架,也使得PHP框架得以注入新的血液,增长了新的开发思路。但,彻底照抄是PHP目前最大的悲剧。这个当中的经典之做:CAKE:RUBY ON RAILS, SMARTY: JAVA STRRUTS LOG4PHP:JAVA LOG4J,可悲的是,写这些抄袭之做的做者,都是对PHP不太了解,大量照搬RUBY,JAVA中的算法与函数,有些能够算是翻译,好比, LOG4PHP中的PROPERTIIES文件的处理就是这样,没必要再举更多的实例了。为何不能把JSF,或TYPESTRY也抄到PHP中,这是由于,若是没有很好的PHP功底,这几乎是不可能的。由于,这两个东西,若是也是照抄过来,势必慢如蜗牛。 框架
再有,梦想不用PHP框架开发大型网站,确定是错上加错。WORDPRESS,DISCUZ这类无框架,无架构的极端糟糕的代码,网上已家常便饭。 函数
要访问数据库,最小的需求,也要把数据库访问封装成一个类吧?要进行错误与异常管理,也须要一个类吧?若是是大型的网站,总要有错误日志输出,以方便调视与运行监视吧。因此这些,拼一下,也算是PHP开发框架呀。 性能
看样子,否定PHP应当有框架的人,确定也就认定,PHP作不了大网站。或者说,认定,PHP作大网站,也是垃圾架构。这多是太武断了。 测试
凡认为PHP是反框架的,实际上,是不了解PHP语言的一些瓶颈在何处,没法写出高效的框架,因此,才这样认为的。