某网站看到的某神的Symfony_使用心得
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_使用心得的更多相关文章
- 【网站支付PHP篇】thinkPHP集成汇潮支付(ecpss)
系列目录 支付宝集成:http://www.cnblogs.com/nerve/p/3437879.html 系列说明 最近在帮朋友的系统安装支付模块(兑换网站积分),现在总结一些开发心得,希望对大家 ...
- 【网站支付PHP篇】thinkPHP集成支付宝支付(担保交易)
目录 系列说明 开发环境 部署支付宝 支付请求 支付宝返回处理 系列说明 最近在帮朋友的系统安装支付模块(兑换网站积分),现在总结一些开发心得,希望对大家有用.这个系列会讲以下第三方支付平台的集成: ...
- Sublime Text 2 快捷键 插件配置
一.前言之前 从设计到前端,有过一段时间是懵懵懂懂的状态,缺乏对整个职业更加深入的了解.后来混迹于各个前端大牛的博客,在各个QQ群里聆听各路大神的经验之谈,坚定了前端之路的信心.一直收藏各类精华的帖子 ...
- Git的简单的基本使用
前言: 接触了Android Studio,自然是知道了Github这个网站,这个网站有许多大神们做的开源库,我们只需要简单地引入就是可以使用到这些开源库从而实现酷炫的效果,最近也是刚接触到Git的使 ...
- [C#]基于命名管道的一对多进程间通讯
在工作中碰到了一个进程间通讯的问题,大概是这样的: 项目本身是.net Core做的,但是有部分功能Core中不方便实现,有的是依赖Framework,有的是因为权限和安全问题. 那基于这个问题,问了 ...
- Asp.net Core认证和授权:JWT认证和授权
JWT验证一般用户移动端,因为它不像cookie验证那样,没有授权跳转到登陆页面 JWT是json web token的简称,在 jwt.io 网址可以看到 新建一个API项目,通过postman ...
- flask+apache+mod-wsgi部署遇到的坑
首先,看到这种方式部署,我也有疑问,为什么不用nginx,gunicorn.接手的项目,就先按照前人思路run起来. 线上使用ubuntu系统,apache2,而给我玩耍的测试机是centos6.5, ...
- mendeley不能做中文批注的解决方案
mendeley是一个很好用且免费的文献管理工具,但在ubuntu系统下,对文献进行批注无法切换中文输入法,实际上对ibus是支持的,但ibus实在是太难用,大部分ubuntu用户钟爱的还是fcitx ...
- seo搜索优化教程13-SEO搜索引擎站点收录
为了使大家更方便的了解及学习网络营销推广.seo搜索优化,星辉科技强势推出seo搜索优化教程.此为seo教程第13课 想要用户能够在搜索引擎中通过关键词搜索到您的页面信息,首先要做的是让搜索引擎收录您 ...
随机推荐
- baidu 200兆SVN代码服务器
转 今天心情好,给各位免费呈上200兆SVN代码服务器一枚,不谢! 开篇先给大家讲个我自己的故事,几个月前在网上接了个小软件开发的私活,平日上班时间也比较忙,就中午一会儿休息时间能抽出来倒腾着去做 ...
- Leetcode::Longest Common Prefix && Search for a Range
一次总结两道题,两道题目都比较基础 Description:Write a function to find the longest common prefix string amongst an a ...
- IOS学习之路五(SpriteKit 开发飞机大战小游戏一)
参考SpriteKit 创建游戏的教程今天自己动手做了一下,现在记录一下自己怎么做的,今天之做了第一步,一共有三个部分. 第一步,项目搭建. 项目所用图片资源:点击打开链接 1.在Xcode打开之后, ...
- 我的JQuery复习笔记之①——text(),html(),val()的区别
text():①可匹配多个元素 ②过滤其中的标签(只显示文字) ③只适用于双标签 html():①只匹配选中元素中的第一个 ②不过滤其中标签 ③只适用于双标签 val():①只匹配选中元素中的第一个 ...
- T-SQL查询语句(三):多表查询
SQL查询语句<三>:多表查询 (也叫连接查询,此处为基于两个表的连接查询)如果一个查询需要对多个表进行操作就称为连接查询,连接查询的结果集或结果称为表之间的连接.连接查询实际上是通过各个 ...
- 用PowerShell代替批处理吧!
这篇文章主要介绍了用PowerShell代替批处理吧!本文讲解了批处理文件的历史.Windows NT 和 Cmd.exe.Windows Script 主机.进入 Windows PowerShel ...
- 纯Python综合图像处理小工具(2)图像增强
<背景> 这次分享的脚本是对图像进行增强处理,包含对图像像素的色彩增强.亮度增强.对比度增强.图像尖锐化等增强操作,主要基于PIL包的lambda和ImageEnhance模块. 使用方法 ...
- jQuery Mobile (中)
jQuery Mobile (中) 前言 昨天我们一起学习了一部分jquery mobile的知识,今天我们继续. 这些是些很基础的东西,有朋友觉得这个没有其它的好,但是学习下不吃亏嘛,我反正也不会一 ...
- Trie树及其应用
Trie树及其应用 Trie树 Trie树,又称单词查找树.字典树,是一种树形结构,是一种哈希树的变种,是一种用于快速检索的多叉树结构.典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经 ...
- 简单使用URLConnection、HttpURLConnection和HttpClient访问网络资源
URL的openConnection方法将返回一个URLConnection,该对象表示应用程序和URL之间的通信连接.程序可以通过它的实例向该URL发送请求,读取URL引用的资源. 下面通过一个简单 ...