使用Symfony 2在三小时内开发一个寻人平台
简介
Symfony2是一个基于PHP语言的Web开发框架,有着开发速度快、性能高等特点。但Symfony2的学习曲线也比 较陡峭,没有经验的初学者往往需要一些练习才能掌握其特性。
本文通过一个快速开发寻人平台的实例向读者介绍 Symfony2框架的一些核心功能和特点。通过阅读本文,你可以通过一些具体的例子了解Symfony2框架的优秀特性和技术特点 ,从而体会到使用Symfony2框架支持快速网站开发这一优势。
适合人群
本文适用于希望提高PHP语言的开发技术,或者对Symfony2框架有兴趣的读者。
本文也适用于系统架构师和各类技术决策者。
1.前言
在不久前的4月20日,中国四川省雅安地区发生了7.0级地震,累计受灾人数达到200多万。寻人平台在这 样的情况下能够起到很大的帮助,而且,寻人平台越早上线,实用价值就越高。
Symfony2可以用来支持大型网站的 建设,在中小型网站的快速搭建和开发上也有着非常好的支持。我借由这次撰文的机会,向大家具体地分享一下我是如何在 3个小时内基于Symfony2开发出来一套支持PFIF[^1]格式的网站寻人平台的,希望读者能够对Symfony2的各个组件以及功能 产生一些了解。
[^1]: People Finder Interchange Format(wiki)是一个被广泛使用的开放的数据结构及标准, 灾难发生后可以用该标准在不同的组织或网站间交换寻人信息,帮助失去联系的人找到彼此。
2.Bundle的使用
Symfony2框架以及相关社区最大的特点之一就是支持Bundle。什么是Bundle呢?简单来说,Bundle就是一种“功能 ”的抽象。通过把一类具体的问题抽象成一个Bundle,可以把一个系统的逻辑进行切分:Bundle的开发者可以专注在某类问 题的解决上,而Bundle的使用者则可以把工作的重心放在自己的业务逻辑上。
在互联网开发领域,存在着大量可以 被抽象的功能。比如用户登录系统,比如新闻评论,比如JS/CSS文件的压缩和合并等等。举个具体的例子,比如用户登录系 统,大部分项目对于用户系统的需求其实都是差不多的,但每次要开发新产品的时候,都多多少少会去重新造一整个或一部 分用户系统的轮子。而一个专门用来负责管理用户系统的Bundle的出现则会减轻这些项目的开发压力,提高项目质量的同时 可以加快项目的整体开发速度。
Symfony2也支持Bundle。Symfony2的社区有大量由社区进行维护的Bundle,使用这 些开源的Bundle可以让我们的项目直接拥有那部分Bundle所提供的功能。
以下列举了本项目中用到的一些第三方 Bundle以及所对应负责的任务。
Bundle名 | 功能介绍 | 在项目中的职责 |
---|---|---|
MopaBootstrapBundle | 提供基于Bootstrap的页面结构和模板 | 提供页面的基本HTML架构,样式 |
NelmioApiDocBundle | 自动生成API的文档及接口测 试工具 | 生成API文档以及接口测试工具,并允许工程师及第三方调用者使用工具测试接口是否正常 |
JMSSerializerBundle | 对象进行序列化工具 | 在接口中,将Doctrine2生成出来的 Entity对象转换为Json格式 |
需要安装一个Bundle,通常只需要两步:
使用composer安装这些Bundle
对Symfony2进行配置,开启这些Bundle的支持并且做一些设置工作。
大部分Bundle通过以上两步就能够被集成进你的项目中,安装这些Bundle只需要修改一些配置文件并且运行一个系统命 令即可。
来源:http://www.bianceng.cn/webkf/PHP/201309/37273.htm
使用Symfony 2在三小时内开发一个寻人平台的更多相关文章
- 怎么用snapman一个人在三天内开发出一个复杂的软件开发项目管理系统
snapman是一个简单而强大的团队协作软件,在上面的信息可以是数据.可以是规则.也可以是自动化代码:最重要的它是一个可以开发的协作平台,所有信息都可以作用到所有人或机器上,大大减少了工作的复杂度.软 ...
- Java SSM三端分离开发在线教育平台实战视频教程
目录: 1-01——在线网校实战课程介绍1-02——Eclipse.Maven.JDK介绍1-03——Maven构建Project1-04——新浪SAE介绍2-01——平台业务结构概览2-02——平台 ...
- 03 . Go开发一个日志平台之Elasticsearch使用及kafka消费消息发送到Elasticsearch
Elasticsearch使用 详细使用请看我写的Go操作Elasticsearch专篇 https://www.cnblogs.com/you-men/p/13391265.html example ...
- 在半小时内从无到有开发并调试一款Chrome扩展(Chrome插件/谷歌浏览器插件)
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_120 就在不久之前,我们目前这个毕业班的班长那日同学和我说,他正在公司开发Chrome扩展,看起来很高大上的技术,实际开发却非常简 ...
- 三小时学会Kubernetes:容器编排详细指南
三小时学会Kubernetes:容器编排详细指南 如果谁都可以在三个小时内学会Kubernetes,银行为何要为这么简单的东西付一大笔钱? 如果你心存疑虑,我建议你不妨跟着我试一试!在完成本文的学习后 ...
- 2017-2018-2 20165228 实验三《敏捷开发与XP实践》实验报告
2017-2018-2 20165228 实验三<敏捷开发与XP实践>实验报告 相关知识点 (一)敏捷开发与XP 通过 XP准则来表达: 沟通 :XP认为项目成员之间的沟通是项目成功的关键 ...
- 20135231 JAVA实验报告三:敏捷开发与XP实践
---恢复内容开始--- JAVA实验报告三:敏捷开发与XP实践 20135231 何佳 实验内容 1. XP基础 2. XP核心实践 3. 相关工具 实验要求 1.没有Linux基础的同学建议先学习 ...
- [转载]三小时学会Kubernetes:容器编排详细指南
原翻译by梁晓勇 原英文:Learn Kubernetes in Under 3 Hours: A Detailed Guide to Orchestrating Containers 我很奇怪,为什 ...
- [转]1小时内打造你自己的PHP MVC框架
简介 MVC框架在现在的开发中相当流行,不论你使用的是JAVA,C#,PHP或者IOS,你肯定都会选择一款框架.虽然不能保证100%的开发语言都会使用框架,但是在PHP社区当中拥有*多数量的MVC框架 ...
随机推荐
- SQL Update实现使用一个表的数据更新另一张表
表结构 功能 SQL Serevr Access 表结构
- css元素position定位和z-index
网页元素定位 1.注意点: 1)给元素设定高度要小心,除非给已知大小的图片设置高度,否则无法得知指定元素在页面上会有多高.此时最好通过padding等来控制高度. 2)对于同一个元素,不要讲float ...
- nodejs weixin 笔记
http://www.oschina.net/code/snippet_218887_25870 好文章: http://codelife.me/blog/2013/04/23/developing- ...
- js 多选题选项内容显示在标题下
<body><div class="page-container"> <div class="view-container"> ...
- Java基础之创建窗口——向窗口中添加菜单(Sketcher)
控制台程序. JMenuBar对象表示放在窗口顶部的菜单栏.可以为JMenuBar对象添加JMenu或JMenuItem对象,它们都显示在菜单栏上.JMenu对象是带有标签的菜单,单击就可以显示一列菜 ...
- wampserver环境下,apache本地下设置多个域名
Apache在安装之后默认只是指向一个站点,即127.0.0.1,如果要进行多站点的配置,需要更改一些配置. 步骤.方法: 1,)让Apache在启动时能加载虚拟主机模块. 打开Apache安装目录下 ...
- Tomcat 部署:工程下 META-INF 目录下的 Context.xml
tomcat 在META-INF 文件夹中添加context.xml,使项目自动应用更新文件 Meta-inf文件夹下新建context.xml. <Context path="/FU ...
- tableview隐藏多余分割线
- (void)setExtraCellLineHidden: (UITableView *)tableView{ UIView *view =[ [UIView alloc]init]; view. ...
- Eclipse中进行Gradle+Jetty部署的web项目的断点调试
1.自行配置好build.gradle文件和按照gradle的web项目目录结构规范建立java.resourece和webapp文件夹 可在build.gradle文件中自由设定“http端口” 1 ...
- C++Builder 笔记
1.界面窗口如何不显示标题栏? 在Form属性栏里面把BorderStyle的值设为None 2.wchar_t wchar_t是C/C++的字符类型,是一种扩展的存储方式,wchar_t类型主要用在 ...