/** * Tests MyValidator->email() */ public function testEmail() { //该单元测试用例采用等价类的方式测试,黑盒测试 // 以.开头,含有特殊字符,user超出长度,domin超出长度 // 正常 $this->MyValidator->setValue("*****@*****.**"); $this->assertEquals(1, $this->MyValidator->email()); //unit1 以.开头 $this->MyValidator->setValue("*****@*****.**"); $this->assertEquals(0, $this->MyValidator->telephone()); //unit2 含有特殊字符 $this->MyValidator->setValue("re\$%^njiangang@baixing.com"); $this->assertEquals(0, $this->MyValidator->telephone()); //unit3 user超出长度 $this->MyValidator->setValue("*****@*****.**"); $this->assertEquals(0, $this->MyValidator->telephone()); //unit4 domin超出长度 $this->MyValidator->setValue("renjiangang@bai.fdsfs.fdfsfsdfsdfsdfsdfsdfsdfsdfsdfsfsdfsfs.fdsfsdfsdfsd.fsdfsdfds\n .fsdfsdfs\n sfsd.fdsfs.fsdfs.fdsfs.fdsfsd.fsfsdf.fdsf.fsdfsf\n .fssf.fssf.fssf.fssf.fssf.fssf.fssf.fssf.fssf.fssf.fssf.fsxing.com"); $this->assertEquals(0, $this->MyValidator->telephone()); }
$t->diag('->getMessage() ->getMessages() ->setMessage() ->setMessages()'); $v = new MyValidator(); $t->is($v->getMessage('required'), 'This string is required.', '->getMessage() returns a message from the embedded validator'); $v->setMessage('invalid', 'This string is invalid.'); $t->is($v->getMessages(), array('required' => 'This string is required.', 'invalid' => 'This string is invalid.', 'max_length' => '"%value%" is too long (%max_length% characters max).', 'min_length' => '"%value%" is too short (%min_length% characters min).'), '->getMessages() returns messages from the embedded validator'); $v->setMessages(array('required' => 'Required...')); $t->is($v->getMessages(), array('required' => 'Required...', 'invalid' => 'Invalid.'), '->setMessages() sets all messages for the embedded validator'); // ->getOption() ->getOptions() ->hasOption() ->getOptions() ->setOptions() $v = new MyValidator(); $t->is($v->getOption('trim'), true, '->getOption() returns an option from the embedded validator'); $v->setOption('trim', false); $t->is($v->getOptions(), array('required' => true, 'trim' => false, 'empty_value' => '', 'min_length' => 2, 'max_length' => null), '->getOptions() returns an array of options from the embedded validator'); $t->is($v->hasOption('min_length'), true, '->hasOption() returns true if the embedded validator has a given option'); $v->setOptions(array('min_length' => 10)); $t->is($v->getOptions(), array('required' => true, 'trim' => false, 'empty_value' => null, 'min_length' => 10), '->setOptions() sets all options for the embedded validator'); $v = new MyValidator(); // ->clean() $t->diag('->clean()'); try { $v->clean(null); $t->fail('->clean() throws a sfValidatorError if the value is required'); $t->skip('', 1); } catch (sfValidatorError $e) { $t->pass('->clean() throws a sfValidatorError if the value is required'); $t->is($e->getCode(), 'required', '->clean() throws a sfValidatorError'); } try { $v->clean('f'); $t->fail('->clean() throws a sfValidatorError if the wrapped validator failed'); $t->skip('', 1); } catch (sfValidatorError $e) {
function valdate($arr) { $object = new MyValidator(); $result = ""; // email if ($arr["email"] == null || $arr["email"] == "") { $result["status"] = false; $result["email"] = "没有填写"; return $result; } else { $object->setEmail($arr["email"]); if ($object->email()) { $result["email"] = "正确"; } else { $result["status"] = false; $result["email"] = "邮件格式错误"; return $result; } } // mobile 手机 if ($arr["mobile"] == null || $arr["mobile"] == "") { $result["status"] = false; $result["mobile"] = "没有填写"; return $result; } else { $object->setMobile($arr["mobile"]); if ($object->mobile()) { $result["mobile"] = "正确"; } else { $result["status"] = false; $result["mobile"] = "手机格式错误"; return $result; } } // tel 座机 if ($arr["tel"] == null || $arr["tel"] == "") { $result["status"] = false; $result["tel"] = "没有填写"; return $result; } else { $object->setTel($arr["tel"]); if ($object->telephone()) { $result["tel"] = "正确"; } else { $result["status"] = false; $result["tel"] = "座机格式错误"; return $result; } } // number if ($arr["number"] == null || $arr["number"] == "") { $result["status"] = false; $result["number"] = "没有填写"; return $result; } else { $object->setNumber($arr["number"]); if ($object->number()) { $result["number"] = "正确"; } else { $result["status"] = false; $result["number"] = "数字格式错误"; return $result; } } $result["status"] = true; return $result; }
<?php $test = new MyValidator("*****@*****.**"); $test->email(); class MyValidator { private $value; public function __construct($value) { $this->value = $value; } /** * 输入一个数字串。返回他是否为一个合法数字, e.g. $this->value = 123; * @return int */ public function setValue($val) { $this->value = $val; } public function number() { if (!is_numeric($this->value)) { return 0; } if (preg_match("/^(-)?[0-9]+(.[0-9]+)?\$/", $this->value)) { return 1; } else { return 0; } } /**
<?php require_once './DbManager.php'; require_once './MyValidator.php'; session_start(); if (!isset($_POST['token']) || $_POST['token'] !== $_SESSION['token']) { die('不正なアクセスが行われました。'); } $v = new MyValidator(); $v->requiredCheck($_POST['isbn'], 'ISBNコード'); // 必須検証 $v->regexCheck($_POST['isbn'], 'ISBNコード', '/^978-4-[0-9]{3,6}-[0-9]{3,6}-[0-9X]{1}$/'); // 正規表現検証 $v->duplicateCheck($_POST['isbn'], 'ISBNコード', 'SELECT isbn FROM book WHERE isbn = :value'); // 重複検証 $v->requiredCheck($_POST['title'], '書名'); // 必須検証 $v->lengthCheck($_POST['title'], '書名', 100); // 文字列長検証 $v->intTypeCheck($_POST['price'], '価格'); // 整数型検証 $v->rangeCheck($_POST['price'], '価格', 10000, 1); // 数値範囲検証 $v->inArrayCheck($_POST['publish'], '出版社', array('翔泳社', '秀和システム', '毎日コミュニケーションズ', '技術評論社')); // 配列要素検証 $v->dateTypeCheck($_POST['published'], '刊行日'); // 日付型検証 $v(); try { // データベースへの接続を確立 $db = getDb();