Zend_Validate-InArray.xml 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect2 id="zend.validate.set.in_array">
  5. <title>InArray</title>
  6. <para>
  7. <classname>Zend_Validate_InArray</classname> erlaubt es zu prüfen ob ein gegebener Wert
  8. in einem Array enthalten ist. Er ist auch in der Lage mehrdimensionale Arrays zu prüfen.
  9. </para>
  10. <sect3 id="zend.validate.set.in_array.options">
  11. <title>Unterstützte Optionen für Zend_Validate_InArray</title>
  12. <para>
  13. Die folgenden Optionen werden für <classname>Zend_Validate_InArray</classname>
  14. unterstützt:
  15. </para>
  16. <itemizedlist>
  17. <listitem>
  18. <para>
  19. <emphasis><property>haystack</property></emphasis>: Setzt den Haystack für die
  20. Prüfung.
  21. </para>
  22. </listitem>
  23. <listitem>
  24. <para>
  25. <emphasis><property>recursive</property></emphasis>: Definiert ob die Prüfung
  26. rekursiv durchgeführt werden soll. Diese Option ist standardmäßig
  27. <constant>FALSE</constant>.
  28. </para>
  29. </listitem>
  30. <listitem>
  31. <para>
  32. <emphasis><property>strict</property></emphasis>: Definiert ob die Prüfung
  33. strikt durchgeführt werden soll. Diese Option ist standardmäßig
  34. <constant>FALSE</constant>.
  35. </para>
  36. </listitem>
  37. </itemizedlist>
  38. </sect3>
  39. <sect3 id="zend.validate.set.in_array.basic">
  40. <title>Einfache Array Prüfung</title>
  41. <para>
  42. Der einfachste Weg ist es, das Array welches durchsucht werden soll, bei der
  43. Initiierung anzugeben:
  44. </para>
  45. <programlisting language="php"><![CDATA[
  46. $validator = new Zend_Validate_InArray(array('key' => 'value',
  47. 'otherkey' => 'othervalue'));
  48. if ($validator->isValid('value')) {
  49. // Wert gefunden
  50. } else {
  51. // Wert nicht gefunden
  52. }
  53. ]]></programlisting>
  54. <para>
  55. Das verhält sich genauso wie <acronym>PHP</acronym>'s
  56. <methodname>in_array()</methodname> Methode.
  57. </para>
  58. <note>
  59. <para>
  60. Standardmäßig ist diese Prüfung nicht strikt noch kann Sie mehrdimensionale Arrays
  61. prüfen.
  62. </para>
  63. </note>
  64. <para>
  65. Natürlich kann man das Array gegen das geprüft werden soll auch im Nachhinein durch
  66. Verwendung der <methodname>setHaystack()</methodname> Methode angegeben werden.
  67. <methodname>getHaystack()</methodname> gibt das aktuell gesetzte Haystack Array zurück.
  68. </para>
  69. <programlisting language="php"><![CDATA[
  70. $validator = new Zend_Validate_InArray();
  71. $validator->setHaystack(array('key' => 'value', 'otherkey' => 'othervalue'));
  72. if ($validator->isValid('value')) {
  73. // Wert gefunden
  74. } else {
  75. // Wert nicht gefunden
  76. }
  77. ]]></programlisting>
  78. </sect3>
  79. <sect3 id="zend.validate.set.in_array.strict">
  80. <title>Strikte Array Prüfung</title>
  81. <para>
  82. Wie vorher erwähnt kann man auch eine Strikte Prüfung im Array durchführen.
  83. Standardmäßig würde kein Unterschied zwischen dem Integerwert <emphasis>0</emphasis>
  84. und dem String <emphasis>"0"</emphasis> sein. Wenn eine strikte Prüfung durchgeführt
  85. wird dann wird dieser Unterschied auch geprüft und nur gleiche Typen werden akzeptiert.
  86. </para>
  87. <para>
  88. Eine strikte Prüfung kann auch auf zwei verschiedenen Wegen durchgeführt werden. Bei
  89. der Initiierung und durch Verwendung einer Methode. Bei der Initiierung muß hierfür ein
  90. Array mit der folgenden Struktur angegeben werden:
  91. </para>
  92. <programlisting language="php"><![CDATA[
  93. $validator = new Zend_Validate_InArray(
  94. array(
  95. 'haystack' => array('key' => 'value', 'otherkey' => 'othervalue'),
  96. 'strict' => true
  97. )
  98. );
  99. if ($validator->isValid('value')) {
  100. // Wert gefunden
  101. } else {
  102. // Wert nicht gefunden
  103. }
  104. ]]></programlisting>
  105. <para>
  106. Der <emphasis>haystack</emphasis> Schlüssel enthält das eigene Array das für die
  107. Prüfung verwendet wird. Durch das Setzen des <emphasis>script</emphasis> Schlüssels
  108. auf <constant>TRUE</constant> wird die Prüfung so durchgeführt, das der Typ strikt
  109. geprüft wird.
  110. </para>
  111. <para>
  112. Natürlich kann man auch die <methodname>setStrict()</methodname> Methode verwenden
  113. um diese Einstellung im Nachhinein zu ändern und <methodname>getStrict()</methodname>
  114. um den aktuell gesetzten Status zu erhalten.
  115. </para>
  116. <note>
  117. <para>
  118. Es ist zu beachten das die <emphasis>strict</emphasis> Einstellung standardmäßig
  119. <constant>FALSE</constant> ist.
  120. </para>
  121. </note>
  122. </sect3>
  123. <sect3 id="zend.validate.set.in_array.recursive">
  124. <title>Rekursive Array Prüfung</title>
  125. <para>
  126. Zusätzlich zu <acronym>PHP</acronym>'s <methodname>in_array()</methodname> Methode kann
  127. diese Prüfung auch verwendet werden um Mehrdimensionale Arrays zu prüfen.
  128. </para>
  129. <para>
  130. Um mehrdimensionale Array zu prüfen muß die <emphasis>recursive</emphasis> Option
  131. gesetzt werden.
  132. </para>
  133. <programlisting language="php"><![CDATA[
  134. $validator = new Zend_Validate_InArray(
  135. array(
  136. 'haystack' => array(
  137. 'firstDimension' => array('key' => 'value',
  138. 'otherkey' => 'othervalue'),
  139. 'secondDimension' => array('some' => 'real',
  140. 'different' => 'key')),
  141. 'recursive' => true
  142. )
  143. );
  144. if ($validator->isValid('value')) {
  145. // Wert gefunden
  146. } else {
  147. // Wert nicht gefunden
  148. }
  149. ]]></programlisting>
  150. <para>
  151. Das eigene Array wird das rekursiv geprüft um zu sehen ob der angegebene Wert enthalten
  152. ist. Zusätzlich kann <methodname>setRecursive()</methodname> verwendet werden um diese
  153. Option im Nachhinein zu setzen und <methodname>getRecursive()</methodname> um Ihn zu
  154. erhalten.
  155. </para>
  156. <programlisting language="php"><![CDATA[
  157. $validator = new Zend_Validate_InArray(
  158. array(
  159. 'firstDimension' => array('key' => 'value',
  160. 'otherkey' => 'othervalue'),
  161. 'secondDimension' => array('some' => 'real',
  162. 'different' => 'key')
  163. )
  164. );
  165. $validator->setRecursive(true);
  166. if ($validator->isValid('value')) {
  167. // Wert gefunden
  168. } else {
  169. // kein Wert gefunden
  170. }
  171. ]]></programlisting>
  172. <note>
  173. <title>Standardwert für die Rekursion</title>
  174. <para>
  175. Standardmäßig ist die rekursive Prüfung ausgeschaltet.
  176. </para>
  177. </note>
  178. <note>
  179. <title>Optionsschlüssel im Haystack</title>
  180. <para>
  181. Wenn man die Schlüssel '<property>haystack</property>',
  182. '<property>strict</property>' oder '<property>recursive</property>' im eigenen
  183. Haystack verwenden, dann muß man diese mit dem <property>haystack</property>
  184. Schlüssel einhüllen.
  185. </para>
  186. </note>
  187. </sect3>
  188. </sect2>