Kohana en Doğrulama Kütüphanesi için bir filtre gibi bir statik sınıf yöntemi nasıl kullanılır?

2 Cevap php

Kohana's Validation library has a pre_filter() method which lets you apply any PHP function to fields to be validated, as trim(), etc.
I tried to use a static method as a filter, but won't work:
$validation->pre_filter( 'field_name', 'class::method' )

Peki, bu ne iki filtreleri, class ile bir ve method ile antoher tane oluşturun.

Herhangi bir ipucu?

2 Cevap

Bir geri PHP'nin biridir pseudo-types. Bu geçmesine izin verecek bir

  1. fonksiyon
  2. Bir örneği nesnenin yöntem
  3. statik yöntem / sınıf yöntemi

bir geri bekliyor, ve PHP fonksiyon / metod onunla ne yapacağını bilecek bir PHP işlevi / yöntem.

Manuel

Bir PHP işlevi bir dize olarak adını geçirilir. Herhangi bir yerleşik veya kullanıcı tanımlı fonksiyon dil gibi oluşumları dışında, kullanılabilir:) dizi (), echo (), boş (), eval (), exit (), isset (), listenin (print () veya unset ().

Bir örneği nesnenin bir yöntemi indeksi 0 ve indeksi 1 yöntem adı bir nesne içeren bir dizi olarak geçirilir.

Duruk sınıf yöntemleri de dizin 0 sınıf adı yerine bir nesne geçerek bu sınıfın bir nesnesi başlatmasını olmadan geçirilebilir.

Yani, bir geri arama dizesi yerine bir statik yöntemi kullanmak için, kullanmak istiyorum

array('className','methodName');

Kohana standart PHP geri çağrıları kullanarak, bu size istediğinizi verecektir.

Statik bir yöntem çağrısı kullanmak için geri geri, örneğin bir dizi .. olması gerekir:

array('MyCoolClassName', 'methodName');

bu yüzden onun kullanarak call_user_func varsayarak sonra yöntem çağrısı olmalıdır:

$validation->pre_filter( 'field_name', array('MyCoolClassName', 'methodName'));

ya da bir nesne örneği kullanmak gerekirse:

$validation->pre_filter( 'field_name', array($objectInstance, 'methodName'));