เป็นไลบรารี PHP สำหรับการดึงข้อมูลและตรวจสอบความถูกต้องของฟิลด์ และจัดเก็บข้อความในคอนเทนเนอร์ที่แตกต่างกัน (รวมถึงข้อผิดพลาด คำเตือน ข้อมูล และความสำเร็จ) ขึ้นอยู่กับเงื่อนไข
อุดมการณ์เบื้องหลังไลบรารีนี้เรียบง่าย: มี 3 คลาส การพึ่งพาแบบเรียบง่าย และทำงานใน PHP 7.1 และสูงกว่า ดังนั้นจึงสามารถทำงานได้ในโปรเจ็กต์ PHP ทุกประเภท รวมถึง WordPress, Laravel, โปรเจ็กต์ PHP หลัก ฯลฯ
ตัวอย่าง
แบบฟอร์มการสอนและตารางด้วย PHP
มันเป็นตัวอย่างของการทำงาน ตัวอย่างทั่วไปจะซับซ้อนกว่า แม้ว่าจะมีโค้ดเพียงไม่กี่บรรทัดก็ตาม
สมมติว่าเราต้องการตรวจสอบค่าอินพุต (get) ที่เรียกว่า "id" เราสามารถทำสิ่งต่อไปได้:
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 chain
แต่ผิดพลาดตรงไหน.. ข้อความจะถูกเก็บไว้ใน 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.
อย่างไรก็ตาม เรายังอาจแสดงข้อความตามประเภท (ข้อผิดพลาด คำเตือน...) และแสดงเฉพาะข้อความตามตัวระบุที่เฉพาะเจาะจงเท่านั้น
var_dump ( $ val -> messageList -> get ( ' id ' )-> allErrorOrWarning ()); // All error or warning contained in the key "id".
เหตุใดข้อความจึงถูกจัดเก็บไว้ในโครงสร้างบางอย่าง?. มันไม่ง่ายเลยที่จะคืนข้อผิดพลาดใช่ไหม?
คำตอบคือแบบฟอร์ม สมมติว่าเรามีแบบฟอร์มที่มีสามช่อง หากรายการใดรายการหนึ่งล้มเหลว จะต้องมองเห็นข้อผิดพลาดในแต่ละฟิลด์แยกกัน นอกจากนี้ แบบฟอร์มทั้งหมดอาจมีข้อความของตัวเองได้
จุดเริ่มต้นของ chain มักจะเขียนไว้ที่ส่วนท้ายของโค้ด
วิธีการที่อนุญาตคือ:
ตัวอย่าง:
$ 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']
เงื่อนไข ($เงื่อนไข, $message = "", $conditionValue = null, $level = 'ข้อผิดพลาด', $key = null)
โดยจะเพิ่มเงื่อนไขที่ขึ้นอยู่กับ ประเภท ของอินพุต
@param สตริง $condition
หมายเลข :req,eq,ne,gt,lt,gte,lte,ระหว่าง,null,notnull
สตริง :req,eq,ne,minlen,maxlen,betweenlen,null,notnull,contain,notcontain ,alpha,alphanum,text,regexp,email,url,domain
วันที่ :req,eq,ne,gt,lt,gte,lte,ระหว่าง
datestring :req,eq,ne,gt,lt,gte,lte,ระหว่าง
บูลีน :req,eq,ne,true,false
ไฟล์ : ย่อขนาด, สูงสุด, คำขอ, รูปภาพ, doc, การบีบอัด, สถาปัตยกรรม, ต่อ
การทำงาน:
fn.static.Class.methodstatic
fn.global.ฟังก์ชั่น
fn.object.Class.method โดยที่ object เป็น $ object โกลบอล
fn.class.Class.วิธีการ
fn.class.namespaceClass.method
@param สตริง $message
ข้อความสามารถใช้ตัวแปรถัดไป '%field','%realfield','%value','%comp','%first','%second'
สนาม | คำอธิบาย | ตัวอย่าง |
---|---|---|
%สนาม | ชื่อช่อง อาจเป็น friendid หรือชื่อจริงก็ได้ | รหัสลูกค้า |
%เรียลฟิลด์ | ชื่อสนาม (ไม่ใช่ friendid ) | ตัวระบุลูกค้า |
%ค่า | ค่าปัจจุบันของสนาม | จอห์น |
%คอมพ์ | ค่าที่จะเปรียบเทียบ (ถ้ามี) | |
%อันดับแรก | ค่าแรกที่จะเปรียบเทียบ (หากค่าเปรียบเทียบเป็นอาร์เรย์) | |
%ที่สอง | ค่าที่สองที่จะเปรียบเทียบ (หากค่าเปรียบเทียบเป็นอาร์เรย์) | |
%สำคัญ | คีย์ที่ใช้ (สำหรับอาร์เรย์อินพุต) |
@param เป็นโมฆะ $conditionValue
@param string $level (ข้อผิดพลาด,คำเตือน,ข้อมูล,ความสำเร็จ) ระดับของข้อผิดพลาด ดู MessageContainer สำหรับข้อมูลเพิ่มเติม
@param string $key หากคีย์ไม่เป็น null ก็จะใช้เพื่อเพิ่มเงื่อนไขมากกว่าหนึ่งเงื่อนไขด้วยคีย์
@return ValidationOne
หมายเหตุ: หากค่าเป็น null และ isNullValid() เป็นจริง เงื่อนไขจะถูกละเว้น หากค่าหายไปและ isMissingValid() เป็นจริง เงื่อนไขต่างๆ จะถูกละเว้น หากค่าว่างเปล่า ('') และ isEmptyValid() เป็นจริง เงื่อนไขจะถูกละเว้น หากค่าว่างเปล่า ('') หรือ null และ isNullOrEmptyValid() เป็นจริง เงื่อนไขจะถูกละเว้น isNullValid(),isMissingValid(),isNullOrEmptyValid() และ isEmptyValid() มีประโยชน์เมื่อเราต้องการตรวจสอบความถูกต้องของค่าเฉพาะในกรณีที่มีอยู่หรือหากมีการตั้งค่าไว้
ตัวอย่าง:
$ 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 ' );
พิมพ์ | คำอธิบาย |
---|---|
จำนวนเต็ม | (ตัวเลข) อนุญาตให้ใช้ตัวเลขที่ไม่มีทศนิยม |
ยูนิกซ์ไทม์ | (ตัวเลข) อนุญาตให้ใช้ตัวเลขที่ไม่มีทศนิยม |
บูลีน | (บูลีน) เก็บค่าจริงหรือเท็จ ข้อมูลเข้าอาจแตกต่างกัน (ว่างเปล่า, ศูนย์หรือ null = false หรือเป็นจริง) |
ทศนิยม | (ตัวเลข) อนุญาตให้ใช้ตัวเลขที่มีทศนิยม |
ลอย | (ตัวเลข) อนุญาตให้ใช้ตัวเลขที่มีทศนิยม |
วาร์ชาร์ | (สตริง) อนุญาตให้ป้อนข้อมูลใด ๆ |
เชือก | (สตริง) อนุญาตให้ป้อนข้อมูลใด ๆ |
วันที่ | (วันที่) อินพุตอาจเป็น DateTime หรือสตริง ค่าจะถูกจัดเก็บเป็นวัตถุ DateTime |
วันที่และเวลา | (วันที่) อินพุตอาจเป็น DateTime หรือสตริง ค่าจะถูกจัดเก็บเป็นวัตถุ DateTime |
สตริงวันที่ | (วันที่) อินพุตอาจเป็น DateTime หรือสตริง ค่าจะถูกจัดเก็บเป็นสตริง |
วันที่และเวลา | (วันที่) อินพุตอาจเป็น DateTime หรือสตริง ค่าจะถูกจัดเก็บเป็นสตริง |
ไฟล์ | (ไฟล์) อินพุตเป็นสตริง และจัดเก็บเป็นสตริง แต่จะเพิ่มการตรวจสอบพิเศษ |
ประเภทอินพุต | เงื่อนไข | |
---|---|---|
ตัวเลข | gt,lt,gte,lte,ระหว่าง | |
เชือก | minlen,maxlen,ระหว่างlen,บรรจุ ,ไม่มี,อัลฟา,อัลฟานัม,ข้อความ,regexp,อีเมล,url,โดเมน | |
วันที่ | gt,lt,gte,lte,ระหว่าง | |
สตริงวันที่ | gt,lt,gte,lte,ระหว่าง | |
บูลีน | จริงเท็จ | |
ไฟล์ | ย่อขนาด, ขยายขนาดสูงสุด, คำขอ, รูปภาพ, doc, การบีบอัด, สถาปัตยกรรม, ต่อ | |
* (ใช้ได้กับทุกประเภท) | คำขอ, eq, ne, โมฆะ, ไม่โมฆะ, ว่างเปล่า, ไม่ว่างเปล่า | |
- | การทำงาน | |
- | fn.static.Class.methodstatic | |
- | fn.global.ฟังก์ชั่น | |
- | fn.object.Class.method โดยที่ object เป็น $ object โกลบอล | |
- | fn.class.Class.วิธีการ | |
- | fn.class.namespaceClass.method |
เงื่อนไข | คำอธิบาย | ตัวอย่างค่า |
---|---|---|
สถาปัตยกรรม | นามสกุลของไฟล์จะต้องเป็นไฟล์สถาปัตยกรรม (dwg ฯลฯ) | |
ระหว่าง | ตัวเลขต้องอยู่ระหว่างสองค่า | [0,20] |
ระหว่างเลน | ความยาวของข้อความต้องอยู่ระหว่างสองค่า | [0,20] |
การบีบอัด | นามสกุลของไฟล์จะต้องเป็นไฟล์บีบอัด | |
บรรจุ | ข้อความจะต้องมีค่า | "ข้อความ" |
หมอ | นามสกุลของไฟล์จะต้องเป็นไฟล์เอกสาร | |
eq (อาจเป็นอาร์เรย์หรือค่าก็ได้) / == | ค่าจะต้องเท่ากับ ค่าจะต้องอยู่ในอาร์เรย์ | "ข้อความ",["ข้อความ", "ข้อความ2"] |
มีอยู่ | ต้องมีไฟล์หรือค่าอยู่ (อาจเป็นค่าว่าง/ว่างเปล่า) | |
หายไป / ไม่มีอยู่ | ไฟล์หรือค่าต้องไม่มีอยู่หรือเป็นโมฆะ/ว่างเปล่า | |
จำเป็น (หรือต้องการ) | ค่าต้องไม่เป็นค่าว่างหรือว่างเปล่า | |
ต่อ | นามสกุล (ไฟล์) จะต้องอยู่ในรายการนามสกุล | ["ext1", "ext2", "ext3"] |
เท็จ | ค่าต้องเป็นเท็จ (===false) | |
fn.class.namespaceClass.method | เมธอดของคลาสจะต้องคืนค่าเป็นจริง | |
fn.class.Class.วิธีการ | เมธอดของคลาสจะต้องคืนค่าเป็นจริง | |
fn.global.ฟังก์ชั่น | ฟังก์ชันโกลบอลจะต้องส่งคืนค่าจริง | |
fn.object.Class.method โดยที่ object เป็น $ object โกลบอล | เมธอดของอ็อบเจ็กต์โกลบอลจะต้องส่งคืนค่าจริง | |
fn.static.Class.methodstatic | วิธีการคงที่ของคลาสจะต้องส่งกลับค่าจริง | |
การทำงาน | ฟังก์ชันจะต้องคืนค่าจริง | |
gt / > | ค่าจะต้องมากกว่า | 123 |
gte / >= | ค่าต้องมากกว่าหรือเท่ากับ | 123 |
ภาพ | นามสกุลของไฟล์จะต้องเป็นไฟล์รูปภาพ | |
lt / < | ค่าจะต้องน้อยกว่า | 123 |
lte / <= | ค่าจะต้องน้อยกว่าหรือเท่ากับ | 123 |
แม็กซ์เลน | ความยาวสูงสุดของสตริง | 123 |
ขนาดสูงสุด | ขนาดสูงสุดของไฟล์ | 123 |
มินเลน | ความยาวต่ำสุดของสตริง | 123 |
ลดขนาด | ขนาดขั้นต่ำของไฟล์ | 123 |
mime (ค่าที่จะเปรียบเทียบอาจเป็นสตริงหรืออาร์เรย์) | ประเภท mime ของไฟล์ | "application/msword" หรือ ["application/msword","image/gif"] |
ประเภท mime | ประเภท mime (ไม่มีประเภทย่อย) ของไฟล์ | "แอปพลิเคชัน" หรือ ["แอปพลิเคชัน"รูปภาพ"] |
ne / != (ค่าที่จะเปรียบเทียบอาจเป็นค่าเดียวหรืออาร์เรย์ก็ได้) | ค่าต้องไม่เท่ากัน หรือค่าต้องไม่อยู่ในอาร์เรย์ | 123,[123,345],["aa","bb"] |
ไม่มี | ค่าต้องไม่มีค่า | "ข้อความ" |
ไม่ใช่โมฆะ | ค่าต้องไม่เป็นค่าว่าง | |
โมฆะ | ค่าจะต้องเป็นโมฆะ | |
ว่างเปล่า | ค่าจะต้องว่างเปล่า (เช่น "",0,null) | |
ไม่เรียบร้อย | ค่าต้องไม่ว่างเปล่า (เช่น ไม่เท่ากับ "",0,null) | |
คำขอ | ค่านั้นจะต้องมีอยู่ | |
จริง | ค่าจะต้องเป็นจริง (===true) |
ตัวอย่าง:
$ 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 ;
}
บางครั้งเราจำเป็นต้องใช้เงื่อนไขที่กำหนดเอง เราสามารถสร้างตัวแปรโกลบอล ฟังก์ชันสแตติก หรือแม้แต่วิธีการภายในคลาสได้
ทุกวิธีหรือฟังก์ชันที่สร้างขึ้นจะต้องมีพารามิเตอร์สองตัว (มีชื่อใดก็ได้):
ตัวอย่างเช่น จะเกิดอะไรขึ้นหากเราต้องประเมินว่าไม่มี ID บางตัวในฐานข้อมูล?
$ 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 ;
}
}
หมายเหตุ: หากเราจำเป็นต้องระบุเนมสเปซ เราก็สามารถใช้สัญลักษณ์: 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
}
}
เมื่อเราตรวจสอบวัตถุ วัตถุนั้นสามารถจัดเก็บข้อมูลภายในคอนเทนเนอร์ข้อความ (หรือที่เรียกว่ารายการข้อความ)
MessageContainer (EFTEC/MessageContainer) มีข้อความรายการในลักษณะลำดับชั้น:
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.
ข้อความจะถูกปรับระดับดังนี้
รหัส | คำอธิบาย | ตัวอย่าง |
---|---|---|
ข้อผิดพลาด | ข้อความนี้เป็นข้อผิดพลาด และจะต้องได้รับการแก้ไข มันคือตัวปิดการแสดงของเรา | ฐานข้อมูลล่ม |
คำเตือน | ข้อความนี้เป็นคำเตือนว่าอาจถูกเพิกเฉยได้ อย่างไรก็ตาม คลาส MessageContainer อนุญาตให้จัดกลุ่ม Error และ Warning เหมือนกัน | รีจิสทรีถูกจัดเก็บ แต่มีคำเตือน |
ข้อมูล | ข้อความเป็นข้อมูล ตัวอย่างเช่น เพื่อบันทึกหรือดีบักการดำเนินการ | บันทึกจะถูกเก็บไว้ |
ความสำเร็จ | ข้อความนี้เป็นการดำเนินการที่ประสบความสำเร็จ | ยอมรับคำสั่งซื้อแล้ว |
การทำงาน | คำอธิบาย | ตัวอย่าง |
---|---|---|
addMessage($idLocker, $message, $level = 'ข้อผิดพลาด') | มันเพิ่มข้อความภายในตู้เก็บของ โดยปกติห้องสมุดจะดำเนินการโดยอัตโนมัติ แต่คุณสามารถเพิ่มข้อความด้วยตนเองผ่านรหัสได้ | $this->addMessage('pwd','ต้องระบุรหัสผ่าน','ข้อผิดพลาด'); |
getMessage($withWarning = false) | ได้รับข้อความแสดงข้อผิดพลาดแรกหรือว่างเปล่าหากไม่มี | $นี่->getMessage(); |
getMessages($withWarning = เท็จ) | ได้รับข้อความแสดงข้อผิดพลาดทั้งหมดหรือว่างเปล่าหากไม่มี | $นี่->getMessages(); |
getMessageId($idLocker) | ได้รับวัตถุ MessageLocker (ดู EFTEC/MessageContainer สำหรับข้อมูลเพิ่มเติม) | $obj=$this->getMessageId('pwd'); |
errorCount(includeWarning=false) | มันได้รับการนับข้อผิดพลาด | $count=$this->errorCount(); |
hasError($includeWarning=false) | มันจะคืนค่าจริงหากมีข้อผิดพลาด | $fail=$this->hasError(); |
สนาม | คำอธิบาย | ตัวอย่าง |
---|---|---|
$messageList | มันได้รับภาชนะทั้งหมด มันส่งคืนวัตถุประเภท MessageContainer | $container=$this->รายการข้อความ; |
คุณสามารถดูข้อมูลเพิ่มเติมเกี่ยวกับ MessageContainer ได้ใน EFTEC/MessageContainer
ตัวอย่าง:
$ 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.
เรายังสามารถทำงานกับวันที่ได้ รูปแบบวันที่มีหลายประเภท
พิมพ์ | คำอธิบาย |
---|---|
วันที่ | (วันที่) อินพุตอาจเป็น DateTime หรือสตริง ค่าจะถูกจัดเก็บเป็นวัตถุ DateTime |
วันที่และเวลา | (วันที่) อินพุตอาจเป็น DateTime หรือสตริง ค่าจะถูกจัดเก็บเป็นวัตถุ DateTime |
สตริงวันที่ | (วันที่) อินพุตอาจเป็น DateTime หรือสตริง ค่าจะถูกจัดเก็บเป็นสตริงโดยใช้ฟิลด์ $dateOutputString |
วันที่และเวลา | (วันที่) อินพุตอาจเป็น DateTime หรือสตริง ค่าจะถูกจัดเก็บเป็นสตริงโดยใช้ฟิลด์ $dateLongOutputString |
มีสองวิธีในการระบุรูปแบบของวันที่ แบบสั้น (วันที่เท่านั้น) และแบบยาว (วันที่และเวลา) และเราสามารถระบุรูปแบบเป็นอินพุตและเอาต์พุตได้
ฟิลด์ชื่อ | คำอธิบาย | ค่าเริ่มต้น |
---|---|---|
$dateShort | เป็นรูปแบบการป้อนข้อมูล (ที่คาดหวัง) สำหรับวันที่ (แบบสั้น) | ว/ม/ป |
$วันที่Long | เป็นรูปแบบอินพุต (คาดหวัง) (พร้อมวันที่และเวลา) | d/m/YH:i:s |
$dateOutputString | มันเป็นรูปแบบผลลัพธ์ (สำหรับ datestring) | อืม |
$dateLongOutputString | มันเป็นรูปแบบผลลัพธ์ (สำหรับ 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/Y
เราสามารถเปลี่ยนรูปแบบวันที่ได้โดยการเปลี่ยนฟิลด์หรือเรียกใช้ฟังก์ชันถัดไป
การตั้งค่ารูปแบบของวันที่ (อินพุตสั้น, อินพุตยาว, เอาต์พุตสั้น และเอาต์พุตยาว)
$ validation -> setDateFormat ( ' m/d/Y ' , ' m/d/Y H:i:s ' , ' Y-m-d ' , ' Y-m-dTH:i:sZ ' )
เรากำหนดรูปแบบของวันที่เป็นการกำหนดค่าเริ่มต้น
$ validation -> setDateFormatDefault ();
เรากำหนดรูปแบบเป็นวันที่:
ชื่อ | รูปแบบ |
---|---|
อินพุตสั้น | ม/วัน/ป |
อินพุตยาว | ม/วัน/YH:i:s |
เอาต์พุตสั้น | อืม |
เอาท์พุทยาว | YmdTH:i:sZ |
$ validation -> setDateFormatEnglish ()
ตามค่าเริ่มต้น ไลบรารีนี้ไม่สร้างข้อยกเว้น อย่างไรก็ตาม สามารถสร้างข้อยกเว้นได้หากข้อความเป็นประเภท ERROR และ/หรือ WARNING
ด้วยวิธีนี้ หากคอนเทนเนอร์สร้างข้อผิดพลาด คอนเทนเนอร์นั้นจะถูกจัดเก็บจะสร้างข้อยกเว้นใหม่ด้วย
หมายเหตุ: ตามค่าเริ่มต้น ข้อความส่วนใหญ่เป็นประเภท ERROR
หมายเหตุ: เมื่อโอเปอเรเตอร์ถูก Throw ค่าจะไม่ได้รับการกำหนดค่าและ Stack จะถูกลบทิ้ง กล่าวคือ ถ้าเรา Throw ข้อยกเว้น ข้อมูลทั้งหมดจะสูญหาย
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 ());
}
มีสี่วิธีในการจัดการกับค่าว่างในไลบรารีนี้
$ 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.
นอกจากนี้ ยังมี 4 วิธีในการยอมรับค่าที่หายไป เป็นค่าว่างหรือค่าว่าง โดยข้ามเงื่อนไขใดก็ได้
$ 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 condition
ใช้เมื่อเราต้องการตรวจสอบว่าเมื่ออินพุตมีค่าใดค่าหนึ่ง เว้นแต่ว่าค่านั้นหายไป ว่างเปล่า หรือเป็นโมฆะ
isNullorEmptyValid() เท่ากับมากกว่าการโทร: isEmptyValid()->isNullValid()
นอกจากนี้ตัวดำเนินการเหล่านั้นยังสามารถซ้อนกันได้
$ validation
-> isNullorEmptyValid ()
-> isMissingValid ()
-> condition (... . )
-> set (... . ); // this expression is valid if the value is null, empty(''), the value is missing, no matter the conditions.
เราสามารถตั้งค่าเริ่มต้นได้ ค่านี้อาจเป็นค่าสำรองเมื่อมีข้อผิดพลาด ค่าเริ่มต้นจะไม่ถูกแปลงหรือประมวลผล
$ validation
-> def (- 1 )
-> type ( ' integer ' )
-> ifFailThenDefault ()
-> set (...); // if the operation fails, then it returns -1
ตัดทอนผลลัพธ์ ตามค่าเริ่มต้น ผลลัพธ์จะไม่ถูกตัดแต่ง คุณสามารถเล็มด้านซ้าย ขวา หรือทั้งสองข้างก็ได้ มันใช้วิธีการแปลง () เพื่อทำการดำเนินการ
$ 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 sided
บางครั้งเรามักจะต้องการตัดแต่งผลลัพธ์ ดังนั้นเราจึงสามารถใช้วิธีนี้เพื่อตัดแต่งผลลัพธ์ได้เสมอ มันซ้อนกันในตอนท้ายของการแปลง