最近历经半个月开发了一个新的网站 湖南英才网 ,这是我个人开发的第N个独立网站了,不过和往常不同的是,这次用了PHP Symfony2框架,期间经历了很多坎坷,特此记录。
这是一个湖南地区的人才网站,提供简便的职位发布和简历投递,目前只开发了最基本的注册,包括社交网络注册,发布职位,简历投递、职位搜索等。
为了快速开发,前端用的Bootstrap3.0,后端Symfony2、全文搜索用ElasticSearch。
刚开始时并不是用的Symfony2,而是用的Laravel4,用Laravel4开发了3天,后来我为什么抛弃了Laravel4呢,主要是因为它对模型层面处理的不是很好,需要手动赋值,不能更好的抽象到更高的级别、包括表单,也没有Symfony处理的优雅,文档没有Symfony2齐全等,所以果断转为Symfony2。
用Symfony2开发也有缺点,就是配置文件过多,刚开始接触的话可能很反感这些配置文件,还有一个就是学习曲线较高,相对开发周期较长。优点是后期维护和扩展很容易,增加修改什么不会影响到已有功能,特别是Bundle机制,可以减少每个Bundle之间的耦合,在这个项目中我8个Bundle,包括UserBundle、MailBundle、JobBundle、……等等,这样编码时可以很清晰的找到对应的文件做开发,和其他Bundle完全隔离,需要时通过路由、模型做关联即可,当然还有一个好处就是PHPStorm对Symfony2支持比Laravel4要好的多,这样在编码时可以获得更多特性支持快速实现。
1-5天利用Bootstrap3.0做出了网站页面ui,因为Bootstrap3用起来很方便,网站结构也相对简单,就没有做ue,简单考虑后直接开始Bootstrap3实现,实现后发现不合适则调整,知道满意。
6-12天用Symfony2开发出了所需功能,期间包括编码,写测试用例,调整等,不得不说在开发阶段Symfony2帮了很大的忙,开发起来得心应手,偶尔遇到难题,官方手册和Google都帮了大忙,花时间较长的就是用新浪微博和QQ帐号登录,这个社交登录累计花了1天时间才搞定。
13-15天上了职位搜索,期间考虑用Solr还是ElasticSearch,最后选择了后者,因后者配置,部署,扩展都相对比Solr要容易,更多的原因是Symfony2有对应的ElasticSearchBundle,拿来配置就能用,根本不需要做过多的编码。
开发这个网站前后一共15天左右,包括周末、工作日的晚上,由于利用了已有的成熟的工具,所以可以大大减少开发周期和更好的处理错误和安全问题。开源真是个好东西,很多成熟的第三方Bundle可以重用,如果有不满足项目需求的则基于其扩展即可。