1、symfony2这种量级的框架怎么可能有捷径可走?其定位是松藕合和易扩展,并不是很容易的事。sf2是靠configuration系统(它可以把各种语义化yml配置转为数组)和服务容器概念来实现的bundle的分发,因此其灵活强大的extension架构,并非口头说的那么简单,用起来也有门槛,你不得不使用compiler pass来对各种依赖实施特殊注入。而这一块正是其他php框架难以超越sf2的关键所在。

对symfony2来说,理论与实践同样重要,一般来说一年之内很难入门,需要两三年才能入门。而且英语必须,爬出必须。

现在的symfony2因为表现出色,已经逼得zend framework3不得不重新包装、重新推出。因此如果你想扎实掌握现代php开发,应该从底层,也就是http、request、response这些角度,来理解究竟sf2 component中的kernel/httpkernel是怎样运作的?然后才是其他的组件和功能。这其中,“事件”组件是极其重要的,event_dispatcher也是sf2的灵魂。官方几本2.6版的pdf全部下载,每本都是400页,里面30来个组件,按我的理解一个也绕不开,外加doctrine的400页,和twig的160页。最好找1毛1页的打印店,全部打出来装订上,以备随时参阅。

不过,2.7版有重大变化,因为是承上启下的,直接对接3.0。尽管如此,2.6还是有必要全面掌握。2.7/2.8是向下兼容并长期维护的,再往上就不兼容了。

当你能够使用symfony2开发东西时,你的项目自然是最好的,至少你不会也没有必要再羡慕其他任何web开发语言的框架。symfony2生成东西是很快的,页面本身也是可以定制和扩展的。无论是表单环节还是会员环节(即开发中绕不开的安全验证/角色授权),都可以自动化,真的是非常简单,不需要太多关注(当然sf2-form和sf2-security的原理一定要懂,里面有很多概念,比如transform或是voter都是必须掌握的)。如果使用ORM很多东西确实与传统web开发不太一样,比如Django的Admin在symfony2中有更完美解决方案,强大到令人不可思议。

2、knpbundles.com第一页的前10个,全部要装,都会用到。其他还有很多,因为在symfony哲学里是不可以随便发明轮子的。比如,Guzzle,Geshi,Geocoder等第三方的包,不一定非得是被好心人封装成bundle,随便任何一个library(乃至Zend2中你喜欢的库),你可以原封不动的扔到Vender中,利用symfony2提供的自动加载,立即使用。至于像是google map、fckeditor、markdown等常用工具皆早已被封装成bundle直接composer下载。

说到composer,大家应该明白,正是symfony2的刚需促成了composer的诞生。不过现在sf2本身的安装已经不利用composer了,只有bundle会用。composer.phar的核心就是symfony2的console component。

接楼上观点回几句:按我的理解,sf2是可以有两种玩法,一个是少数精锐,做出大网站;一个是规模团队,做出惊人的web产品。sf2之所以强,就是因为他可以开发出网站以外的“高端互联网产品”(这个面儿很广,大家可以到sitepoint搜symfony2或到官网成功案例中自研,laravel这种只是其一),而做一个网站对sf2来说是不需要太多人的,该框架的底层封装和底层便利,以及具有空前扩展能力和自定义能力的第二方(symfony项目的不少灵魂人物都有自己的bundle,比如FOS、KNP、stof,JMS,sonata这些专家级的)、第三方bundle(世界级的php程序员),可以保证你的项目质量。

难就难在我们是否具备对框架的理解能力和操作能力。如果你会了sf2(主要是DIC、EVENT、FORM、SECURITY这四个是必须精通的,开发过程可以使用annotation来减少代码总量,并减少从controller等php文件往yml文件中切换的次数),你再回过头来看看thinkphp3,你会赞叹tp3相较前代的进步,而如果你查看think的底层代码你会觉得“的确非常简单”,真的。如果sf2上不了手,tp3一样可以用,因为你要完成项目,而不是追求什么高大上。

某网站看到的某神的Symfony_使用心得的更多相关文章

  1. 【网站支付PHP篇】thinkPHP集成汇潮支付(ecpss)

    系列目录 支付宝集成:http://www.cnblogs.com/nerve/p/3437879.html 系列说明 最近在帮朋友的系统安装支付模块(兑换网站积分),现在总结一些开发心得,希望对大家 ...

  2. 【网站支付PHP篇】thinkPHP集成支付宝支付(担保交易)

    目录 系列说明 开发环境 部署支付宝 支付请求 支付宝返回处理 系列说明 最近在帮朋友的系统安装支付模块(兑换网站积分),现在总结一些开发心得,希望对大家有用.这个系列会讲以下第三方支付平台的集成: ...

  3. Sublime Text 2 快捷键 插件配置

    一.前言之前 从设计到前端,有过一段时间是懵懵懂懂的状态,缺乏对整个职业更加深入的了解.后来混迹于各个前端大牛的博客,在各个QQ群里聆听各路大神的经验之谈,坚定了前端之路的信心.一直收藏各类精华的帖子 ...

  4. Git的简单的基本使用

    前言: 接触了Android Studio,自然是知道了Github这个网站,这个网站有许多大神们做的开源库,我们只需要简单地引入就是可以使用到这些开源库从而实现酷炫的效果,最近也是刚接触到Git的使 ...

  5. [C#]基于命名管道的一对多进程间通讯

    在工作中碰到了一个进程间通讯的问题,大概是这样的: 项目本身是.net Core做的,但是有部分功能Core中不方便实现,有的是依赖Framework,有的是因为权限和安全问题. 那基于这个问题,问了 ...

  6. Asp.net Core认证和授权:JWT认证和授权

    JWT验证一般用户移动端,因为它不像cookie验证那样,没有授权跳转到登陆页面 JWT是json web token的简称,在  jwt.io 网址可以看到 新建一个API项目,通过postman ...

  7. flask+apache+mod-wsgi部署遇到的坑

    首先,看到这种方式部署,我也有疑问,为什么不用nginx,gunicorn.接手的项目,就先按照前人思路run起来. 线上使用ubuntu系统,apache2,而给我玩耍的测试机是centos6.5, ...

  8. mendeley不能做中文批注的解决方案

    mendeley是一个很好用且免费的文献管理工具,但在ubuntu系统下,对文献进行批注无法切换中文输入法,实际上对ibus是支持的,但ibus实在是太难用,大部分ubuntu用户钟爱的还是fcitx ...

  9. seo搜索优化教程13-SEO搜索引擎站点收录

    为了使大家更方便的了解及学习网络营销推广.seo搜索优化,星辉科技强势推出seo搜索优化教程.此为seo教程第13课 想要用户能够在搜索引擎中通过关键词搜索到您的页面信息,首先要做的是让搜索引擎收录您 ...

随机推荐

  1. usaco 1.2.1(指针技巧)

    ★Milking Cows 挤牛奶 三个农民每天清晨 5 点起床,然后去牛棚给 3 头牛挤奶.第一个农民在 300 时刻(从 5 点开始计时,秒为单位)给他的牛挤奶,一直到 1000 时刻.第二个农民 ...

  2. 基于.NET打造IP智能网络视频监控系统

    开源倾情奉献:基于.NET打造IP智能网络视频监控系统(一)开放源代码   开源倾情奉献系列链接 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(一)开放源代码 开源倾情奉献:基于.NET打造 ...

  3. 使用Fiddler伪造服务端返回数据,绕过软件试用期验证

    用过一款和visual studio集成非常好的移动端模拟器,有7天的试用期,可惜不支持国内支付,试用到期了怎么办,不想重装系统. 昨天看有人破解admin page,于是尝试自己动手试试,因为这款模 ...

  4. Visual Studio 2013 发布正式版

    SELECT COUNT(1) 和SELECT COUNT(*)哪个性能好? Visual Studio 2013 发布正式版及使用感受 (注意:文末我添加了一个小节,用来更新最新的一些使用感受.) ...

  5. C# list distinct操作

    使用代理实现对C# list distinct操作   范型在c#编程中经常使用,而经常用list 去存放实体集,因此会设计到对list的各种操作,比较常见的有对list进行排序,查找,比较,去重复. ...

  6. C语言中数据类型的长度

    面试中C里面int长度经常会被问到,下面总结一下作为资料: 首先看看一般规定: 标准c规定,int长度等于机器字长,short的表示范围不能大于int的表示范围,long的表示范围不能小于int的表示 ...

  7. addEventListener和attachEvent以及element.onclick的区别

    addEventListener和attachEvent以及element.onclick的区别 attachEvent是ie添加事件处理程序,接收两个参数,其中事件类型名称要加"on&qu ...

  8. 创建naarray(1)

    创建ndarray Numpy创建ndarray的方法比较够用,几乎也就是矩阵运算的常用的方法. 约定: import numpy as np 常用的创建ndarray的函数有:np.array, n ...

  9. 实现了一个简单的key-value存储系统

    实现了一个简单的key-value存储系统 源码下载: kvfs.rar 正文: 所谓的Key-Value就是每次存储一个数据时,是根据Key进行索引存储的.为了实现Key的快速查找功能,我使用了B- ...

  10. tastypie Django REST API developement 1)

    Read by linux/GNU commands Let's follow and start from here:http://django-tastypie.readthedocs.org/e ...