Phlaconphp - 如何在依赖注入中添加此验证器?

时间:2014-09-09 02:33:30

标签: php phalcon

<?php

use Phalcon\Mvc\Model\Validator,
    Phalcon\Mvc\Model\ValidatorInterface;

class MaxMinValidator extends Validator implements ValidatorInterface
{

    public function validate($model)
    {
        $field = $this->getOption('field');

        $min = $this->getOption('min');
        $max = $this->getOption('max');

        $value = $model->$field;

        if ($min <= $value && $value <= $max) {
            $this->appendMessage(
                "The field doesn't have the right range of values",
                $field,
                "MaxMinValidator"
            );
            return false;
        }
        return true;
    }

}

谢谢!

1 个答案:

答案 0 :(得分:0)

看起来你看起来并不像docs。下面注入共享服务(它将在第一个请求时创建,并在以下所有请求中重用)。

//Using an anonymous function, the instance will be lazy loaded
$di->setShared("minMaxValidator", function() {
    return new MaxMinValidator();
});

另外请记住,尽管你可以注入DI任何东西,但这并不意味着你应该这样做。像验证器这样的较小的东西通常是模型/形式特定的,即它们很少根据定义是全局服务。为了防止DI过度膨胀,您可以将它们“注入”特定模型或表单,作为可通过正确的可见性访问的静态属性。更重要的是,除非你实例化它们中的gadzillions,否则注入与实例化不会对整体性能产生重大影响。