第一章- Symfony介绍ob娱乐下载
symfony能为ob娱乐下载你做什么?使用它需要什么?本章将回答这些问题。
ob娱乐下载Symfony简论
框架通过自动化许多用于特定目的的模式来简化应用程序开发。框架还为代码添加了结构,促使开发人员编写更好、更可读、更可维护的代码。最终,框架使编程更容易,因为它将复杂的操作封装到简单的语句中。
ob娱乐下载Symfony是一个完整的框架,旨在通过几个关键特性来优化web应用程序的开发。对于初学者来说,它分离了web应用程序的业务规则、服务器逻辑和表示视图。它包含大量旨在缩短复杂web应用程序开发时间的工具和类。此外,它还自动执行常见任务,以便开发人员可以完全专注于应用程序的细节。这些优势的最终结果意味着每次构建新的web应用程序时都不需要重新发明轮子!
ob娱乐下载Symfony完全是用PHP编写的。它已经在各种真正的-世界项目,实际上用于高需求的电子商务网站。它兼容大多数现有的数据库引擎,包括MySQL, PostgreSQL, Oracle和Microsoft SQL Server。它运行在*nix和Windows平台上。让我们先来仔细看看它的特点。
ob娱乐下载Symfony的特性
ob娱乐下载Symfony的构建是为了满足以下需求:
- 易于在大多数平台上安装和配置(并保证在标准*nix和Windows平台上工作)
- 数据库engine-independent
- 在大多数情况下,使用简单,但仍然足够灵活,可以适应复杂的情况
- 基于约定优于配置的前提——开发人员只需要配置非常规的
- 符合大多数web最佳实践和设计模式
- 企业就绪——可适应现有的信息技术(IT)策略和体系结构,对于长期项目来说足够稳定
- 非常易读的代码,带有phpDocumentor注释,便于维护
- 易于扩展,允许与其他供应商库集成
自动化Web项目特性
大多数web项目的常见特性都是在symfony中自动实现的,如下所示:ob娱乐下载
- 内置的国际化层允许数据和界面转换以及内容本地化。
- 该演示使用的模板和布局可以由HTML设计人员在不了解框架的情况下构建。通过将大量代码封装在简单的函数调用中,helper减少了要编写的表示代码量。
- 表单支持自动验证和重新填充,这确保了数据库中数据的高质量和更好的用户体验。
- 输出转义保护应用程序免受损坏数据的攻击。
- 缓存管理特性可以减少带宽使用和服务器负载。
- 身份验证和凭证特性有助于创建受限区域和用户安全管理。
- 路由和智能url使页面地址成为界面和搜索引擎友好的一部分。
- 内置的电子邮件和API管理功能允许web应用程序超越经典的浏览器交互。
- 由于自动分页、排序和过滤,列表更加用户友好。
- 工厂、插件和事件提供了高级别的可扩展性。
开发环境和工具
为了满足拥有自己的编码指南和项目管理规则的企业的需求,symfony可以完全定制。ob娱乐下载默认情况下,它提供了几个开发环境,并与多个工具捆绑在一起,使常见的软件工程任务自动化:
- 代码生成工具非常适合原型设计和一键式后端管理。
- 内置的单元和功能测试框架提供了允许测试驱动开发的完美工具。
- 调试面板通过在开发人员正在工作的页面上显示开发人员需要的所有信息来加速调试。
- 命令行界面自动化两个服务器之间的应用程序部署。
- 实时配置更改是可能且有效的。
- 日志功能为管理员提供了应用程序活动的完整细节。
谁创造了Symfoob娱乐下载ny ?为什么?
symfony的第一个版本是由项目创始人Fob娱乐下载abien Potencier(本书的合著者)在2005年10月发布的。Fabien是senseno公司的首席执行官。http://www.sensio.com/),这是一家法国网络机构,以其对网络开发的创新观点而闻名。
早在2003年,Fabien花了一些时间查询现有的PHP web应用程序开源开发工具。他发现没有一个符合先前描述的要求。当PHP 5发布时,他认为可用的工具已经达到了足够成熟的阶段,可以集成到一个功能齐全的框架中。随后,他花了一年时间开发symfony核心,其工作基于Mojavi模型-视图-控制器(Mob娱乐下载VC)框架、Propel对象-关系映射(ORM)和Ruby on Rails模板助手。
Fabien最初为Sensio的项目构建symfob娱乐下载ony,因为拥有一个可用的有效框架是更快、更有效地开发应用程序的理想方式。它还使web开发更直观,最终的应用程序更健壮,更易于维护。该框架在为一家内衣零售商构建电子商务网站时进入了试验场,随后被应用于其他项目。
在成功地在几个项目中使用symfony之后,Fabob娱乐下载ien决定在开源许可下发布它。他这样做是为了将这项工作捐赠给社区,从用户反馈中受益,展示Sensio的经欧宝体育平台怎么样验,而且因为它很有趣。
请注意
为什么是“ob娱乐下载symfony”而不是“FooBarFramework”?因为Fabien想要一个短的名字,包含一个s,像在Sensio中,和一个f,像在framework中——容易记住,不与其他开发工具相关联。而且,他不喜欢大写字母。ob娱乐下载symfony足够接近,即使不完全是英文,而且它也可以作为项目名称。另一个选择是“baguette”。
为了使sob娱乐下载ymfony成为一个成功的开源项目,它需要有大量的英文文档,以提高采用率。欧宝官网下载appFabien邀请Sensio的同事François Zaninotto(本书的另一位作者)深入研究代码,并撰写一本关于它的在线书籍。这花了一段时间,但当项目公开时,它被记录得足够好,吸引了许多开发人员。剩下的就是历史了。
Symfob娱乐下载ony社区欧宝体育平台怎么样
一旦symfony网站(ob娱乐下载/)发布后,世界各地的许多开发人员下载并安装了symfony框架,阅读了在线文档,并使用symfony构建了他们的第一个应用程序。欧宝官网下载appob娱乐下载
Web应用程序框架在当时非常流行,对全功能PHP框架的需求非常大。ob娱乐下载Symfony提供了一个引人注目的解决方案,因为其令人印象深刻的代码质量和大量的文档——这是框架类别中与其他参与者相比的两个主要优势。欧宝官网下载app贡献者很快就浮出水面,提出补丁和增强,校对文档,并执行其他急需的角色。欧宝官网下载app
公共资源库和票务系统提供了多种贡献方式,欢迎所有志愿者。Fabien仍然是源代码存储库主干的主要提交者,并保证代码的质量。
今天,symfonyob娱乐下载论坛,邮件列表,以及互联网中继聊天(IRC)通道提供理想的支持渠道,似乎每个问题平均有四个答案。新用户每天都在安装symfony, ob娱乐下载wiki和代码片段部分包含大量用户贡献的文档。欧宝官网下载app如今,symfonyob娱乐下载是最流行的PHP框架之一。
symfob娱乐下载ony社区是框架欧宝体育平台怎么样的第三个优势,我们希望您在读完本书后加入它。
Symob娱乐下载fony是给我的吗?
无论您是PHP专家还是web应用程序编程新手,都能够使用symfony。ob娱乐下载决定是否这样做的主要因素是项目的规模。
如果你想开发一个简单的网站,只有5到10个页面,对数据库的访问有限,并且没有义务确保其性能或提供文档,那么你应该只使用PHP。欧宝官网下载app你不会从web应用框架中获得太多,使用面向对象或MVC模型可能只会减慢你的开发过程。顺便说一句,symfony并没有ob娱乐下载优化到在共享服务器上高效运行,因为在共享服务器上PHP脚本只能以公共网关接口(CGI)模式运行。
另一方面,如果您要开发更复杂的web应用程序,需要大量的业务逻辑,仅靠PHP是不够的。如果您计划在将来维护或扩展您的应用程序,您将需要您的代码是轻量级的、可读的和有效的。如果希望以直观的方式使用用户交互的最新进展(如Ajax),就不能只编写数百行JavaScript。如果您希望获得乐趣并快速开发,那么仅使用PHP可能会令人失望。在所有这些情况下,symfony都适合你ob娱乐下载。
当然,如果你是一个专业的web开发人员,你已经知道了web应用程序框架的所有好处,你需要一个成熟的,有良好文档记录的,有一个大型社区的框架。欧宝体育平台怎么样不用再寻找了,因为symfony就是你的ob娱乐下载答案。
提示
如果您想要一个可视化演示,请查看symfony网站上提供的截屏。ob娱乐下载您将看到使用symfony开发应用程序是多么快速和有趣。ob娱乐下载
基本概念
在开始学习symfony之前,您应该了解一些基本概念。ob娱乐下载如果您已经知道OOP、ORM、RAD、DRY、KISS、TDD和YAML的含义,可以跳过前面的内容。
PHP
ob娱乐下载Symfony是用PHP开发的(http://www.php.net/),并致力于使用同一语言构建web应用程序。因此,充分理解PHP和面向对象编程是充分利用框架的必要条件。运行symfony所需的最低PHP版本是PHP 5.2.4。ob娱乐下载
面向对象程序设计
面向对象编程(OOP)将不在本章中进行解释。它本身就需要一本书!因为symfonob娱乐下载y广泛使用了从PHP 5开始的面向对象机制,OOP是学习symfony的先决条件。
维基百科对OOP的解释如下:
“面向对象编程背后的思想是,计算机程序可以被视为由相互作用的独立单元或对象的集合组成,这与传统的观点相反,在传统的观点中,程序可以被视为函数的集合,或简单地视为计算机指令的列表。”
PHP实现了面向对象的范例,包括类、对象、方法、继承等等。对于不熟悉这些概念的读者,建议阅读相关的PHP文档欧宝官网下载apphttp://www.php.net/manual/en/language.oop5.basic.php.
魔术方法
PHP对象功能的优点之一是使用了神奇的方法。这些方法可用于覆盖类的默认行为,而无需修改外部代码。它们使PHP语法不那么冗长,更具有可扩展性。它们很容易识别,因为魔术方法的名称以两个下划线开头(__
).
例如,当显示一个对象时,PHP隐式地查找__toString ()
方法查看开发人员是否定义了自定义显示格式:
myObject美元=新myClass();回声myObject美元;//将寻找一个神奇的方法回声myObject美元- > __toString();
ob娱乐下载Symfony使用魔术方法,因此您应该对它们有透彻的了解。它们在PHP文档(欧宝官网下载apphttp://www.php.net/manual/en/language.oop5.magic.php).
对象-关系映射(ORM)
数据库是关系型的。PHP和symfob娱乐下载ony是面向对象的。为了以面向对象的方式访问数据库,需要一个将对象逻辑转换为关系逻辑的接口。这个接口称为对象-关系映射(ORM)。
ORM由对象组成,这些对象提供对数据的访问,并将业务规则保留在自身中。
对象/关系抽象层的一个好处是,它可以防止您使用特定于给定数据库的语法。它自动将对模型对象的调用转换为针对当前数据库优化的SQL查询。
这意味着在项目中间切换到另一个数据库系统很容易。假设您必须为一个应用程序编写一个快速原型,但是客户还没有决定哪个数据库系统最适合他的需求。例如,您可以开始使用SQLite构建应用程序,然后在客户端准备决定时切换到MySQL、PostgreSQL或Oracle。只需更改配置文件中的一行,它就可以工作。
抽象层封装数据逻辑。应用程序的其余部分不需要知道SQL查询,而且很容易找到访问数据库的SQL。专攻数据库编程的开发人员也清楚地知道该往哪里走。
使用对象而不是记录,使用类而不是表,还有另一个好处:可以向表添加新的访问器。例如,如果您有一个名为客户端
有两个字段,FirstName
而且姓
,你可能只需要一个的名字
.在面向对象的世界中,这就像向对象添加新的访问器方法一样简单客户端
类,像这样:
公共函数getName(){返回这个美元->getFirstName().' '.这个美元->getLastName();}
所有重复的数据访问功能和数据的业务逻辑都可以在这样的对象中维护。例如,考虑一个类ShoppingCart
你在其中保存项目(即对象)。要检索用于结帐的购物车的全部金额,可以添加getTotal ()
方法,像这样:
公共函数getTotal(){总美元=0;foreach(这个美元->getItems()作为美元的项目){总美元+ =美元的项目->getPrice()*美元的项目->getQuantity();}返回总美元;}
使用此方法,我们能够控制从对象级别返回的值。想象一下,如果稍后有一个决定,要添加一些折扣逻辑,这将影响总数-它可以简单地添加到getTotal ()
方法还是要的getPrice ()
将返回项的方法和正确的值。
symfony开箱即用,支持PHob娱乐下载P中两个最流行的开源orm: Propel和Doctrine。ob娱乐下载Symfony将两者无缝集成。当创建一个新的symfony项目时,使用ob娱乐下载Propel还是Doctrine是一个选择的问题。
本书将描述如何使用推进和教义对象,但要获得更完整的参考,请访问推动网站或学说推荐使用网站。
应用程序快速开发(RAD)
编程web应用程序一直是一项乏味而缓慢的工作。按照通常的软件工程生命周期(例如,Rational统一过程提出的生命周期),web应用程序的开发不能在编写完整的需求集、绘制大量的统一建模语言(UML)图和生成大量的初步文档之前开始。欧宝官网下载app这是由于开发的总体速度,缺乏编程语言的通用性(在真正看到程序运行之前,您必须构建、编译、重新启动,以及谁知道还有什么),最重要的是,客户是非常理性的,不会经常改变他们的想法。
如今,业务发展得更快,客户往往会在项目开发过程中不断改变主意。当然,他们希望开发团队能够适应他们的需求并快速修改应用程序的结构。幸运的是,使用像Python、Ruby和PHP这样的脚本语言可以很容易地应用其他编程策略,例如快速应用程序开发(RAD)或敏捷软件开发。
这些方法的一个想法是尽快开始开发,以便客户可以检查工作原型并提供额外的指导。然后在迭代过程中构建应用程序,在较短的开发周期内发布功能越来越丰富的版本。
对于开发者来说,后果是多重的。开发人员在实现功能时不需要考虑未来。所使用的方法应该尽可能简单直接。KISS原则的格言很好地说明了这一点:保持简单,愚蠢。
当需求发生变化或添加特性时,现有代码通常必须部分重写。这个过程被称为重构,在web应用程序开发过程中经常发生。代码根据其性质转移到其他地方。重复的代码部分被重构到一个地方,从而应用Don't Repeat Yourself (DRY)原则。
为了确保应用程序在不断变化时仍然能够运行,它需要一整套可以自动化的单元测试。如果编写得好,单元测试是一种可靠的方法,可以确保添加或重构代码不会破坏任何东西。一些开发方法甚至规定在编码之前编写测试——这被称为测试驱动开发(TDD)。
请注意
还有许多其他与敏捷开发相关的原则和良好习惯。最有效的敏捷开发方法之一被称为极限编程(缩写为XP), XP文献将教会您很多关于如何以快速有效的方式开发应用程序的知识。一个好的开始是Kent Beck (Addison-Wesley)的XP系列书籍。
ob娱乐下载Symfony是RAD的完美工具。事实上,该框架是由一个web代理机构构建的,该机构将RAD原则应用于自己的项目。这意味着学习使用symfony并不是学习一门新语言,而是应用正确ob娱乐下载的反应和最佳的判断,以便以更有效的方式构建应用程序。
YAML
根据官方YAML的说法网站, YAML是“适用于所有编程语言的人类友好的数据序列化标准”。换句话说,YAML是一种非常简单的语言,用于以类似xml的方式描述数据,但语法要简单得多。它特别适用于描述可以转换为数组和散列的数据,就像这样:
美元的房子=数组(“家庭”= >数组(“名字”= >“母鹿”,“父母”= >数组(“约翰。”,“简”),“孩子”= >数组(“保罗”,“马克”,“西蒙妮”)),“地址”= >数组(“数量”= >34,“街道”= >“大街”,“城市”= >“Nowheretown”,“zipcode”= >“12345”));
这个PHP数组可以通过解析YAML字符串自动创建:
房子:家庭:姓名:Doe父母:- John - Jane孩子:- Paul - Mark - Simone地址:号码:34街:主街城市:Nowheretown邮编:“12345”
在YAML中,结构通过缩进显示,序列项由破折号表示,映射中的键/值对由冒号分隔。YAML还有一种简写语法,可以用更少的行来描述相同的结构,其中数组显式地用[]
和哈希{}
.因此,之前的YAML数据可以写得更短,如下所示:
房子:家庭:{名字:Doe,父母:[John, Jane],孩子:[Paul, Mark, Simone]}地址:{编号:34,街道:Main street,城市:Nowheretown,邮编:“12345”}
YAML是“YAML Ain't Markup Language”的首字母缩写,发音为“yamel”。这种格式从2001年就已经出现了,而且YAML解析器适用于各种各样的语言。
提示
YAML格式的规格可在以下站点获得http://www.yaml.org/.
如您所见,YAML的编写速度比XML快得多(没有结束标记或显式引号),而且它比XML更强大. ini
文件(不支持层次结构)。这就是symfony使用ob娱乐下载YAML作为首选语言来存储配置的原因。您将在本书中看到很多YAML文件,但它非常简单,您可能不需要了解更多。
总结
ob娱乐下载Symfony是一个PHP web应用程序框架。它在PHP语言之上增加了一个新层,提供了加快复杂web应用程序开发的工具。这本书将告诉您关于它的一切,您只需要熟悉现代编程的基本概念就可以理解它——即面向对象编程(OOP)、对象关系映射(ORM)和快速应用程序开发(RAD)。唯一需要的技术背景是PHP知识。
本作品在GFDL许可下获得许可。