用Symfony 2重建“任氏有无轩”——第一天

Symfony是我最喜欢用的PHP框架,没有之一。我从2009年1月开始用Symfony 1.2(系列教程第一篇:Going for Symfony | 第一天)重建我的“任氏有无轩”,然后在2011年3月用Symfony 1.4.9(系列教程第一篇:重构狗屎皮:第一天)重建“狗屎皮”,一直就没有离开过Symfony这个环境。

Symfony在2011年3、4月份开始推出Symfony 2,并启用了全新的域名(https://www.symfony.com)。我一直关注着它的发展,并在自己家里的电脑上开始尝试。如今,Symfony 2已经开发到了2.0.4——我前两天才更新到2.0.3啊,可不可以不要这么频繁的更新版本啊,亲——我也决定开始用SF2来重建我的“任氏有无轩”站点。

我的环境是XAMPP,本来是想在我的2F上搭建的,但是SF2要求PHP版本在5.3.2以上,而2F的repository在Wingsun同学离职后就一直没有好好维护过,自己编译又太麻烦了,所以就在我的Windows 7机器中直接测试。

===我是混个先===

肾上也不能免俗,首先谈谈下载、安装的事宜。官方的SF2可以在http://symfony.com/download页面下载。有两个不同的文件包:一个是所谓的Symfony Standard,一个是Symfony Standard without vendors(这个版本需要git的支持)。我强烈建议下载without vendors的版本。这样做有三个好处:

  1. 下载的包比较小;
  2. 可以定制需要安装怎样的第三方库;
  3. 可以方便地进行升级。

将下载的文件包解压缩到你的web根目录下(f:wwwrsywx2Symfony),并在apache里调整一下virtual host的设置,SF2的安装就算完成了。

你自己的SF2到底要支持什么第三方库是可以定制的。Symfony 2在Symfony 2框架中本身就是作为一个第三方库出现,所以针对SF2的频繁升级,我不再有鸭梨!打开根目录下的deps文件——如果有deps.lock文件的话,可以安全地将其删除——可以看到缺省情况下SF2要安装哪些第三方库(只列出部分):

[symfony]
git=http://github.com/symfony/symfony.git
version=v2.0.4

[twig]
git=http://github.com/fabpot/Twig.git
version=v1.1.2
[monolog]
git=http://github.com/Seldaek/monolog.git
version=1.0.1
[doctrine-common]
git=http://github.com/doctrine/common.git
version=2.1.1
[doctrine-dbal]
git=http://github.com/doctrine/dbal.git
version=2.1.2
[doctrine]
git=http://github.com/doctrine/doctrine2.git
version=2.1.1
… …

这里有symfony,twig(SF2推荐使用的模板引擎,由SF2的开发者Fabien Potencier开发,官方站点:http://twig.sensiolabs.org/。twig本身有“小树枝、枝丫”的意思。),monolog(创建LOG文件),doctrine(SF2使用的数据库ORM,官方站点http://www.doctrine-project.org/。doctrine本身有“学说、教义”的意思。)

缺省的第三方库配置中没有加入data fixture的bundle。如果你想使用类似

php app/console doctrine:fixtures:load

的命令来快速生成测试用数据,那么可以修改这个deps文件,手工加入DoctrineFixturesBundle的repo,然后运行:

$ php bin/vendors install

详细的攻略可以参见官方站点的说明:http://symfony.com/doc/2.0/bundles/DoctrineFixturesBundle/index.html

如果SF2升级了,按照我的经验,只要你把deps文件中symfony部分的version修改一下,修改为你要升级到的版本号(如果有deps.lock文件请事先删除),然后运行一下bin/vendors install即可。

===================

经过简单的配置后,你可以用http://localhost来看看界面,或者用http://localhost/app_dev.php来看看开发界面。SF2自己带了几个demo,可以让你感受一下基本的控制器、页面等概念。

另外,在开发时,笔者强烈推荐使用app_dev.php提供的开发界面。正如我前文所说,SF2对cache的管理不如之前的SF1时代“高效”,在开发环境下显示正常的,在应用环境可能会不行。

这是开发环境下cache没有得到更新的原因——SF2在开发环境下将不再检查源文件和解析后的PHP文件(存放在cache/prod目录下)的版本更新情况,而永远直接使用cache/prod下的文件。在开发过程中,如果用户想看看应用环境下的情况,用户必须自己负责强制更新cache/prod下的文件。最简单的方法就是直接删除这个目录下所有的文件。

第一天的教程就到这里。第二天我将先讲讲twig这个模板引擎。

【本文收录于[go4pro.org]】

Comments

Leave a Reply

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