简介

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在三小时内开发一个寻人平台的更多相关文章

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

    snapman是一个简单而强大的团队协作软件,在上面的信息可以是数据.可以是规则.也可以是自动化代码:最重要的它是一个可以开发的协作平台,所有信息都可以作用到所有人或机器上,大大减少了工作的复杂度.软 ...

  2. Java SSM三端分离开发在线教育平台实战视频教程

    目录: 1-01——在线网校实战课程介绍1-02——Eclipse.Maven.JDK介绍1-03——Maven构建Project1-04——新浪SAE介绍2-01——平台业务结构概览2-02——平台 ...

  3. 03 . Go开发一个日志平台之Elasticsearch使用及kafka消费消息发送到Elasticsearch

    Elasticsearch使用 详细使用请看我写的Go操作Elasticsearch专篇 https://www.cnblogs.com/you-men/p/13391265.html example ...

  4. 在半小时内从无到有开发并调试一款Chrome扩展(Chrome插件/谷歌浏览器插件)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_120 就在不久之前,我们目前这个毕业班的班长那日同学和我说,他正在公司开发Chrome扩展,看起来很高大上的技术,实际开发却非常简 ...

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

    三小时学会Kubernetes:容器编排详细指南 如果谁都可以在三个小时内学会Kubernetes,银行为何要为这么简单的东西付一大笔钱? 如果你心存疑虑,我建议你不妨跟着我试一试!在完成本文的学习后 ...

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

    2017-2018-2 20165228 实验三<敏捷开发与XP实践>实验报告 相关知识点 (一)敏捷开发与XP 通过 XP准则来表达: 沟通 :XP认为项目成员之间的沟通是项目成功的关键 ...

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

    ---恢复内容开始--- JAVA实验报告三:敏捷开发与XP实践 20135231 何佳 实验内容 1. XP基础 2. XP核心实践 3. 相关工具 实验要求 1.没有Linux基础的同学建议先学习 ...

  8. [转载]三小时学会Kubernetes:容器编排详细指南

    原翻译by梁晓勇 原英文:Learn Kubernetes in Under 3 Hours: A Detailed Guide to Orchestrating Containers 我很奇怪,为什 ...

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

    简介 MVC框架在现在的开发中相当流行,不论你使用的是JAVA,C#,PHP或者IOS,你肯定都会选择一款框架.虽然不能保证100%的开发语言都会使用框架,但是在PHP社区当中拥有*多数量的MVC框架 ...

随机推荐

  1. C语言深度剖析学习错误点记录

    0. static修饰变量和函数 static修饰变量,1)限定作用域,本文件内.全局变量(自定义起,本文件前面要用需extern声明),局部变量函数内:2)生命周期,程序运行期间一直保存. stat ...

  2. box2dweb之关节joint(连接器)

    1 概述 前篇基础文章看完后基本上就应该对box2dweb能上手了,下面来介绍一下box2dweb非常重要的一个概念,关节(joint)也有叫连接器的,总之是一个意思.下面是关节详细的类库说明: BO ...

  3. HTML语言的一些元素(五)

    一.table表格语法与结构 <table> <tr> <td> </td> <td> </td> <td> < ...

  4. JSTL 核心标签库

    SP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签. 除了这些,它还提供了 ...

  5. JAVA多线程与多进程

    并发与并行是两个既相似而又不相同的概念,但往往容易混为一谈,这两者究竟有什么区别呢?本文通过一个例子让你更好地理解(本文由并发编程网翻译). 现代社会是并行的:多核.网络.云计算.用户负载,并发技术对 ...

  6. Hibernate Annotation笔记

    (1)简介:在过去几年里,Hibernate不断发展,几乎成为Java数据库持久性的事实标准.它非常强大.灵活,而且具备了优异的性能.在本文中,我们将了解如何使用Java 5 注释来简化Hiberna ...

  7. php中时间戳和日期格式的转换

    一,PHP时间戳函数获取指定日期的unix时间戳 strtotime(”2009-1-22″) 示例如下: echo strtotime(”2009-1-22″) 结果:1232553600 说明:返 ...

  8. struts自定义拦截器

    第01步:配置web.xml,启动struts框架 <?xml version="1.0" encoding="UTF-8"?> <web-a ...

  9. c#如实现将一个数字转化为其他进制字符串输出

    之前在  os  上看到有人说过 一直想整理 但是一直没时间 后来 从csdn 上  知道了一份 下面内容 来自 (1)http://bbs.csdn.net/topics/60512816 tost ...

  10. -XX:+printGC

    -XX:+printGC 可以打印GC的简要信息[GC 4790K->374K(15872K), 0.0001606 secs][GC 4790K->374K(15872K), 0.000 ...