这几天集中看了下 Symfony 2 的文档,也试着写了几个 Bundle,体会是:思路完全不一样了。 寻找 Bundle 相关的的文档时,发现有人已经翻译了很多,基本覆盖了80% 的内容。 给大家分享一下吧。 http://firehare.blog.51cto.com/809276/703599
Symfony
FCKeditor 2.6 安装 配置 问题 图片上传
今天给使用 Symfony 的项目装了 FCKeditor 编辑器,配了图片上传。 遇到一些问题,总结下。 安装时,为了简单,最好把解压的 fckeditor 文件夹放在 web/ 目录下。 在模板中加入编辑器很简单: $webDir = sfConfig::get(‘sf_web_dir’); // DocumentRoot 的服务端路径 […]
What is Dependency Injection? 依赖注入?
转自 Symfony-Project 的创始人:Fabien Potencier。 查了下中文,貌似应该翻译成 “依赖注入”? This article is the first of a series on […]
Symfony Helper select_tag
我们做数据库设计时,会用数字标记某条记录的状态。最简单的例子,一个 gender 字段,是 tinyint 类型,用 1 代表男性,2 代表女性。 在设计 html 页面编辑这条记录时,我们总要写好多 html 代码,很麻烦。 用 Symfony […]
Symfony 文档 电子书 PHP Quebec 2007
最近在看 Symfony 的源码,从中体会到很多这个框架背后实现的原理和过程。 其实,我们在讨论框架的时候,不是要把他直接拿来用,而是要研究他优秀的部分,吸取他的经验。 我真是不明白为什么很多搞开发的人那么讨厌框架,那么鄙视框架的性能。 也许,就像我的一个朋友说的那样,有些人在技术上比较保守,不思进取,当别人学新东西的时候,他总是极力反对,原因就是怕别人抢饭碗…… 不说那么多了,今天在一个比较牛的下载站,下了很多 Symfony 的文档和一些相关参考资料。 其中有一个 pdf ,是 Symfnoy 创始人 Fabien […]
Symfony 温故而知新
使用Symfony的同学,连接数据库时,如果想指定编码,需要在得到数据库Connection的时候发送一条SET NAMES UTF-8语句,以保证统一。 针对这个问题,我以前写过2篇Blog,地址: Symfony 数据库连接 utf8 Symfony 数据库连接 utf8 (二) 里面是通过修改Creole的源码,symfony/vendor/creole/Creole.php,加入一个setUTF8方法。 这个方式管用,但不是最好。 这两天看了Symfony的 Code […]
Symfony Apache Url Rewrite
今天在服务器上新装了apache,把用Symfony开发的后台程序部署到服务器上,发现生产版本的环境无法使用,居然报404 Not Found。 刚开始没想到是什么原因,反复翻文档,检查虚拟主机的配置,和目录权限,以及.htaccess文件,都正确无误。 在自己的Windows环境是好好的,但在服务器上却不行。 后来就拿.htaccess开刀,因为受到一点Apache手册的启发,就是在.htaccess中添加一些错误代码,以检查.htaccess是否正确运行。 其实本来就应该能想到这样做的,只是觉得问题可能出现在其他地方。 果不其然,就是.htaccess中的<IfModule mod_rewrite.c>,在这个分支里面随便写任何东西,都不会起作用。 看来Apache没有正确安装mod_rewrite.so。 一时也不知道如何验证,后来在网上查了半天才查到。 先列一串命令吧: apache/bin/httpd -l 列出当前环境中安装了哪些module […]
Symfony 限制
发现Symfony的2个限制,其实这个是Propel的限制,Propel是PHP的一个ORM的数据库代码生成器,通过XML或YML文件配置,自动创建针对每个数据库和表的CRUD模型,并有良好的继承关系,真正地以面向对象的方式操纵数据库的每一行每一列。 目前发现2点限制: 不能适应分表(动态选择表名) 整型字段不能设置unsigned类型 在设计数据库的时候,采用分表存储,是一个优化性能的好方法, 比如,保存用户的文章,按用户ID,散列到8个表上。这8个表的结构都完全一样,只是表名不一样:tbl_post_0, tbl_post_1, …, tbl_post7。 当前版本的Propel,生成的代码,是和表名紧紧耦合在一起的,也就是说这8个表,会生成8套几乎一摸一样的代码,同样需要写8份schema.xml。 这样很不合理。 应该再抽象出一个机制,考虑结构相同表的统一处理。 Propel的另一个问题就是整数字段不能设置unsigned类型,查了官方的说明,说是PHP的整数类型就是-2的31次方到2的31次方减一。我还没来得及证实,不过这也不是很大的问题。因为,Symfony就是为了从零开始快速开发。一个新项目,数据量从零增加到20多亿条记录,还是需要一些时间的,应该避免项目初期的过度设计。 等你的数据规模达到10亿的时候,考虑找风投给你1000万美元,招人帮你重构吧。
Symfony 如何在项目中使用多个数据库
all: database1: class: sfPropelDatabase param: dsn: pgsql://foo:bar@hostname/database1 database2: class: sfPropelDatabase param: dsn: mysql://foo:bar@hostname/database2 先建立一个 PROJECT_DIR/config/database1.schema.xml […]