Anında Sınıf işlevleri oluşturabilir?

3 Cevap php

i İyileştirilmesi gereken bir doğrulama sınıf var. Bazı özel doğrulama gerektiriyorsa ben özel bir işlevi belirtmeniz gerekir. Bu gibi biraz çalışır:

  1. Kontrolör özel bir doğrulama işlevi gerekli olduğunu doğrulama söyler.
  2. Kontrolör doğrulama çalışır.
  3. --- --- Şüpheli burada izle
  4. Doğrulama sınıf denetleyici sınıfının yeni bir örneğini oluşturur ....
  5. Doğrulama sınıf denetleyici-> custom_validation_function çalışır ()
  6. Doğrulama sınıf true / false döndürür

Bu böyle bir şey yapmak için değiştirebileceğini someway var mı?

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

Bunu yaparak ben gereksiz bir sınıf örneği oluşturma aşamasında kurtulmak olabilir.

3 Cevap

Bir Strategy Pattern kullanmak isteyeceksiniz. Eğer gerektiği gibi tüketen sınıfta bu sınıf yapmak ve sonra örneğini istediğiniz her doğrulama için bir Validator sınıfı var. Sonra validator örneğine doğrulama temsilci.

Have a look at how Zend Framework does it for an idea.
Also see the example given in my answer to this related question:

PHP gerçekten monkeypatching desteklemez, ancak bir alt sınıfı ya oluşturmak ve (bu ben bunu yapacağını yolu olan) $validation nesnesi olarak bu kullanabilirsiniz. Ya da bunu yapmak için __ aramak kullanmak için bir yol bulurum: http://php.net/manual/en/language.oop5.overloading.php

Phpclasses.com de delegelere example Ödeme.

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

Ayrıca, this tartışma yardımcı olabilir.