服务报价 | 域名主机 | 网络营销 | 软件工具| [加入收藏]
 热线电话: #
当前位置: 主页 > php教程 > prestashop教程 >

PrestaShop插件式结构详解

时间:2016-01-12 01:28来源: 作者: 点击:
像PrestaShop这样的程序,大部分操作全是由index.php代理的,就是说大部分的url都是传值到这个页面里面,再由这个页面按照不同的路由组织方式进行分发,调用不同的控制器和功能。所以

像PrestaShop这样的程序,大部分操作全是由index.php代理的,就是说大部分的url都是传值到这个页面里面,再由这个页面按照不同的路由组织方式进行分发,调用不同的控制器和功能。所以这里PrestaShop程序,基本都是全面向对象的开发。

程序使用面向对象的开发,代码简洁明了、适合团队合作开发,并且很适合制作这种插件式的结果,很方便扩展更多的功能。但是prestashop并不是全面向对象的,在第一级的访问,是面向过程的开发,然后再调用各种类来完成各种任务。

那么这样有什么好处呢,大家知道php是用解析器来解析的脚本语言,并且每次访问都会进行解析和执行,并不编译。这样每次的初始化就会有很大的负担(好处是绝对没有垃圾),尽管php的解析器性能非常优良,但是大量的对象依然会减慢执行的速度。所以有一些人认为php应该总是面向过程的。

比如访问一个产品信息,访问的地址会是product.php?id_product=1,这样,只需要初始化与产品相关的各种模块就可以了,因为这样的访问方式,至少就减少了处理url路由再dispatch(分发)的时间。

以product.php举例,一个完整的执行过程如下

  1. config.inc.php初始化各种常量
  2. init.php初始化各种设置
  3. 定义了几个只用在该页面的方法
  4. 要载入的css和js,这样就可以精确的控制流量,增强用户体验
  5. 初始化头部,每个页面的头部都是一样的
  6. 调用product类来读取产品信息
  7. 处理各种产品信息,包括图片、价格、当前分类下的其他产品等
  8. 从数据库中读取hook在这个页面的插件,执行
  9. 所有的结果assign在smarty里面,输出
  10. 初始化脚部,和头部一样

这样,产品详细页面就执行完了,数据库的读取(包括对应语言和货币)和验证等这样的大量代码,被包含在类中进行维护;输出控制和计算,是外部的面向过程来进行精确的计算,因为这些都是只针对产品信息的,所以修改等操作是不会对其他页面造成影响的。这样集成了2方面最大的优势,发挥出php这种既可以面向对象又可以面向过程的语言的真正实力。

(责任编辑:最模板)
顶一下
(0)
0%
踩一下
(1)
100%
------分隔线----------------------------
栏目列表
热点内容