初次接触 Django 或编程吗? 从这里开始吧!
随着 Python 的火热,这款由 Python 编写的Web框架也随之崛起。制作 Wiki 版 Django 文档是为了更好的支持Django 文档协作翻译小组的翻译工作。
本章是基于 Subversion 进行阐述的,并且所讲到的规则是建立在 如何在 Git 中创建并保存一个 Symfony 项目 一章中所讲内容的基础上。一旦当您通读了用 Symfony 创建您的第一个页面这篇文章,您将会对 Symfony 越来越熟悉。所以,理所当然这时候您可以创建您自己的项目了。
虽然本文是基于 Git 讲述的,但是如果您想把项目存储于 Subversion 中,本文所讲的泛型原则同样适用。当您通读了用 Symfony 创建您的第一个页面这篇文章,您将会对 Symfony 越来越熟悉。所以,理所当然这时候您可以创建您自己的项目了。在本章中,您将会学到一个最好的办法即通过使用 Git 源码控制管理系统去创建一个新的 Symfony 项目。
我们可以使用几个简单的工具把控制器设置为一个 SOAP 服务器。当然,您必须安装 PHP SOAP 扩展。介于目前 PHP SOAP 扩展不能生成 WSDL,您必须从头开始创建一个 WSDL 或者使用第三方的生成器。这里有几个通过 PHP 实现的 SOAP 服务器。比如 Zend SOAP 和 NuSOAP 。虽然在这些示例中只使用了 PHP SOAP 扩展,不过这个想法仍然应该适用于其它的实现。
最好的开发你的 Symfony 应用程序的方法就是使用 PHP 的内部网页服务器。然而,当使用老版本的 PHP 时或者当在开发环境运行应用程序时,你就会需要一个全功能的网页服务器。这篇文章介绍了在 Symfony 中使用 Apache 或者 Nginx 的一些方法。 当使用 Apache 时。你可以将 PHP 设置成 Apache module 或者使用 PHP FPM FastCGI。FastCGI 也是用 Nginx 使用 PHP 的最好的方法。
2.6 在 Symfony 2.6 节中介绍了把服务器作为后台进程运行的功能。从 PHP 5.4 版本以来,CLI SAPI 就带有内置的 web 服务器 built-in web server ,当您在开发项目的时候,它可以在本地运行您的程序,并且进行测试和展示。通过这种方式,您就没有必要很麻烦的去配置如同 Apache 或者 Nginx 等功能完整的 web 服务器。
有时候,您想通过某些规则和标准来定义并且展示不同的限制验证错误。比如,您建立了一个给用户进行注册的表单,用户需要输入身份信息和用户凭据来完成注册。当用户进行注册的时候,输入用户名和一个安全的密码是必不可少的,但是是否输入用户的银行账户信息并不是强制要求的,用户具有选择权。
您可以通过继承一个限制基类 Constraint 来创建一个自定义的验证限制,比如,您可以创建一个简单的验证器来检查一个字符串是否只包含字母和数字。 创建限制类首先,您可以通过继承 Constraint 来创建一个验证: // src/AppBundle/Validator/Constraints/ ContainsAlphanumeric.php namespace AppBundle\Validator\Constraints;
从 Symfony 2.7 开始,如果您使用一个过时的类、功能或选项,Symfony 就会触发 E_USER_DEPRECATED 错误。在内部,它看起来是像这样的东西:trigger_error( 'The fooABC method is deprecated since version 2.4 and will be removed in 3.0.', E_USER_DEPRECATED);这很好,因为您能够通过检查您的日志知道在您升级程序之前需要改变什么。
每隔几年,Symfony 都会发布一个新的主版本(第一个数字改变)。这些版本是最棘手的升级,因为它们允许包含向后兼容的中断。然而,Symfony 试图使这个升级过程尽可能的平稳。这意味着您可以在主版本发布之前更新您的代码。这被称为使您的代码未来兼容(future compatible)。这里有三个步骤升级一个主版本:使您的代码不是过时的;通过 Composer 更新新的主版本;
如果您正在升级一个副版本(中间的数字变化),那么您不应该会遇到重要的向后兼容性的改变。细节参见 Symfony backwards compatibility promise。然而,一些向后兼容的中断是可能发生的,您会在一秒钟内学习如何准备他们。这里有 2 个步骤来升级一个副版本:通过 Composer 升级 Symfony 库;更新您的代码,使之在新的版本中工作。
当一个新的补丁版本被发布时(只有最后一个数字改变了),被发布的内容只包含错误修正。这意味着升级一个补丁版本真的很简单。$ composer update symfony/symfony就是这个!您不应该遇到任何的后退 - 兼容性中断或是需要改变您的代码中的任何内容。这是因为当您开启您的工程的时候,您的 composer.json 包含应用了一个像 2.6.
表单组件包含三个核心的对象:一个是表单类型(实现 FormTypeInterface),Form 以及 the FormView。 经常被程序员操作的唯一的类是表单类型类,这个类作为表单的基类。它被用来生成 Form 以及 FormView。你可以通过模拟它和工厂的交互作用来直接测试它,但是这个会很复杂。最好的办法就是将它传递到 FormFactory 这样就会像真正在应用程序中使用一样。
由于 SwiftmailerBundle 的缘故,用 Symfony 发送电子邮件是相当简单的,是利用 Swift Mailer 库的能力。要功能测试电子邮件是否发送,甚至判断电子邮件主题,内容或者其他标题,您可以使用 Symfony 分析器。开始先用一个简单的控制器动作发送一封电子邮件:public function sendEmailAction($name){ $message = \Swift_Message::newInstance() ->
有时运行测试,在运行测试之前,需要做额外的引导工作。例如,如果您正在运行一个功能测试并引入了一个新的翻译资源,那么您需要在运行这些测试之前清除缓存。这份指导书包括了如何做到这一点。首先,添加以下文件:// app/tests.bootstrap.
一个 Symfony 项目中的 Doctrine 仓库(repositories)测试是不被推荐的。当您处理一个仓库(repository)的时候,您真正在处理一些面对真正的数据库连接的东西。幸运的是,您可以很容易地测试您对真实数据库的查询(queries),如下所述。功能测试如果您需要确实地执行一个查询,您需要启动(boot)内核(kernel)以获得一个有效的链接。
如果您的代码和数据库交互,例如从中读取数据或者写入数据,您需要把这个考虑进去来调整测试。有很多方法可以解决这个问题。您可以创建一个 Repository 的仿制品,然后用它来返回预期的对象。在功能测试中,您可能需要准备一个有预定值的测试数据库来确保您的测试始终有相同的数据来使用。如果您想直接测试您的查询(queries),看如何测试 Doctrine 仓库。
重点推荐一个只测试 Response 的功能测试。但是如果您写了监视您的生产服务器的功能测试,您也许想要写一个分析器数据的测试,因为它给了您一个很好的方法来检查各种事情并执行一些度量。Symfony 分析器为每一个请求采集大量数据。用这些数据来检查数据可调用的次数,框架中花费的时间,等等。
关注时代Java