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. How To Configure Logging And Log Rotation In Apache On An Ubuntu VPS

    Introduction The Apache web server can be configured to give the server administrator important info ...

  2. JavaScript插件——标签页

    JavaScript插件——标签页 前言 阅读之前您也可以到Bootstrap3.0入门学习系列导航中进行查看http://www.cnblogs.com/aehyok/p/3404867.html ...

  3. discuz 门户功能增加自定义keywords字段

    discuz的门户的“发布文章”功能中,没有自动添加keywords字段,结果在文章页面中的meta的keywords中只显示标题,这样对于seo及其不利,今天整理了添加keywords字段方法. 一 ...

  4. ios学习笔记第四天之官方文档总结

    start developing ios app today. 官方文档的体系结构为: 各层的主要框架图: objectice-c是动态语言 Objective-C 为 ANSI C 添加了下述语法和 ...

  5. breakpad是Google开源的一套跨平台工具

    windows下捕获dump之Google breakpad_client的理解   breakpad是Google开源的一套跨平台工具,用于dump的处理.很全的一套东西,我这里只简单涉及break ...

  6. SQL Server中的高可用性1

    SQL Server中的高可用性(1)----高可用性概览   自从SQL Server 2005以来,微软已经提供了多种高可用性技术来减少宕机时间和增加对业务数据的保护,而随着SQL Server ...

  7. 超详细LAMP环境搭建

    一.准备工作 1.安装编译工具gcc.gcc-c++ 注意解决依赖关系,推荐使用yum安装,若不能联网可使用安装光盘做为yum源—— 1)编辑yum配置文件: # mount /dev/cdrom / ...

  8. [重构到模式-Chain of Responsibility Pattern]把Fizz Buzz招式重构到责任链模式

    写一段程序从1打印到100,但是遇到3的倍数时打印Fizz,遇到5的倍数时打印Buzz,遇到即是3的倍数同时也是5的倍数时打印FizzBuzz.例如: 1 2 Fizz 4 Buzz Fizz 7 8 ...

  9. building android/ubuntu-touch on 32bit machine

    host C: libhost <= build/libs/host/CopyFile.c host StaticLib: libhost (/media/linux/1/touch/expor ...

  10. Tomcat 配置成https协议

    Tomcat 配置成https协议 在命令提示符窗口,进入Tomcat目录,执行以下命令:  keytool -genkey -alias tomcat -keyalg RSA -keypass ch ...