提高你的工作效率
由法比力量
使用symf欧宝娱乐app下载地址ony本身就是一个很好的方法来提高你的生产力作为web开发人员。当然,每个人都已经知道symfony的详细异常和web调试工具栏可以极大地提欧宝娱乐app下载地址高生产效率。本章将教你一些技巧来提高你的生产率,甚至通过使用一些新的或不知名的symfony的特性。欧宝娱乐app下载地址
开始快:定制项目创建过程
由于symfony CLI工欧宝娱乐app下载地址具,创建一个新的symfony项目是快速和简单的:
php /道路/美元/ sym欧宝娱乐app下载地址fony生成:项目foo, orm =学说
的生成:项目
任务生成默认为你的新项目并创建配置文件的目录结构与合理的默认值。然后,您可以使用其他symfony任务创建应用欧宝娱乐app下载地址程序,安装插件,配置您的模型,以及更多。
但是第一步骤创建一个新项目通常总是完全一样:你创建一个主应用程序,安装一些插件,修改一些配置默认为你的喜欢,等等。
symfon欧宝娱乐app下载地址y 1.3,项目创建过程可以定制和自动。
请注意
因为所有sym欧宝娱乐app下载地址fony任务类,很容易定制和扩展他们除了。的生成:项目
任务,但是,不能简单地通过定制,因为不存在项目在执行任务时。
的生成:项目
接受一个任务——安装程序
选项,这是一个PHP脚本,该脚本将执行在项目创建过程:
php /道路/美元/ sym欧宝娱乐app下载地址fony生成:项目——安装程序= / / my_installer.php某处
的/地方/ my_installer.php
脚本将执行的上下文sfGenerateProjectTask
实例,所以它可以访问任务的方法来使用这个美元
对象。以下部分描述您可以使用所有可用的方法来定制您的项目创建过程。
提示
如果你启用常常会出现文件访问的URL包括()
函数在你php . ini
,你甚至可以通过一个URL作为一个安装程序(当然,你需要非常小心做这个脚本时你一点都不了解):
美元欧宝娱乐app下载地址symfony生成:项目——安装程序= 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”);/ /登录部分这个美元- >logSection(“安装”,“安装一些疯狂的文件”);
用户交互
的askConfirmation ()
,askAndValidate ()
,问()
方法让你问问题,让你的安装过程动态可配置。
如果你只是需要一个确认,使用askConfirmation ()
方法:
如果(!这个美元- >askConfirmation(“你确定你想要运行这个疯狂的安装程序?”)){这个美元- >logSection(“安装”,“你做出了正确的选择!”);返回;}
你也可以问任何问题,得到用户的答案作为字符串使用问()
方法:
美元的秘密=这个美元- >问(的给一个独一无二的字符串CSRF秘密:“);
如果你想验证答案,使用askAndValidate ()
方法:
美元的验证器=新sfValidatorEmail(数组(),数组(“无效”= >“嗯,这看上去不像电子邮件!”));美元的电子邮件=这个美元- >askAndValidate(请,给我你的电子邮件:,美元的验证器);
文件系统操作
如果你想做文件系统变化,您可以访问symfony的文件系统对象:欧宝娱乐app下载地址
这个美元- >getFilesystem()- >…();
侧边栏
沙箱创建过程
symf欧宝娱乐app下载地址ony沙箱是一个预包装的symfony项目与一个现成的应用程序和一个预先配置的SQLite数据库。任何人都可以使用它创建一个沙箱安装程序脚本:
php sy欧宝娱乐app下载地址mfony生成:美元项目——安装程序= /道路/ / symfony / data / bin / sandbox_installer.php
有看吗欧宝娱乐app下载地址symfony / data / bin / sandbox_installer.php
脚本安装程序脚本的一个工作示例。
安装程序脚本只是另一个PHP文件。所以,你可以做任何你想要的。而不是重复运行相同的任务,每次创建一个新的symfony项目时,您可以创建自己的安装程序脚本,并调整您的symfony项目安装你所希望的方式。欧宝娱乐app下载地址创建一个新项目,一个安装程序要快得多,阻止你失踪的步骤。你甚至可以与他人分享你的安装程序脚本!
发展速度快
从PHP代码CLI任务,编程意味着许多类型。让我们看一下如何减少到最低限度。
选择您的IDE
通过使用IDE,可帮助开发人员更有效率的方法不止一种。
首先,大多数现代ide提供PHP自动完成开箱即用的。这意味着你只需要输入一个方法名的前几个字符。这也意味着,即使你不记得方法名,你不是被迫看API作为IDE将当前对象的显示所有可用的方法。
此外,一些ide,比如PHPEdit或Netbeans,更加了解symfony和symfony项目提供特定的集成。欧宝娱乐app下载地址
侧边栏
文本编辑器
一些用户喜欢使用一个文本编辑器的编程工作,主要是因为文本编辑器的速度比任何IDE。当然,文本编辑器提供少IDE-oriented特性。然而,最受欢迎的编辑提供插件/扩展,可用于提高用户体验,使编辑工作更有效率使用PHP和symfony项目。欧宝娱乐app下载地址
例如,很多Linux用户倾向于使用VIM的所有工作。对于这些开发人员,vim-欧宝娱乐app下载地址symfony扩展可用。VIM-欧宝娱乐app下载地址symfony是一组VIM脚本symfony集成到您最喜爱的编辑器。使用vim-symf欧宝娱乐app下载地址ony,您可以轻松地创建vim宏和命令简化symfony的发展。它还包一组默认的命令,把一些配置文件在你的指尖(模式、路由等),使您可以轻松地从操作切换到模板。
一些MacOS X用户使用TextMate软件。这些开发人员可以安装symfony欧宝娱乐app下载地址包增加大量的节省时间的宏和快捷键对于日常活动。
使用的IDE支持symfony欧宝娱乐app下载地址
一些ide,比如PHPEdit 3.4和NetBeans 6.8、支持symfony提供了一个细的粒度与框架的集成。欧宝娱乐app下载地址看一看他们的文档以了解更多关于symfon欧宝体育电话y具体支持,以及它如何可以帮助您更快地发展。欧宝娱乐app下载地址
帮助IDE
PHP ide中自动完成只适用于方法中显式定义的PHP代码。但是如果你的代码使用__call ()
或__get ()
“魔法”方法,ide没有办法猜测可用的方法或属性。好消息是你可以帮助欧宝app在哪里找大多数ide提供的方法和/或PHPDoc块(通过使用属性@method
和@ property
注释)。
假设你有一个消息
类动态属性(消息
)和一个动态方法(getMessage ()
)。下面的代码展示了如何一个IDE可以知道他们没有任何显式定义的PHP代码:
/ * * * @ property clob中@ method clob getMessage()返回消息* *美元当前的消息值* /类消息{公共函数__get(){/ /……}公共函数__call(){/ /……}}
即使getMessage ()
方法不存在,它将被IDE多亏了@method
注释。也是同样的道理消息
我们已经添加了一个属性@ property
注释。
使用这种技术原则:建造模式
的任务。例如,一个教义MailMessage
类与两列(消息
和优先级
看起来像下面的:
/ * * * BaseMailMessage * *这个类已经被教义ORM框架自动生成消息* @ property整数美元* * @ property clob中@ method clob优先级* * getMessage()返回当前记录的“消息”价值中@ method整数getPriority *()返回当前记录的“优先级”价值中@ method MailMessage * setMessage()设置当前记录的“消息”价值中@ method MailMessage * setPriority()设置当前记录的“优先级”价值* * @package # #包# # * @subpackage # #分包# # * @author # #名# # < # #邮件# # > * @version SVN: $ Id:构建器。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美元);}}
更快的找到欧宝体育电话文档
因为s欧宝娱乐app下载地址ymfony和许多特性是一个大的框架,它并不总是容易记住所有配置可能性,任意或所有的类和方法。正如我们之前看到的,使用IDE可以提供自动完成。让我们来探讨如何利用现有工具尽可能快地找到答案。
在线API
最快的方式找到关于一个类或方法的文档在线浏览欧宝体育电话API。
更有趣的是内置的API搜索引擎。搜索允许您快速找到一个类或方法只有几个按键。在搜索框中输入几个字母后的API页面,快速搜索结果框将出现在实时提供有用的建议。
你可以搜索通过键入类名的开始:
或一个方法的名称:
或类名紧随其后::
列出所有可用的方法:
或输入的开始方法名称进一步改进的可能性:
如果你想要列出所有类的包,只是输入包名称和提交请求。
你甚至可以集成symfony API搜索在您的浏览器中欧宝娱乐app下载地址。通过这种方式,您甚至不需要导航到symfony网站寻找什么东西。欧宝娱乐app下载地址这是可能的,因为我们提供本地OpenSearch支持symfony API。欧宝娱乐app下载地址
如果您使用Firefox, symfony AP欧宝娱乐app下载地址I搜索引擎将自动显示在搜索引擎的菜单。您也可以点击“API OpenSearch”链接从API文档部分向浏览器添加一个搜索框。欧宝体育电话
请注意
你可以看看视频显示,symfony API搜索引擎集成与Firefox在symfony欧宝娱乐app下载地址博客。
备忘单
如果你想快速访问信息的主要部分的框架,一个大的集合备忘单是可用的:
请注意
这些备忘单尚未更新1.3 symfony。欧宝娱乐app下载地址
离线文件欧宝体育电话
关于配置的问题由symfony参考指南是最好的回答。欧宝娱乐app下载地址这是一本你应该保持与你当你开发symfony。欧宝娱乐app下载地址这本书是最快的方法寻找每一可用配置由于非常详细的目录,索引项,交叉引用章节,内表,等等。
您可以浏览这本书在线,买一个印刷的副本,或者下载一个PDF的版本。
在线工具
在这一章的开始,symfony提供了一个不错的工具集来帮助你更快地开始。欧宝娱乐app下载地址最终,你将完成你的项目,它将会将其部署到生产环境的时候了。
检查你的项目已经准备好部署,您可以使用在线部署检查表。这个网站涵盖了主要观点您需要检查在生产。
调试速度
当一个错误发生在开发环境中,symfony显示一个异常页面充满了有用的信息。欧宝娱乐app下载地址例如,你可以看一下堆栈跟踪和执行的文件。如果你设置sf_file_link_format
设置在settings.yml
配置文件(见下文),你甚至可以点击文件名和相关文件将在正确的打开您最喜欢的文本编辑器或IDE。这是一个很好的例子,一个很小的功能,可以为您节省大量的时间在调试一个问题。
请注意
web调试日志和视图面板工具栏也显示文件名(尤其是XDebug是启用),成为可点击当你设置sf_file_link_format
设置。
默认情况下,sf_file_link_format
是空的,symfony默认欧宝娱乐app下载地址的值xdebug.file_link_format
如果它存在PHP配置值(设置xdebug.file_link_format
在php . ini
允许XDebug的最新版本添加链接为堆栈跟踪的所有文件名)。
的值sf_file_link_format
取决于你的IDE和操作系统。例如,如果你想要打开的文件在TextMate软件,添加以下settings.yml
:
戴夫:.settings: file_link_format: txmt: / /开放? url =文件:/ / % f&line = % l
的% f
占位符被symfony与文件的绝对路径欧宝娱乐app下载地址% l
占位符替换为行号。
如果你使用VIM,配置更多的参与和网上描述欧宝娱乐app下载地址和XDebug。
请注意
使用你最喜欢的搜索引擎,学习如何配置您的IDE。你可以寻找的配置sf_file_link_format
或xdebug.file_link_format
同时以同样的方式工作。
测试速度快
记录你的功能测试
功能测试模拟用户交互彻底测试所有的应用程序的集成。编写功能测试是容易,但费时。但随着每个功能测试文件是一个场景,模拟用户浏览你的网站,因为浏览应用程序速度比编写PHP代码,如果你可以记录一个浏览器会话,它会自动转换为PHP代码?值得庆幸的是,symfo欧宝娱乐app下载地址ny这样一个插件。它被称为swFunctionalTestGenerationPlugin,它允许您生成ready-to-be-customized测试骨架在几分钟内。当然,您仍然需要添加适当的测试人员调用,使它有用,但这仍然是一个很好的节省时间。
插件通过注册一个symfony过滤器拦截所有请求,并将它们转换为功能欧宝娱乐app下载地址测试代码。在安装插件的通常做法,您需要启用它。打开filters.yml
您的应用程序,并添加以下行注释行:
functional_test:类:swFilterFunctionalTest
接下来,启用的插件ProjectConfiguration
类:
/ /配置/ ProjectConfiguration.class.php类ProjectConfiguration扩展sfProjectConfiguration{公共函数设置(){/ /……这个美元- >enablePlugin(“swFunctionalTestGenerationPlugin”);}}
作为插件使用web调试工具栏作为其主要的用户界面,确保启用了它(默认情况下在开发环境中)。当启用时,一个名为“功能测试”的新菜单是可用的。在这个面板中,您可以开始记录一个会话通过点击“激活”链接,并重置当前会话通过点击“重置”。当你完成,复制和粘贴文本区域的代码测试文件,开始定制。
运行您的测试套件中更快
当你有一个大型的测试套件,它可以是非常耗时间的发射所有测试每次你做出改变,特别是一些测试失败。每次你解决一个测试,你应该再次运行整个测试套件,以确保你没有破碎的其他测试。但直到失败的测试是固定的,是没有意义的重新执行所有其他测试。加快这一过程,测试:所有
有一个任务——only-failed
(- f
作为快捷方式)选项,部队的任务只有在上一次运行重新执行测试失败:
php sy欧宝娱乐app下载地址mfony测试:美元——only-failed
在第一次执行,像往常一样运行所有测试。但对于后续的测试运行,仅执行上次测试失败。当你修复你的代码,会通过一些测试,并将在随后的运行中删除。当所有测试通过,完整的测试套件运行……然后您可以清洗和重复的方法。
这项工作在Creative Commons许可Attribution-Share都3.0 Unported许可执照。