动态创建类功能?

时间:2010-03-30 11:10:18

标签: php oop

我有一个需要改进的验证课程。如果我需要一些自定义验证,我需要指定一个自定义函数。它有点像这样:

  1. 控制器告知验证需要自定义验证功能。
  2. 控制器运行验证。
  3. ---获取iffy --- ---
  4. 验证类创建控制器类的新实例....
  5. 验证类运行controller-> custom_validation_function()
  6. 验证类返回true / false
  7. 有没有我可以改变这个来做这样的事情?

    $validation = new validation;
    // Insert rules here.
    $validation->function() = $this->function();
    

    通过这样做,我可以摆脱创建不需要的类实例的步骤。

3 个答案:

答案 0 :(得分:6)

您需要使用Strategy Pattern。为每个要执行的验证设置Validator类,然后根据需要在使用类中实例化此类。然后将验证委托给验证器实例。

看看how Zend Framework does的想法 另请参阅我对此相关问题的回答中给出的示例:

答案 1 :(得分:1)

PHP并不真正支持monkeypatching,但您可以创建一个子类并将其用作$validation对象(这是我这样做的方式)。或者你可以想办法使用__call来做到这一点:http://php.net/manual/en/language.oop5.overloading.php

答案 2 :(得分:1)

在phpclasses.com上查看代理人example

$processruns->add(function() { echo "hello"; });
$processruns->add(function() { echo "world"; }); 

此外,this讨论可能有所帮助。