提高你的生产力
Fabien Potencier著
作为web开ob娱乐下载发人员,使用symfony本身是提高您的工作效率的好方法。当然,每个人都知道symfony的详细异常和web调试工具栏可以极大地提高工ob娱乐下载作效率。本章将教你一些技巧和技巧,通过使用一些新的或不太知名的symfony特性来提高您的工作效率。ob娱乐下载
快速启动:自定义项目创建过程
感谢symfony CLI工ob娱乐下载具,创建一个新的symfony项目是快速而简单的:
$ php /path/to/ob娱乐下载symfony生成:project foo——orm=Doctrine
的生成:项目
Task为新项目生成默认目录结构,并创建具有合理默认值的配置文件。然后,您可以使用其他symfony任务来创建应ob娱乐下载用程序、安装插件、配置模型等等。
但是创建一个新项目的第一步通常都是一样的:创建一个主应用程序,安装一堆插件,根据自己的喜好调整一些默认配置,等等。
从symfoob娱乐下载ny 1.3开始,项目创建过程可以自定义和自动化。
请注意
因为所有的syob娱乐下载mfony任务都是类,所以很容易定制和扩展它们。的生成:项目
但是,不能轻松地自定义Task,因为执行任务时不存在项目。
的生成:项目
任务需要一个——安装程序
选项,这是一个PHP脚本,将在项目创建过程中执行:
$ PHP /path/to/ob娱乐下载symfony生成:project——installer=/somewhere/my_installer.php
的/地方/ my_installer.php
的上下文中执行sfGenerateProjectTask
实例,因此它可以访问任务的方法来使用这个美元
对象。以下部分描述了可用于自定义项目创建过程的所有可用方法。
提示
的URL文件访问包括()
在你的php . ini
,你甚至可以传递一个URL作为安装程序(当然你需要非常小心,当你对一个脚本一无所知):
$ ob娱乐下载symfony generate:project——installer=http://example.com/sf_installer.php
installDir ()
的installDir ()
方法在新创建的项目中镜像目录结构(由子目录和文件组成):
这个美元->installDir(目录名(__FILE__)./骨架的);
runTask ()
的runTask ()
方法执行任务。它接受任务名称和一个表示参数的字符串,以及你想传递给它的参数选项:
这个美元->runTask(配置:作者的,“法比效力”);
参数和选项也可以作为数组传递:
这个美元->runTask(配置:作者的,数组(“作者”= >“法比效力”));
提示
任务快捷方式名称也可以正常工作:
这个美元->runTask(“cc”);
这个方法当然可以用来安装插件:
这个美元->runTask(“插件:安装”,“sfDoctrineGuardPlugin”);
要安装特定版本的插件,只需传递所需的选项:
这个美元->runTask(“插件:安装”,“sfDoctrineGuardPlugin”,数组(“发布”= >“10.0.0”,“稳定”= >β'));
提示
要从新安装的插件中执行任务,需要首先重新加载任务:
这个美元->reloadTasks();
如果您创建了一个新的应用程序,并希望使用依赖于特定应用程序的任务,如生成:模块
,您必须自己更改配置上下文:
这个美元->setConfiguration(这个美元->createConfiguration(“前端”,“开发”));
伐木工人
为了在安装脚本运行时给开发人员反馈,你可以很容易地记录事情:
//简单的日志这个美元->日志('一些安装消息');//记录一个数据块这个美元->logBlock(“法比安\ '“疯狂的安装者”,“ERROR_LARGE”);//登录一个section这个美元->logSection(“安装”,安装一些疯狂的文件);
用户交互
的askConfirmation ()
,askAndValidate ()
,问()
方法允许您提问并使您的安装过程可动态配置。
如果您只是需要确认,请使用askConfirmation ()
方法:
如果(!这个美元->askConfirmation(“你确定要运行这个疯狂的安装程序吗?”)){这个美元->logSection(“安装”,“你做了正确的选择!”);返回;}
方法还可以询问任何问题,并以字符串的形式获取用户的答案问()
方法:
美元的秘密=这个美元->问(为CSRF秘密提供一个唯一的字符串:);
如果您想验证答案,请使用askAndValidate ()
方法:
美元的验证器=新sfValidatorEmail(数组(),数组(“无效”= >“嗯,这看起来不像一封电子邮件!”));美元的电子邮件=这个美元->askAndValidate(“请给我你的邮箱:”,美元的验证器);
文件系统操作
如果你想改变文件系统,你可以访问symfony文件系统对象:ob娱乐下载
这个美元->getFilesystem()- >…();
侧边栏
沙盒创建过程
symfob娱乐下载ony沙盒是一个预先打包的symfony项目,其中包含一个现成的应用程序和一个预先配置的SQLite数据库。任何人都可以使用安装脚本创建沙盒:
$ PHP ob娱乐下载symfony generate:project——installer=/path/to/symfony/data/bin/sandbox_installer.php
看看ob娱乐下载symfony / data / bin / sandbox_installer.php
脚本以获得安装程序脚本的工作示例。
安装程序脚本只是另一个PHP文件。所以,你可以做任何你想做的事情。您可以创建自己的安装程序脚本,并按照您想要的方式调整symfony项目的安装,而不是每次创建新的symfony项目时都一次又一次地运行相同的任务。ob娱乐下载使用安装程序创建新项目要快得多,并防止您错过步骤。您甚至可以与他人共享您的安装程序脚本!
发展速度快
从PHP代码到CLI任务,编程意味着大量的输入。让我们看看如何将其减少到最低限度。
选择IDE
使用IDE可以在多个方面帮助开发人员提高工作效率。
首先,大多数现代ide都提供了PHP自动补全功能。这意味着您只需要键入方法名的前几个字符。这也意味着,即使您不记得方法名称,也不必强制查看API,因为IDE会提示当前对象的所有可用方法。
此外,一些ide,如PHPEdit或Netbeans,甚至更了解symfony,并提供与symfony项目的特定集成。ob娱乐下载
侧边栏
文本编辑器
一些用户更喜欢使用文本编辑器进行编程工作,主要是因为文本编辑器比任何IDE都快。当然,文本编辑器提供较少面向ide的功能。然而,大多数流行的编辑器都提供了插件/扩展,可以用来增强用户体验,并使编辑器在PHP和symfony项目中更有效地工作。ob娱乐下载
例如,许多Linux用户倾向于将VIM用于他们的所有工作。对于这些开发人员,vim-ob娱乐下载symfony分机可用。VIM-ob娱乐下载symfony是一组VIM脚本,它将symfony集成到您喜欢的编辑器中。使用vim-symfob娱乐下载ony,您可以轻松地创建vim宏和命令来简化symfony开发。它还捆绑了一组默认命令,这些命令将许多配置文件放在您的指尖(模式、路由等),并使您能够轻松地从操作切换到模板。
一些MacOS X用户使用TextMate。这些开发人员可以安装symfonyob娱乐下载包,这为日常活动增加了大量节省时间的宏和快捷方式。
使用支持symfony的IDEob娱乐下载
一些ide,比如PHPEdit 3.4而且NetBeans 6.8,具有对symfony的本地支持,因此提供了与框架的ob娱乐下载细粒度集成。查看他们的文档,了解更多关于symfony欧宝官网下载app的特定支持,以及它如何帮助您更快地开发。ob娱乐下载
帮助IDE
ide中的PHP自动补全只适用于PHP代码中显式定义的方法。但是如果你的代码使用__call ()
或__get ()
“魔法”方法,ide无法猜测可用的方法或属性。好消息是,您可以通欧宝平台是合法的吗过在PHPDoc块中提供方法和/或属性来帮助大多数ide@method
而且@ property
注释)。
假设你有一个消息
具有动态属性(消息
)和动态方法(getMessage ()
).下面的代码向您展示了IDE如何在PHP代码中没有任何显式定义的情况下了解它们:
/** * @属性clob $message ** @方法clob getMessage()返回当前消息值*/类消息{公共函数__get(){/ /……}公共函数__call(){/ /……}}
即使getMessage ()
方法不存在,它将被IDE识别@method
注释。同样适用于消息
属性,因为我们已经添加了@ property
注释。
这种技术是由原则:建造模式
的任务。例如,教义MailMessage
类的两个列(消息
而且优先级
)外观如下:
/** * BaseMailMessage **这个类已经由Doctrine ORM Framework自动生成** @property clob $message * @property integer $priority ** @method clob getMessage()返回当前记录的“message”值* @method MailMessage setMessage()设置当前记录的“message”值* @method MailMessage setPriority()设置当前记录的“priority”值** @package ##PACKAGE## * @subpackage##子包## * @作者##NAME## <##EMAIL##> * @版本SVN: $Id: Builder.php 6508 2009-10-14 06:28:49Z jwage $ */摘要类BaseMailMessage扩展sfDoctrineRecord{公共函数setTableDefinition(){这个美元->setTableName(“mail_message”);这个美元->hasColumn(“消息”,“clob”,零,数组(“类型”= >“clob”,“notnull”= >真正的,));这个美元->hasColumn(“优先”,“整数”,零,数组(“类型”= >“整数”,));}公共函数设置(){父::设置();timestampable0美元=新Doctrine_Template_Timestampable();这个美元->找(timestampable0美元);}}
更快地查找欧宝官网下载app文档
由于sob娱乐下载ymfony是一个具有许多特性的大型框架,因此并不总是容易记住所有配置可能性,或者您可以使用的所有类和方法。正如我们之前所看到的,使用IDE可以为您提供自动补全。让我们来探索一下如何利用现有工具来尽快找到答案。
在线API
查找关于类或方法的文档的最快方法是在线浏览欧宝官网下载appAPI.
更有趣的是内置的API搜索引擎。搜索允许您只需敲击几下键盘就能快速找到类或方法。在API页面的搜索框中输入几个字母后,会实时出现一个快速的搜索结果框,并给出有用的建议。
你可以输入类名的开头进行搜索:
或方法名:
或类名后跟::
列出所有可用的方法:
或者输入方法名的开头,以进一步细化可能性:
如果您想要列出包的所有类,只需键入包名并提交请求。
您甚至可以在浏览器中集成symfony API搜索。ob娱乐下载这样,您甚至不需要导航到symfony网站来查找内容。ob娱乐下载这是可能的,因为我们提供本地OpenSearch支持symfony API。ob娱乐下载
如果您使用Firefox, symfony APob娱乐下载I搜索引擎将自动显示在搜索引擎菜单中。您也可以点击API文档部分的“API OpenSearch”链接,将其中一个添加到浏览器搜索框中。欧宝官网下载app
请注意
您可以看一段视频,它展示了symfony API搜索引擎如何在symfony上与Firefox很好地集成ob娱乐下载博客.
备忘单
如果你想快速访问框架的主要部分的信息,大量的集合备忘单是可用的:
请注意
其中一些备忘单还没有针对symfony 1.3进行更新。ob娱乐下载
离线文件欧宝官网下载app
关于配置的问题最好由symfony参考指南来回答。ob娱乐下载这是一本你应该随身携带的书,每当你开发symfony。ob娱乐下载这本书是找到每个可用配置的最快方式,这要归功于一个非常详细的目录、术语索引、章节内的交叉引用、表等等。
你可以浏览这本书在线,买一个印刷拷贝一下吧,甚至下载一个PDF的版本。
在线工具
正如在本章开头所看到的,symfony提供了一个很好的工具集来帮助您更快地入门。ob娱乐下载最终,您将完成项目,然后将其部署到生产环境中。
要检查项目是否已经准备好部署,可以使用在线部署检查表.本网站涵盖了在投入生产前需要检查的要点。
调试速度
当开发环境中发生错误时,symfony会显示一个漂亮的异常页面,其中充满了有用的信息。ob娱乐下载例如,您可以查看堆栈跟踪和已执行的文件。如果你设置sf_file_link_format
在settings.yml
配置文件(见下文),您甚至可以单击文件名,相关文件将在您最喜欢的文本编辑器或IDE中在右侧行打开。这是一个非常小的特性的很好的例子,它可以在调试问题时节省大量的时间。
请注意
web调试工具栏中的日志和视图面板还显示文件名(特别是当XDebug被启用时),当您设置sf_file_link_format
设置。
默认情况下,sf_file_link_format
为空,symfony默认为ob娱乐下载xdebug.file_link_format
PHP配置值,如果它存在(设置xdebug.file_link_format
在php . ini
允许最新版本的XDebug在堆栈跟踪中为所有文件名添加链接)。
的值sf_file_link_format
取决于您的IDE和操作系统。例如,如果您想在TextMate中打开文件,请将以下内容添加到settings.yml
:
Dev: .settings: file_link_format: txmt://open?url =文件:/ / % f&line = % l
的% f
将占位符替换为symfony,使用文件的绝对路径和ob娱乐下载% l
占位符替换为行号。
如果使用VIM,则配置更加复杂,并且在联机中进行了描述ob娱乐下载而且XDebug.
请注意
使用您最喜欢的搜索引擎来了解如何配置IDE。的配置sf_file_link_format
或xdebug.file_link_format
因为两者的工作方式是一样的。
测试速度快
记录您的功能测试
功能测试模拟用户交互,以彻底测试应用程序所有部分的集成。编写功能测试很容易,但很耗时。但是,由于每个功能测试文件都是模拟用户浏览网站的场景,而且浏览应用程序比编写PHP代码快,如果可以记录浏览器会话并将其自动转换为PHP代码呢?幸运的是,symfonyob娱乐下载有这样一个插件。它被称为swFunctionalTestGenerationPlugin,并且它允许您在几分钟内生成准备好定制的测试框架。当然,您仍然需要添加适当的测试调用以使其有用,但这仍然是一个很好的节省时间的方法。
该插件通过注册一个symfony过滤器来工作,该过滤器将拦截所有请求ob娱乐下载,并将它们转换为功能测试代码。在以通常的方式安装插件后,您需要启用它。打开filters.yml
并在注释行之后添加以下行:
functional_test:类: swFilterFunctionalTest
接下来,在您的ProjectConfiguration
类:
/ /配置/ ProjectConfiguration.class.php类ProjectConfiguration扩展sfProjectConfiguration{公共函数设置(){/ /……这个美元->enablePlugin(“swFunctionalTestGenerationPlugin”);}}
由于插件使用web调试工具栏作为其主要用户界面,请确保启用它(在开发环境中默认情况下)。启用后,一个名为“功能测试”的新菜单可用。在此面板中,您可以通过单击“Activate”链接开始录制会话,并通过单击“reset”重置当前会话。完成后,将代码从文本区域复制并粘贴到测试文件,并开始自定义它。
更快地运行您的测试套件
当您有一个大型测试套件时,每次进行更改时启动所有测试可能非常耗时,特别是在某些测试失败时。每次修复测试时,都应该再次运行整个测试套件,以确保没有破坏其他测试。但是,在修复失败的测试之前,没有必要重新执行所有其他测试。为了加快这个过程,我们测试:所有
任务有一个——only-failed
(- f
(作为快捷方式)选项,强制任务仅重新执行在前一次运行期间失败的测试:
$ PHP ob娱乐下载symfony测试:all -only-failed
第一次执行时,所有测试照常运行。但是对于后续的测试运行,只执行上次失败的测试。当您修复代码时,一些测试将通过,并将从后续运行中删除。当所有测试再次通过时,将运行完整的测试套件…然后你可以冲洗和重复。
本作品在创作共用署名相似共享3.0未移植许可许可下获得许可。