| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- <sect1 id="zend.validate.validator_chains">
- <title>שרשור פונקציות אימות</title>
- <para>
- לפעמים יהיה צורך בלבצע מספר בדיקות ואימותים שונים על אותו ערך בסדר מסויים. הדוגמא הבאה מציגה כיצד לפתור את הבעיה אשר מוצגת <link linkend="zend.validate.introduction">בהקדמה</link>,
- איפה ששם המשתמש צריך להיות בין 6 ל 12 תווים ובאותיות בלבד:
- <programlisting role="php"><![CDATA[
- // Create a validator chain and add validators to it
- $validatorChain = new Zend_Validate();
- $validatorChain->addValidator(new Zend_Validate_StringLength(6, 12))
- ->addValidator(new Zend_Validate_Alnum());
- // Validate the username
- if ($validatorChain->isValid($username)) {
- // username passed validation
- } else {
- // username failed validation; print reasons
- foreach ($validatorChain->getMessages() as $message) {
- echo "$message\n";
- }
- }
- ]]>
- </programlisting>
- הפונקציות מורצות בסדר בהם הם מתווספות ל <code>Zend_Validate</code>. בדוגמא למעלה, שם המשתמש קודם נבדדק שהוא בין 6 ל 12 תווים, ואז הוא נבדק כדי לוודאות שהוא מכיל רק אותיות ומספרים.
- הבדיקה השנייה תמיד תרוץ, גם אם שם המשתמש הוא לא בטווח של 6 עד 12 והבדיקה הראשונה תחזיר שגיאה הבדיקה השנייה תרוץ גם כן ובמידה והיא גם תחזיר פסוק שקר גם היא תחזיר שגיאה,
- לאחר מכן במידה ושני הבדיקות נכשלו <code>getMessages()</code> יחזיר את הודעות השגיאה משני הבדיקות.
- </para>
- <para>
- בחלק מהמקרים זה הגיוני לשבור את שרשרת הבדיקות במידה ואחת מהבדיקות מחזירה פסוק שקר.
- <code>Zend_Validate</code> תומכת בסוג פעולה זה על ידי הוספת פרמטר שני למתודת <code>addValidator()</code>.
- על ידי הצבת ערך <code>true</code> לפרמטר השני שהוא בעצם <code>$breakChainOnFailure</code> הבדיקה שנוספה תשבור את השרשרת במידה והיא תחזיר פסוק שקר אשר יעצרו וימנעו מהרצה של פונקציות בדיקה נוספות שבאות לאחר מכן.
- אם הדוגמא למעלה הייתה כתובה כך, אז הבדיקה של אימות שם המשתמש שהוא אותיות ומספרים בלבד לא הייתה מתבצעת במידה והבדיקה הראשונה תחזיר פסוק שקר:
- <programlisting role="php"><![CDATA[
- $validatorChain->addValidator(new Zend_Validate_StringLength(6, 12), true)
- ->addValidator(new Zend_Validate_Alnum());
- ]]>
- </programlisting>
- </para>
- <para>
- כל אובייקט אשר מיישם את <code>Zend_Validate_Interface</code> יכול להתקיים בתור שרשרת האימות.
- </para>
- </sect1>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|