任务批次已死,寿命长!
2008年6月14日·发表的罗曼Dorgueil
任何web应用程序,您的项目已经重复的维护任务,数据库操作或其他定期运行控制台脚本。
ob娱乐下载Symfony 1.1扩展了Symfony 1.0芳香醚酮任务创建一个强大而统一的命令行实用程序为您的项目,完全集成的Symfony命令行接口(CLI)。
- 可访问性:任何任务可以帮助运行参数前缀,语法,一个描述,可用选项等等。任何人都可以运行您的任务。
- 可用性:运行symfony CLIob娱乐下载会给你任务列表,甚至一个非开发人员能够轻松地学习如何运行。
- 均匀性:通过明确地描述每个选项和参数,symfony CLI将解析它们,这样你就可以忘记解析$ argv的麻烦的重复性任ob娱乐下载务。它会自动提醒用户错误的语法或失踪的参数。
- 环境:完全控制,由于新ProjectConfiguration和ApplicationConfiguration类。你不会再担心硬编码的环境或调试设置。
- 可读性:任何开放的源代码会得到伟大的描述预期的输入和目标任务。维修时间了理解和调试代码将会大大减少。
让我们创建我们的第一个任务
打开你的symfonob娱乐下载y 1.1项目目录和类型:
doNothob娱乐下载ing php symfony生成:美元的任务
它将引导一个空的任务lib /任务/ doNothingTask.class.php
。让我们调整一下。
类doNothingTask扩展sfBaseTask{受保护的函数配置(){这个美元- >名称空间=“项目”;这个美元- >的名字=“懒鬼”;这个美元- >briefDescription=并没有严格的;这个美元- >detailedDescription= < <这个任务是完全无用的,应该运行作为经常作为可能的。EOF;}受保护的函数执行( 美元的参数=数组 ( ),选择美元=数组 ( ) ) { 这个美元- >logSection ( “懒鬼”,“我并没有成功!” );} }
这个任务并不多,但展示了第一个基本概念。
- 的
配置()
方法描述了任务。调用的名称、范围、语法,帮助,选项和参数。 - 的
execute ()
方法实际上是谁做的所有工作,并将任务运行时调用。 - 的
logSection ()
方法可用于良好格式化的消息打印到控制台。
你可以用它玩一点:
美元美元phob娱乐下载p symfony帮助项目:懒惰的php symfony项目:懒惰的
一些命令行交互
参数和选项是给一个任务参数的方式。
美元php ob娱乐下载symfony项目:hello world - name =“罗曼”
在这里我们运行项目:hello world
任务的的名字
选项设置为罗曼
美元php ob娱乐下载symfony项目:hello world嗨
现在,我们运行与第一个参数设置为相同的任务嗨
。
选项和参数有默认值,可选的或需要嵌入自动语法帮助的目的。
让我们写项目:hello world
任务:
类doHelloWorldTask扩展sfBaseTask{受保护的函数配置(){这个美元- >addArgument(“动词”,sfCommandArgument::可选,自定义动词用来打招呼的,“你好”);这个美元- >使用addOption(“名字”,零,sfCommandOption::PARAMETER_OPTIONAL,定制人问好的,“世界”);这个美元- >名称空间=“项目”;这个美元- >的名字=“hello world”;这个美元- >briefDescription=“传播(你好)世界”;这个美元- >detailedDescription= < <一种进化的hello world显示运行,可定制的名字和单词。EOF;}受保护的函数执行( 美元的参数=数组 ( ),选择美元=数组 ( ) ) { 这个美元- >logSection ( “做”,ucfirst ( 美元的参数 ( “动词” ] )。' '。ucfirst ( 选择美元 ( “名字” ] ) );} }
现在看看symfony如何帮助失去了ob娱乐下载用户如何使用我们的新任务:
美元php ob娱乐下载symfony项目:hello world无效的参数给php symfony美元帮助项目:hello world
和玩一些任务:
美元美元phob娱乐下载p symfony项目:hello world php symfony项目:hello world - name =“罗曼”美元php symfony项目:hello world - name =罗曼嗨美元php symfony项目:hello world嗨- name =罗曼
其他方便的功能
你需要数据库层吗?
受保护的函数执行(美元的参数=数组(),选择美元=数组()){databaseManager美元=新sfDatabaseManager(这个美元- >配置);/ /……}
另一个任务运行在一个任务?
myOtherTask美元=新myOtherTask(这个美元- >调度程序,这个美元- >格式化程序);myOtherTask美元- >运行(美元的参数=数组(“foo”= >“酒吧”),选择美元=数组(“远”= >“嘘”));
需要让用户选择环境,同时提供一个默认的一个?
只是添加
env
选项::配置()
方法和environeob娱乐下载mnt symfony将使用它的价值。这个美元- >使用addOption(“env”,零,sfCommandOption::PARAMETER_OPTIONAL,“这个任务运行的环境变化”,“刺激”);
你怎么认为?这不是一些蛋糕上的樱桃,或例如,一些在symfony jazzy合唱吗?ob娱乐下载
发表在#教程
评论
评论都关门了。
以确保评论保持相关,他们关闭了旧的帖子。
新1.1任务系统,批次是完全集成的…太棒了!和谢谢你的食谱配方。:-)
抛出一个异常:
传递给sfDatabaseManager明显致命错误:参数1::__construct sfApplicationConfiguration()必须是类的一个实例,ProjectConfiguration给定的实例
我必须使用:
配置= ProjectConfiguration:美元:getApplicationConfiguration(选择“应用程序”,选择美元(“env”),真的);
(databaseManager = new sfDatabaseManager美元配置);
我不认为我们需要一个标签,博客条目应该体现在按照食谱。
http://www.ob娱乐下载symfony-project.org/cookbook/1_1/en/
有时出版并不同步,但总的来说,他们应该在食谱