如何使用OOP实现通用验证?

时间:2017-09-17 23:34:23

标签: php oop

我使用策略模式,这意味着使用接口和一些实现它的类。使用Factory模式后,创建一个具有接口类型的实例。

每个类都有方法validate()。它类似于:

public function validate($file)
    {
        $allowedFileTypes = config('app.allowedFileTypes');
        $maxFileSize = config('app.maxFileSize');

            $validator = Validator::make(
                array('file' => $file),
                array('file' => array(
                    'required',
                    'mimes:' . $allowedFileTypes . '|max:' . $maxFileSize)));

            if ($validator->fails()) {
                //
            }

        }
    }

这是在接口中描述的方法,并且此方法放置在每个类中并进行微小更改。所以我尝试使用DRY principle并取消类的验证代码。但我不知道以哪种形式做到这一点:

  • 作为抽象验证课程?
  • 作为注射服务
  • 或者类,可以继承

1 个答案:

答案 0 :(得分:1)

我认为有很多方法可以做到这一点,而且没有一个正确的答案。如果只有一个这个函数的实例,并且它不需要引用$this,那么我认为最正确的答案是在类之外创建一个独立的函数。 / p>

看起来你正在做与config类似的事情,虽然我觉得这个功能有点问题,因为它显然似乎使用全局/单身状态。