嘿,伙计们,我一直在破坏互联网,试图找到一些线索。
我正在尝试运行一个composer安装后cmd脚本
我当前的代码-
namespace CoreScripts;
define('DS', DIRECTORY_SEPARATOR);
use ComposerScriptEvent;
use ComposerConsoleHtmlOutputFormatter;
class installer {
public static function install(Event $event){
$callback = (function($arg){
if(is_dir($arg)){
return true;
}else{
return false;
}
});
$composer = $event->getComposer();
$IO = $event->getIO();
$currentDir = getcwd();
$resp = $IO->ask('Is `'.$currentDir.'` the path to project root? :', true);
var_dump($resp);
if($resp === false || strtolower($resp) === 'no'){
$resp2 = $IO->askAndValidate('Please enter the path to project root :', $callback ,3);
define('_pROOT', $resp2);
}else{
define('_pROOT', $currentDir);
}
print_r(_pROOT);
}
}
在这里,我试图从控制台获取用户输入并进行验证。代码在$callback
函数之前正确执行。但在CCD_ 2上的回调函数中,它没有循环回到问题,而是停止执行。
所以我的问题是-
如果参数不符合我的验证要求,如果不是false,我该返回什么。
另外,我想帮助的另一个想法是弄清楚如何为输出赋予颜色(目前默认控制台为白色),因为我希望我的问题是绿色的。PS-我确实找到了
HtmlOutputFormatter
类,但不知道如何使用它来更改颜色。我知道有composerAPI文档,但这没有帮助。
有人能帮我吗?
以下https://getcomposer.org/apidoc/master/Composer/IO/IOInterface.html#method_askAndValidate只要验证失败,就应该抛出一个\Exception。否则,从用户输入返回数据。我想您可以更改它们,但这应该在验证之后在回调之外进行处理。