使用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

时间: 2024-10-07 19:37:05

使用Symfony 2在三小时内开发一个寻人平台的相关文章

怎么用snapman一个人在三天内开发出一个复杂的软件开发项目管理系统

snapman是一个简单而强大的团队协作软件,在上面的信息可以是数据.可以是规则.也可以是自动化代码:最重要的它是一个可以开发的协作平台,所有信息都可以作用到所有人或机器上,大大减少了工作的复杂度.软件开发项目是人类工程中对人力.脑力的配合度要求最高的项目.所以高智商的人才开发出各种项目定义实施流程:PMBOK.CMMI.IPD.SCRUM.XP等,这些流程的实施离不开各种强大的信息系统.但是这些系统只适合于大公司大流程,到单个的项目组级别很难为项目具体的特点做适配,随心所欲的更改.比如做10个

【视频】半小时内编写一个贪吃蛇游戏

贪吃蛇编写提纲 致谢: 感谢 Ronnie Mooney ,我是在学习了他的视频后完成这个视频的,你可以在 [C#] Creating a Snake Game - Less than an Hour 找到他的视频(需翻墙,请自备梯子). 编写 Input 静态类 初始化静态变量 private static readonly Hashtable _keys = new Hashtable() 编写方法 public static void ChangeState(Keys key, bool

20135231 JAVA实验报告三:敏捷开发与XP实践

---恢复内容开始--- JAVA实验报告三:敏捷开发与XP实践 20135231 何佳 实验内容 1. XP基础 2. XP核心实践 3. 相关工具 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 2.完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等).解决办法(空洞的方法如“查网络”.“问同学”.“看书”等一律得0分)以及分析(从中

[转]1小时内打造你自己的PHP MVC框架

简介 MVC框架在现在的开发中相当流行,不论你使用的是JAVA,C#,PHP或者IOS,你肯定都会选择一款框架.虽然不能保证100%的开发语言都会使用框架,但是在PHP社区当中拥有*多数量的MVC框架.今天你或许还在使用Zend,明天你换了另一个项目也许就会转投Yii,Laravel或者CakePHP的怀抱.如果你刚开始使用一种框架,当你看它的源码的时候你会觉得一头雾水,是的,这些框架都很复杂.因为这些流行的框架并不是短时间之内就写出来就发行的,它们都是经过一遍又一遍的编写和测试加上不断的更新函

三小时学会Kubernetes:容器编排详细指南

三小时学会Kubernetes:容器编排详细指南 如果谁都可以在三个小时内学会Kubernetes,银行为何要为这么简单的东西付一大笔钱? 如果你心存疑虑,我建议你不妨跟着我试一试!在完成本文的学习后,你就能在Kubernetes集群上运行基于微服务的应用程序.我之所以能保证这一点,是因为我就是这么向客户介绍Kubernetes的. 这份指南与其他文章有何不同之处? 相当多!大多数指南是从Kubernetes概念和kubectl命令这类简单的东西开始的.它们假定读者熟悉应用程序开发.微服务和Do

2017-2018-2 20165228 实验三《敏捷开发与XP实践》实验报告

2017-2018-2 20165228 实验三<敏捷开发与XP实践>实验报告 相关知识点 (一)敏捷开发与XP 通过 XP准则来表达: 沟通 :XP认为项目成员之间的沟通是项目成功的关键,并把沟通看作项目中间协调与合作的主要推动因素. 简单 :XP假定未来不能可靠地预测,在现在考虑它从经济上是不明智的,所以不应该过多考虑未来的问题而是应该集中力量解决燃眉之急. 反馈 :XP认为系统本身及其代码是报告系统开发进度和状态的可靠依据.系统开发状态的反馈可以作为一种确定系统开发进度和决定系统下一步开

really?:讲师承诺:24小时内答疑;所有课时永久观看(不提供下载);课件下载

讲师承诺:24小时内答疑:所有课时永久观看(不提供下载):课件下载.看上图,really? 还有,我希望,51CTO学院,开发个客户端.我想平时,可以在我的安卓手机或iPhone上看教程.

(SegWit)隔离见证人在24小时内激活:比特币会如何变化?

海外最新数字货币比特币最新资讯: 什么是隔离见证? 隔离见证(通常简写为SegWit)是对比特币软件提出的一种更新,旨在解决比特币面临的一系列严重问题. SegWit是由比特币长期团队开发的对于Bitcoin Core的拟议更新.Bitcoin Core是当前最受欢迎的比特币标准客户端,由业内大多数企业使用. 最初,该更新旨在解决交易的可扩展性,这也是比特币软件中众所周知的弱点.虽然这种攻击向量对用户来说并不是最具破坏性的,但目前为止已经在多个攻击案例中被利用,因此也就凸显了修补这一漏洞的必要性

Java进阶(三)多线程开发关键技术

原创文章,转载请务必将下面这段话置于文章开头处. 本文转发自Jason's Blog,原文链接 http://www.jasongj.com/java/multi_thread/ sleep和wait到底什么区别 其实这个问题应该这么问--sleep和wait有什么相同点.因为这两个方法除了都能让当前线程暂停执行完,几乎没有其它相同点. wait方法是Object类的方法,这意味着所有的Java类都可以调用该方法.sleep方法是Thread类的静态方法. wait是在当前线程持有wait对象锁