Ini adalah perpustakaan PHP untuk mengambil dan memvalidasi bidang dan menyimpan pesan dalam wadah yang berbeda (termasuk kesalahan, peringatan, info, dan keberhasilan) tergantung pada kondisi.
Ideologi di balik perpustakaan ini sederhana: 3 kelas, dependensi sederhana dan berjalan di PHP 7.1 dan lebih tinggi, sehingga dapat berjalan di hampir semua proyek PHP, termasuk WordPress, Laravel, proyek inti PHP, dll.

Contoh
Formulir dan Tabel Tutorial dengan PHP

Ini adalah contoh fungsionalitas. Contoh tipikal lebih kompleks, meskipun hanya beberapa baris kode.
Katakanlah kita ingin memvalidasi suatu nilai dan nilai masukan (dapatkan) yang disebut "id", kita dapat melakukan hal berikut:
use eftec ValidationOne ;
$ val = new ValidationOne ();
$ r = $ val -> def ( ' ERROR ' )
-> type ( ' integer ' )
-> ifMissingThenDefault ()
-> condition ( " eq " , " It's not equals to 10 " , 10 )
-> condition ( " eq " , " It's not equals to 30 (info) " , 30 , ' info ' )
-> ifFailThenDefault ()
-> get ( ' id ' ); // <-- end of the chainTapi dimana letak kesalahannya?. Pesan disimpan di messageList
var_dump ( $ val -> messageList -> allArray ()); // here we show all messages of any kind of type.
var_dump ( $ val -> messageList -> errorCount ); // returns the number of errors.
var_dump ( $ val -> errorcount ()); // returns the number of errors (alternative)
var_dump ( $ val -> hasError ()); // returns true if there is an error.Namun, kami juga dapat menampilkan pesan berdasarkan jenis (kesalahan, peringatan..) dan hanya pesan berdasarkan pengenal tertentu.
var_dump ( $ val -> messageList -> get ( ' id ' )-> allErrorOrWarning ()); // All error or warning contained in the key "id".Mengapa pesan disimpan dalam struktur tertentu?. Bukankah mudah untuk mengembalikan kesalahan tersebut?
Jawaban adalah suatu bentuk. Katakanlah kita memiliki formulir dengan tiga bidang. Jika salah satunya gagal, maka kesalahannya harus terlihat untuk setiap bidang secara terpisah. Selain itu, keseluruhan formulir dapat memiliki pesannya sendiri.
Awal rantai biasanya ditulis di akhir kode.
Metode yang diperbolehkan adalah:
Contoh:
$ val = new ValidationOne ();
$ id = $ val -> type ( ' integer ' )-> get ( ' id ' );
$ id = $ val -> type ( ' integer ' )-> post ( ' id ' );
$ id = $ val -> type ( ' integer ' )-> request ( ' id ' );
$ id = $ val -> type ( ' integer ' )-> set ( ' 123 ' , ' id ' );
$ val = new ValidationOne ();
$ id = $ val -> type ( ' integer ' )-> get ( ' id ' ); // $_GET['id']
$ val = new ValidationOne ( ' frm ' ); // we set a prefix for every reading.
$ id = $ val -> type ( ' integer ' )-> get ( ' id ' ); // $_GET['frm_id'] kondisi ($kondisi, $pesan = "", $kondisiValue = nol, $level = 'kesalahan', $kunci = nol)
Itu menambahkan kondisi yang bergantung pada jenis input.
@param string $kondisi
nomor :req,eq,ne,gt,lt,gte,lte,between,null,notnull
string :req,eq,ne,minlen,maxlen,betweenlen,null,notnull,contain,notcontain ,alpha,alphanum,teks,regexp,email,url,domain
tanggal :req,eq,ne,gt,lt,gte,lte,antara
string tanggal :req,eq,ne,gt,lt,gte,lte,between
boolean :req,eq,ne,benar,salah
file :minsize,maxsize,req,image,doc,kompresi,arsitektur,ext
fungsi:
fn.statis.Kelas.metodestatis
fn.global.fungsi
fn.object.Class.method di mana objek adalah $objek global
fn.kelas.Kelas.metode
fn.kelas.namespaceKelas.metode
@param string $pesan
Pesan dapat menggunakan variabel berikutnya '%field','%realfield','%value','%comp','%first','%second'
| Bidang | Keterangan | Contoh |
|---|---|---|
| %bidang | nama fieldnya, bisa berupa friendid atau nama sebenarnya | ID Pelanggan |
| %bidang nyata | nama bidang (bukan friendid ) | Pengenal Pelanggan |
| %nilai | nilai lapangan saat ini | Yohanes |
| %komp | nilai untuk dibandingkan (jika ada) | |
| %Pertama | nilai pertama yang dibandingkan (jika nilai perbandingan berupa array) | |
| %Kedua | nilai kedua yang akan dibandingkan (jika nilai perbandingannya berupa array) | |
| %kunci | kunci yang digunakan (untuk array input) |
@param null $conditionValue
@param string $level (kesalahan, peringatan, info, sukses). Tingkat kesalahannya. Lihat MessageContainer untuk informasi lebih lanjut
@param string $key Jika kuncinya bukan null maka digunakan untuk menambahkan lebih dari satu kondisi berdasarkan kunci
@return ValidationOne
Catatan: jika nilainya null dan isNullValid() benar, maka kondisinya akan diabaikan. Jika nilainya hilang dan isMissingValid() bernilai true, maka ketentuan akan diabaikan. Jika nilainya kosong ('') dan isEmptyValid() benar, maka kondisinya akan diabaikan. Jika nilainya kosong ('') atau null dan isNullOrEmptyValid() benar, maka kondisinya akan diabaikan. isNullValid(),isMissingValid(),isNullOrEmptyValid() dan isEmptyValid() berguna ketika kita ingin memvalidasi suatu nilai hanya jika nilai tersebut ada atau jika nilainya telah ditetapkan.
Contoh:
$ validation -> def ( null )
-> type ( ' integer ' )
-> condition ( ' eq ' , ' %field %value is not equal to %comp ' , 50 )
-> condition ( ' eq ' , ' %field %value is not equal to %comp ' , 60 )
-> set ( ' aaa ' , ' variable2 ' ); | jenis | keterangan |
|---|---|
| bilangan bulat | (numerik) memungkinkan angka tanpa desimal |
| unixtime | (numerik) memungkinkan angka tanpa desimal |
| boolean | (boolean) ia menyimpan benar atau salah. Inputnya bisa bervariasi (kosong, nol atau nol = salah, jika tidak benar) |
| desimal | (numerik) memungkinkan angka dengan desimal |
| mengambang | (numerik) memungkinkan angka dengan desimal |
| varchar | (string) itu memungkinkan input apa pun |
| rangkaian | (string) itu memungkinkan input apa pun |
| tanggal | (tanggal) inputnya bisa berupa DateTime atau string. Nilainya disimpan sebagai objek DateTime |
| tanggalwaktu | (tanggal) inputnya bisa berupa DateTime atau string. Nilainya disimpan sebagai objek DateTime |
| string tanggal | (tanggal) inputnya bisa berupa DateTime atau string. Nilainya disimpan sebagai string |
| string waktuwaktu | (tanggal) inputnya bisa berupa DateTime atau string. Nilainya disimpan sebagai string |
| mengajukan | (file) inputnya adalah string, dan disimpan sebagai string, tetapi menambahkan validasi khusus |
| Jenis masukan | Kondisi | |
|---|---|---|
| nomor | gt,lt,gte,lte,antara | |
| rangkaian | minlen,maxlen,betweenlen,berisi ,tidak berisi,alfa,alfanum,teks,regexp,email,url,domain | |
| tanggal | gt,lt,gte,lte,antara | |
| string tanggal | gt,lt,gte,lte,antara | |
| boolean | benar, salah | |
| mengajukan | minsize,maxsize,req,gambar,doc,kompresi,arsitektur,ext | |
| * (berlaku untuk semua jenis) | req,eq,ne,null,notnull,kosong,notempty | |
| * | fungsi | |
| * | fn.statis.Kelas.metodestatis | |
| * | fn.global.fungsi | |
| * | fn.object.Class.method di mana objek adalah $objek global | |
| * | fn.kelas.Kelas.metode | |
| * | fn.kelas.namespaceKelas.metode |
| Kondisi | Keterangan | Contoh Nilai |
|---|---|---|
| arsitektur | Ekstensi file harus berupa file arsitektur (dwg, dll.) | |
| di antara | Angka tersebut harus berada di antara dua nilai | [0,20] |
| antaralen | Panjang teks harus berada di antara dua nilai | [0,20] |
| kompresi | Ekstensi file harus berupa file kompresi | |
| berisi | Teks harus mengandung nilai | "teks" |
| dokter | Ekstensi file harus berupa file dokumen | |
| eq (bisa berupa array atau nilai) / == | Nilainya harus sama dengan Nilainya harus terkandung dalam array | "teks",["teks","teks2"] |
| ada | File atau nilainya harus ada (bisa saja null/kosong) | |
| hilang/tidak ada | File atau nilai tidak boleh ada atau null/kosong | |
| diperlukan (atau diminta) | Nilainya tidak boleh nol atau kosong | |
| ext | Ekstensi (file) harus ada dalam daftar ekstensi | ["ext1", "ext2", "ext3"] |
| PALSU | Nilainya harus salah (===salah) | |
| fn.kelas.namespaceKelas.metode | Metode suatu kelas harus mengembalikan nilai true | |
| fn.kelas.Kelas.metode | Metode suatu kelas harus mengembalikan nilai true | |
| fn.global.fungsi | Fungsi global harus mengembalikan nilai true | |
| fn.object.Class.method di mana objek adalah $objek global | Metode objek global harus mengembalikan nilai true | |
| fn.statis.Kelas.metodestatis | Metode statis suatu kelas harus mengembalikan nilai true | |
| fungsi | Fungsi tersebut harus mengembalikan nilai true | |
| gt / > | Nilainya harus lebih besar dari | 123 |
| gte / >= | Nilainya harus lebih besar atau sama dengan | 123 |
| gambar | Ekstensi file harus berupa file gambar | |
| itu / < | Nilainya harus kurang dari | 123 |
| lte / <= | Nilainya harus lebih kecil atau sama dengan | 123 |
| maxlen | Panjang maksimum sebuah string | 123 |
| ukuran maksimal | Ukuran maksimum suatu file | 123 |
| minlen | Panjang minimum sebuah string | 123 |
| memperkecil | Ukuran minimum sebuah file | 123 |
| mime (nilai yang akan dibandingkan bisa berupa string atau array) | Jenis file mime | "aplikasi/msword" atau ["aplikasi/msword","gambar/gif"] |
| tipe mime | Tipe pantomim (tanpa subtipe) suatu file | "aplikasi" atau ["aplikasi,"gambar"] |
| ne / != (nilai yang akan dibandingkan bisa berupa nilai tunggal atau array) | Nilainya tidak boleh sama. Atau nilainya tidak boleh terkandung dalam array | 123,[123,345],["aa","bb"] |
| tidak mengandung | Nilai tidak boleh mengandung nilai | "teks" |
| bukan nol | Nilainya tidak boleh nol | |
| batal | Nilainya harus nol | |
| kosong | Nilainya harus kosong (yaitu "",0,null) | |
| catatan kosong | Nilainya tidak boleh kosong (yaitu tidak sama dengan "",0,null) | |
| permintaan | Nilainya harus ada | |
| BENAR | Nilainya harus benar (===benar) |
Contoh:
$ validation -> def ( null )
-> type ( ' integer ' )
-> condition ( ' eq ' , ' %field %value is not equal to %comp ' , 50 )
-> condition ( ' between ' , ' %field %value must be between 1 and 50 ' ,[ 1 , 50 ])
-> condition ( ' eq ' , ' %field %value is not equal to %comp ' , 60 )
-> condition ( ' eq ' , ' %field %value is not equal to %comp ' ,[ 60 , 200 ]) // eq allows a single or array
-> condition ( ' fn.static.Example.customval ' , ' the function does not work ' )
-> condition ( ' req ' )
-> condition ( ' lt ' , " es muy grande " , 2000 , ' warning ' )
-> condition ( ' eq ' , ' %field %value is not equal to %comp ' , 50 )
-> condition ( ' fn.static.Example.fnstatic ' , ' the static function does not work ' )
-> condition ( ' fn.static.somespaceSomeclass.methodStatic ' , null )
-> condition ( ' fn.global.customval ' , ' The global function does not work ' )
-> condition ( ' fn.object.example.fnnostatic ' , ' the function object does not work ' )
-> condition ( ' fn.class.somespaceSomeclass.method ' , ' The function some class does not work ' )
-> condition ( ' fn.class.Example.fnnostatic ' , ' la funcion class no funciona ' );
// ->condition('fn.static.Example.customval','la funcion no funciona')
function customval ( $ value , $ compareValue ) {
return true ;
} Terkadang kita perlu menggunakan kondisi khusus. Kita bisa membuat variabel global, fungsi statis, atau bahkan metode di dalam kelas.
Setiap metode atau fungsi yang dibuat harus memiliki dua parameter (dengan nama apa pun):
Misalnya, bagaimana jika kita perlu mengevaluasi jika beberapa id tidak ada di Database?
$ validation -> condition ( ' fn.global.idExist ' , ' The id already exist! ' )-> get ( " id " );
function idExist ( $ id , $ compare = null ) {
// select count(*) c from table where id=$id
if ( $ c > 0 ) {
return true ;
} else {
return false ;
}
}Catatan: jika kita perlu menentukan namespace, maka kita bisa menggunakan notasi: namespaceSomeClass
$ validation -> condition ( ' fn.global.customfn ' ); // global
$ validation -> condition ( ' fn.static.SomeClass.staticfn ' ); // calling a static method inside the class SomeClass.
$ validation -> condition ( ' fn.class.SomeClass.noStaticFn ' ); // method inside a class,it creates an instance of an object then it calls the method
$ validation -> condition ( ' fn.object.myObject.noStaticFn ' ); // method inside a class, it uses an instance called $myObject
// global function
function customfn ( $ value , $ compareValue ) {
// returns true or false
}
// static function
$ myObject = new SomeClass ();
class SomeClass {
public static function staticfn ( $ value , $ compareValue ) {
// returns true or false
}
public function noStaticFn ( $ value , $ compareValue ) {
// returns true or false
}
}Saat kita memvalidasi suatu objek, objek tersebut dapat menyimpan informasi di dalam Wadah Pesan (juga disebut Daftar Pesan).
MessageContainer (EFTEC/MessageContainer) berisi daftar pesan secara hierarki:
Container (usually only 1 for all the project)
Lockers (from zero to many)
Messages (from zero to many and grouped by level)
$ container -> get ( ' locker20 ' )-> firstError (); // it returns the first message of error in the locker20 that is part of the container.
Pesan diratakan sebagai berikut
| pengenal | Keterangan | Contoh |
|---|---|---|
| kesalahan | Pesannya adalah kesalahan, dan harus diselesaikan. Ini adalah penghenti pertunjukan kami. | Basis data sedang down |
| peringatan | Pesan tersebut merupakan peringatan bahwa mungkin hal itu dapat diabaikan. Namun, kelas MessageContainer memungkinkan untuk mengelompokkan Kesalahan dan Peringatan sebagai hal yang sama. | Registri disimpan tetapi dengan peringatan |
| info | Pesannya adalah informasi. Misalnya, untuk mencatat atau men-debug suatu operasi. | Log disimpan |
| kesuksesan | Pesannya adalah operasi berhasil | Pesanan Diterima |
| Fungsi | Keterangan | Contoh |
|---|---|---|
| addMessage($idLocker, $pesan, $level = 'kesalahan') | Itu menambahkan pesan di dalam loker. Biasanya, hal ini dilakukan secara otomatis oleh perpustakaan tetapi Anda dapat menambahkan pesan secara manual melalui kode. | $this->addMessage('pwd','password diperlukan','error'); |
| getMessage($withWarning = salah) | Ia mendapat pesan kesalahan pertama atau kosong jika tidak ada | $ini->getMessage(); |
| getMessages($withWarning = salah) | Itu mendapat semua pesan kesalahan atau kosong jika tidak ada | $ini->getMessages(); |
| dapatkanMessageId($idLocker) | Ia mendapat objek MessageLocker (lihat EFTEC/MessageContainer untuk informasi lebih lanjut) | $obj=$ini->getMessageId('pwd'); |
| errorCount (termasuk Peringatan = salah) | Itu mendapat jumlah kesalahan | $count=$ini->errorCount(); |
| hasError($includeWarning=salah) | Ini mengembalikan nilai true jika ada kesalahan | $gagal=$ini->hasError(); |
| Bidang | Keterangan | Contoh |
|---|---|---|
| $daftar pesan | Itu mendapat semua wadah. Ia mengembalikan objek bertipe MessageContainer | $container=$ini->daftar pesan; |
Anda dapat melihat informasi lebih lanjut tentang MessageContainer di EFTEC/MessageContainer
Contoh:
$ validation -> addMessage ( ' idlocker ' , ' this field is required ' , ' error ' ); // it adds a message inside a locker.
$ validation -> messageList -> get ( ' idlocker ' )-> allError (); // it gets all errors from the locker idlocker
$ validation -> getMessages ( true ); // it gets all messages of error or warning from all the lockers. Kami juga bisa bekerja dengan tanggal. Ada beberapa jenis format tanggal.
| jenis | keterangan |
|---|---|
| tanggal | (tanggal) inputnya bisa berupa DateTime atau string. Nilainya disimpan sebagai objek DateTime |
| tanggalwaktu | (tanggal) inputnya bisa berupa DateTime atau string. Nilainya disimpan sebagai objek DateTime |
| string tanggal | (tanggal) inputnya bisa berupa DateTime atau string. Nilai disimpan sebagai string menggunakan bidang $dateOutputString |
| string waktuwaktu | (tanggal) inputnya bisa berupa DateTime atau string. Nilai disimpan sebagai string menggunakan bidang $dateLongOutputString |
Ada dua cara untuk menentukan format tanggal, pendek (Tanggal saja) dan panjang (tanggal dan waktu). Dan kita dapat menentukan format sebagai input dan output.
| Bidang Nama | Keterangan | Nilai bawaan |
|---|---|---|
| $dateShort | Ini adalah format masukan (yang diharapkan) untuk tanggal (pendek) | hari/m/Y |
| $dateLong | Ini adalah format input (yang diharapkan) (dengan tanggal dan waktu) | d/m/YH:i:s |
| $tanggalOutputString | Ini adalah format output (untuk datestring) | Ymd |
| $dateLongOutputString | Ini adalah format output (untuk datetimestring) | YmdTH:i:sZ |
$ r = getVal ()-> type ( ' datestring ' )-> set ( ' 31-12-2019 ' ); // 2019-12-31 note: the default input value is d/m/Y, not m/d/YKita dapat mengubah format tanggal dengan mengubah kolom atau memanggil fungsi selanjutnya
Mengatur format tanggal (input pendek, input panjang, output pendek dan output panjang)
$ validation -> setDateFormat ( ' m/d/Y ' , ' m/d/Y H:i:s ' , ' Y-m-d ' , ' Y-m-dTH:i:sZ ' )Kami mengatur format tanggal ke konfigurasi default
$ validation -> setDateFormatDefault ();Kami mengatur format tanggal menjadi:
| Nama | Format |
|---|---|
| masukan pendek | m/hari/Y |
| masukan panjang | m/h/YH:i:s |
| keluaran pendek | Ymd |
| keluaran panjang | YmdTH:i:sZ |
$ validation -> setDateFormatEnglish ()Secara default, perpustakaan ini tidak menghasilkan pengecualian. Namun, dimungkinkan untuk menghasilkan pengecualian jika pesannya bertipe ERROR dan/atau WARNING.
Dengan metode ini, jika wadah menghasilkan kesalahan, maka wadah yang disimpan juga menghasilkan pengecualian baru.
Catatan: Secara default, sebagian besar pesan bertipe ERROR.
Catatan: Ketika operator dilempar, maka nilainya tidak ditetapkan dan tumpukan dihapus, yaitu jika kita melempar pengecualian, semua informasi akan hilang.
try {
$ validation -> type ( ' integer ' )
-> throwOnError () // for errors only
-> set ( ' hello ' , ' field1 ' );
// or you could use:
$ validation -> type ( ' integer ' )
-> throwOnError ( true , true ) // for errors and warnings
-> set ( ' hello ' , ' field1 ' );
$ this -> fail ( ' this value means the throw failed ' );
} catch ( Exception $ ex ) {
$ this -> assertEquals ( ' field1 is not numeric ' , $ ex -> getMessage ());
}Ada empat cara berbeda untuk menangani nilai kosong di perpustakaan ini.
$ validation -> exist ()-> set ( null ); // is valid.
$ validation -> exist ()-> set ( '' ); // is valid.
$ validation -> exist ()-> get ( ' field ' ); // is valid only if $_GET['field'] exist (even if it is null) $ validation -> required ()-> set ( null ); // is not valid.
$ validation -> required ()-> set ( "" ); // is not valid.
$ validation -> required ()-> set ( ' hi ' ); // is valid. $ validation -> notnull ()-> set ( null ); // is not valid.
$ validation -> notnull ()-> set ( "" ); // is valid.
$ validation -> notnull ()-> set ( ' hi ' ); // is valid. $ validation -> notempty ()-> set ( null ); // is valid.
$ validation -> notempty ()-> set ( "" ); // is not valid.
$ validation -> notempty ()-> set ( ' hi ' ); // is valid. Selain itu, ada 4 cara untuk menerima nilai yang hilang, nol atau kosong, dengan melewati kondisi apa pun.
$ validation -> isNullValid ()-> condition (... . )-> set ( null ); // is valid no matter the condition.
$ validation -> isNullorEmptyValid ()-> condition (... . )-> set ( null ); // is valid no matter the condition.
$ validation -> isEmptyValid ()-> condition (... . )-> set ( '' ); // is valid no matter the condition.
$ validation -> isMissingValid ()-> condition (... . )-> get ( ' field ' ); // If the field is missing, then is valid no matter the conditionIni digunakan ketika kita perlu memvalidasi ketika suatu input memiliki nilai tertentu kecuali nilainya hilang, kosong, atau nol.
isNullorEmptyValid() sama dengan memanggil: isEmptyValid()->isNullValid()
Selain itu, operator tersebut dapat ditumpuk.
$ validation
-> isNullorEmptyValid ()
-> isMissingValid ()
-> condition (... . )
-> set (... . ); // this expression is valid if the value is null, empty(''), the value is missing, no matter the conditions. Kita dapat menetapkan nilai default. Nilai ini bisa menjadi cadangan bila terjadi kesalahan. Nilai default tidak pernah dikonversi atau diproses.
$ validation
-> def (- 1 )
-> type ( ' integer ' )
-> ifFailThenDefault ()
-> set (...); // if the operation fails, then it returns -1Pangkas hasilnya. Secara default, hasilnya tidak terpotong. Anda dapat memangkas sisi kiri, kanan, atau kedua sisinya. Ia menggunakan metode convert() untuk melakukan operasi.
$ validation -> trim ()-> set (... . ); // trim both sided
$ validation -> trim ( ' trim ' , ' ., ' )-> set (... . ); // trim . and ,
$ validation -> trim ( ' ltrim ' )-> set (... . ); // trim left sided
$ validation -> trim ( ' rtrim ' )-> set (... . ); // trim right sidedTerkadang, kita selalu ingin memangkas hasilnya. Jadi kita bisa menggunakan cara ini untuk selalu memangkas hasilnya. Itu ditumpuk di akhir konversi.