Inheritance: extends CValidator
 /**
  * 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());
 }
Beispiel #2
0
$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) {
Beispiel #3
0
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;
}
Beispiel #4
0
<?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();