任氏有无轩改版彻底完成

折腾了很久,终于将我的任氏有无轩改版到4.0。

这次的改版经历了很长时间。

首先是用Symfony 2.X,这对我是个挑战,因为我之前都是基于Symfony 1.4.X来编写站点的。Symfony的一个最大的特点就是每次大的版本升级都会引入全新的东西,需要开发者去适应,这是闹哪套!

Symfony 2首先是基于namespace,因此必须有PHP 5.3+的版本支持。我的主机在BlueHost上,应该说BH是很保守的虚拟主机服务商,在外界已经普及使用PHP 5.3的时候,它还死撑着用PHP 5.2。我还为此专门去信询问,回复是他们还要测试。没有这个最基本的平台,我的开发也就没有了动力。

幸好,BH主机从善如流,一口气开始支持PHP 5.3/5.4,所以我才又重拾开发。

其次是版面的设计。这要感谢前令狐,在7月份的第一届G4PCC上,他介绍了Bootstrap这个框架。这个框架的存在让我精神一振,因为它可以让一个程序员(而不是美工师)设计出比较优雅、简介的页面。通过简单的摸索,我就已经上手了。

第三,SF2开始使用Twig模板引擎。这个和之前的基于PHP的引擎完全不同。以前在基于PHP的模板引擎中,可以随时插入PHP代码,但是现在不行,必须要么通过变量传递,要么用Twig内置的所谓filter。当然,Twig引擎本身是非常非常好用的。它支持模板嵌套,支持控制器嵌套——这点至关重要。

第四,SF2使用的数据库ORM也统一到Doctrine。这个引擎,说实话我到现在也还没有完全掌握。但是确实很好很强大,特别是它的反向工程能力,可以将一个现有的数据库——我的应用中就是这个情形——比较完整的反向映射到mapping,并生成对应的class/Entity。同时,它也支持所谓的Repository,可以统一数据库的操作。很好的实现了M层。

第五,SF2使用了composer.phar这个鬼东西来管理升级。不知何故,当我进行更新时,总是将DEV版本(而不是Stable版本)拖下来。SF2由于开发速度太快,DEV版本总是有不少bug。而其中的一个bug是,prod环境下第一次生成cache的时候是大小写不敏感的,但是在以后的prod环境下的调用时却是大小写敏感的。因为这个问题,我的站点在发布后出现了很奇怪的问题:我的根目录路径在第一次进入时OK,但是在随后的进入时就会引起500错误。我调了很多次都没有能找到问题,最后是人工降SF2的版本并在dev环境下捉出了这个问题。

前几天猛禽在G+上说,Drupal也决定将采用SF2作为框架。我对此倒是不意外。

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *