| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | <?php// +----------------------------------------------------------------------// | ThinkPHP [ WE CAN DO IT JUST THINK ]// +----------------------------------------------------------------------// | Copyright (c) 2006~2015 http://thinkphp.cn All rights reserved.// +----------------------------------------------------------------------// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )// +----------------------------------------------------------------------// | Author: yunwuxin <448901948@qq.com>// +----------------------------------------------------------------------namespace think\console\output\question;use think\console\output\Question;class Confirmation extends Question{    private $trueAnswerRegex;    /**     * 构造方法     * @param string $question        问题     * @param bool   $default         默认答案     * @param string $trueAnswerRegex 验证正则     */    public function __construct($question, $default = true, $trueAnswerRegex = '/^y/i')    {        parent::__construct($question, (bool) $default);        $this->trueAnswerRegex = $trueAnswerRegex;        $this->setNormalizer($this->getDefaultNormalizer());    }    /**     * 获取默认的答案回调     * @return callable     */    private function getDefaultNormalizer()    {        $default = $this->getDefault();        $regex   = $this->trueAnswerRegex;        return function ($answer) use ($default, $regex) {            if (is_bool($answer)) {                return $answer;            }            $answerIsTrue = (bool) preg_match($regex, $answer);            if (false === $default) {                return $answer && $answerIsTrue;            }            return !$answer || $answerIsTrue;        };    }}
 |