在symfonob娱乐下载y 1.3:新项目创建定制
今天,我很高兴宣布一个伟大的即将到来的symfony 1.3版本的新特性:定制项目创建过程的能力。ob娱乐下载让我解释为什么它是有用的,以及如何利用这个很酷的功能。
自定义生成:项目
任务
正如你可能知道,symfony任务类。ob娱乐下载和其他类,它是很容易定制和扩展现有的任务;除了其中一个:生成:项目
的任务。这是因为不存在项目当你执行这个任务,所以没有办法定制它……直到现在。现在需要一个任务——安装程序
选项,这是一个PHP脚本,该脚本将执行在项目创建过程:
php /道路/美元/ symob娱乐下载fony生成:项目——安装程序= / domewhere / fabien_installer.php
如果你启用常常会出现文件访问的URL
包括()
函数在你php . ini
,你甚至可以通过一个URL作为一个安装程序(当然,你需要非常小心当这样做脚本你一点都不了解):美元ob娱乐下载symfony生成:项目——安装程序= http://example.com/sf_installer.php
这个脚本执行的上下文sfGenerateProjectTask
实例,所以你可以访问所有的方法来做你的工作,还有很多。
installDir ()
第一个有用的方法installDir ()
。它允许你复制一堆文件在新创建的项目。假设您想添加一些文件,默认的目录结构,骨架目录下创建并添加下面的代码在您的安装程序脚本:
这个美元- >installDir(目录名(__FILE__)。/骨架的);
runTask ()
您还可以运行另一个任务runTask ()
方法。需要任务名称,和一个字符串代表要传递给它的参数和你想要的选项:
这个美元- >runTask(配置:作者的,“法比效力”);
你也可以通过参数和选项数组:
这个美元- >runTask(配置:作者的,数组(“作者”= >“法比效力”));
任务的快捷方式名称也正常工作:
这个美元- >runTask(“cc”);
你当然可以安装插件:
这个美元- >runTask(“插件:安装”,“sfDoctrineGuardPlugin”);
如果你想安装一个特定版本的插件,添加所需的选项参数的字符串:
这个美元- >runTask(“插件:安装”,“sfDoctrineGuardPlugin——释放= 10.0.0稳定=β');
如果你需要执行一项任务从一个新安装的插件,别忘了重新加载任务:
这个美元- >reloadTasks();
伐木工人
当你在一个任务上下文,您可以记录事情很容易:
/ /一个简单的日志这个美元- >日志(“一些安装的消息”);/ /日志块这个美元- >logBlock(数组(”,“法比安\ '年代疯狂的安装程序,”),“错误”);/ /登录部分这个美元- >logSection(“安装”,“安装一些疯狂的文件”);
你可以问一个确认:
如果(!这个美元- >askConfirmation(“你确定你想要运行这个疯狂的安装程序?”)){这个美元- >logSection(“安装”,“你做出了正确的选择!”);返回;}
你也可以问任何问题:
美元的秘密=这个美元- >问(的给一个独一无二的字符串CSRF秘密:“);
或问一个问题,验证答案:
美元的验证器=新sfValidatorEmail(数组(),数组(“无效”= >“嗯,这看上去不像电子邮件!”));美元的电子邮件=这个美元- >askAndValidate(请,给我你的电子邮件:,美元的验证器);
文件系统操作
如果你想做文件系统的变化,你可以访问文件系统对象是这样的:
这个美元- >getFilesystem()- >…();
这只是一个PHP脚本
安装程序脚本只是另一个PHP文件。所以,你可以做任何你想要的。有创意!
示例脚本
这是一个例子,使用大量的上述可能性:
< ? php这个美元- >logBlock(数组(”,“法比安\ '年代疯狂的安装程序,”),“错误”);如果(!这个美元- >askConfirmation(“你确定你想要运行这个疯狂的安装程序?”)){这个美元- >logSection(“安装”,“你做出了正确的选择!”);返回;}这个美元- >installDir(目录名(__FILE__)。/骨架的);这个美元- >runTask(“插件:发布资产”);美元的验证器=新sfValidatorEmail(数组(),数组(“无效”= >“嗯,这看上去不像电子邮件!”));美元的电子邮件=这个美元- >askAndValidate(请,给我你的电子邮件:,美元的验证器);这个美元- >runTask(配置:作者的,sprintf(“% s”,美元的电子邮件));美元的秘密=这个美元- >问(的给一个独一无二的字符串CSRF秘密:“);这个美元- >runTask(“生成:应用”,的前端——escaping-strategy = true csrf-secret = '。美元的秘密);这个美元- >runTask(“插件:安装”,“sfDoctrineGuardPlugin”);这个美元- >reloadTasks();这个美元- >runTask(“警卫:创建用户”,“法比SuperPassword”);这个美元- >runTask(“缓存:明确”的);
沙箱创建过程
你可能知道symfony沙箱。ob娱乐下载这是一个预包装的symfony项目与一个ob娱乐下载现成的应用程序和一个预先配置的SQLite数据库。它帮助新手完全绕过命令行,因为他们只需要下载存档,他们准备好了。
沙箱只不过是一群创建一个命令执行之前存档。直到现在,这个工作是做的数据/ bin / create_sandbox.sh
脚本。symfonob娱乐下载y 1.3,它只是一个安装程序脚本。所以,你可以创建一个项目,是一样的沙盒是这样的:
php syob娱乐下载mfony生成:美元项目——安装程序= /道路/ / symfony / data / bin / sandbox_installer.php
是创建一个沙箱有用吗?可能不会。但是你可以看一下安装程序脚本的一个很好的例子可以做些什么:
这个美元- >installDir(目录名(__FILE__)。' / sandbox_skeleton ');这个美元- >logSection(“安装”,“添加syob娱乐下载mfony CLI为Windows用户的);这个美元- >getFilesystem()- >复制(目录名(__FILE__)。' ob娱乐下载/ symfony.bat ',sfConfig::得到(“sf_root_dir”)。' ob娱乐下载/ symfony.bat ');这个美元- >logSection(“安装”,“添加许可证”);这个美元- >getFilesystem()- >复制(目录名(__FILE__)。“/ . . / . . /许可证”,sfConfig::得到(“sf_root_dir”)。“/许可证”);这个美元- >logSection(“安装”,“默认sqlite”);这个美元- >runTask(“配置:数据库”,sprintf(“‘sqlite: % s / sandbox.db’”,sfConfig::得到(“sf_data_dir”)));这个美元- >logSection(“安装”,创建一个应用程序的);这个美元- >runTask(“生成:应用”,“前端”);这个美元- >logSection(“安装”,“公布资产”);这个美元- >runTask(“插件:发布资产”);这个美元- >logSection(“安装”,“修复sqlite数据库权限”);触摸(sfConfig::得到(“sf_data_dir”)。' / sandbox.db ');修改文件权限(sfConfig::得到(“sf_data_dir”),0777年);修改文件权限(sfConfig::得到(“sf_data_dir”)。' / sandbox.db ',0777年);这个美元- >logSection(“安装”,“空目录添加一个空文件”);见过美元=数组();foreach(新RecursiveIteratorIterator(新RecursiveDirectoryIterator(sfConfig::得到(“sf_root_dir”)),RecursiveIteratorIterator::CHILD_FIRST)作为美元的路径= >美元的项目){如果(美元的项目- >isDir()& & !美元的项目- >isLink()& & !收取(见过美元(美元的路径])){触摸(美元的项目- >getRealPath()。' / . sf ');}见过美元(美元的项目- >getPath()]=真正的;}
这是非常…
而不是重复运行相同的任务,每次创建一个新的symfony项目时,您现在可以创建您自己的安装程序脚本,并调整您的symfony项目安装你所希望的方式。ob娱乐下载
我希望你能找到有用的用法为这个新特性。如果你创建伟大的安装程序脚本,请一起分享社区(复制URL在评论)。欧宝体育平台怎么样
评论
评论都关门了。
以确保评论保持相关,他们关闭了旧的帖子。
谢谢。
installDir如何通过http://?安装程序脚本时引用的工作吗它不会是……?
好了!
PS:我猜你domewhere的第一个片段是一个错误。:-)
我在做自定义设置使用脚本之前我创建了自己,但这看起来很难的更多可定制和可扩展的。