像PrestaShop这样的程序,大部分操作全是由index.php代理的,就是说大部分的url都是传值到这个页面里面,再由这个页面按照不同的路由组织方式进行分发,调用不同的控制器和功能。所以这里PrestaShop程序,基本都是全面向对象的开发。 程序使用面向对象的开发,代码简洁明了、适合团队合作开发,并且很适合制作这种插件式的结果,很方便扩展更多的功能。但是prestashop并不是全面向对象的,在第一级的访问,是面向过程的开发,然后再调用各种类来完成各种任务。 那么这样有什么好处呢,大家知道php是用解析器来解析的脚本语言,并且每次访问都会进行解析和执行,并不编译。这样每次的初始化就会有很大的负担(好处是绝对没有垃圾),尽管php的解析器性能非常优良,但是大量的对象依然会减慢执行的速度。所以有一些人认为php应该总是面向过程的。 比如访问一个产品信息,访问的地址会是product.php?id_product=1,这样,只需要初始化与产品相关的各种模块就可以了,因为这样的访问方式,至少就减少了处理url路由再dispatch(分发)的时间。 以product.php举例,一个完整的执行过程如下
这样,产品详细页面就执行完了,数据库的读取(包括对应语言和货币)和验证等这样的大量代码,被包含在类中进行维护;输出控制和计算,是外部的面向过程来进行精确的计算,因为这些都是只针对产品信息的,所以修改等操作是不会对其他页面造成影响的。这样集成了2方面最大的优势,发挥出php这种既可以面向对象又可以面向过程的语言的真正实力。 (责任编辑:好模板) |