migration-17.xml 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 18682 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="migration.17">
  5. <title>Zend Framework 1.7</title>
  6. <para>
  7. Wenn man von einem älteren Release auf Zend Framework 1.7 oder höher hochrüstet sollte
  8. man die folgenden Migrations Hinweise beachten.
  9. </para>
  10. <sect2 id="migration.17.zend.controller">
  11. <title>Zend_Controller</title>
  12. <sect3 id="migration.17.zend.controller.dispatcher">
  13. <title>Änderungen im Dispatcher Interface</title>
  14. <para>
  15. Benutzer haben uns darauf aufmerksam gemacht das
  16. <classname>Zend_Controller_Action_Helper_ViewRenderer</classname> Methoden auf der
  17. abstrakten Dispatcher Klasse verwendet hat die nicht im Dispatcher Interface waren.
  18. Die folgenden Methoden wurden hinzugefügt um sicherzustellen das eigene Dispatcher
  19. weiterhin mit den ausgelieferten Implementierungen funktionieren:
  20. </para>
  21. <itemizedlist>
  22. <listitem>
  23. <para>
  24. <methodname>formatModuleName()</methodname>: sollte verwendet werden um
  25. einen rohen Controllernamen zu nehmen, wie den einen der in einem
  26. Anfrageobjekt gepackt ist, und Ihn in einen richtigen Klassennamen zu
  27. reformatieren den eine Klasse, die
  28. <classname>Zend_Controller_Action</classname> erweitert, verwenden würde
  29. </para>
  30. </listitem>
  31. </itemizedlist>
  32. </sect3>
  33. </sect2>
  34. <sect2 id="migration.17.zend.file.transfer">
  35. <title>Zend_File_Transfer</title>
  36. <sect3 id="migration.17.zend.file.transfer.validators">
  37. <title>Änderungen bei der Verwendung von Filtern und Prüfungen</title>
  38. <para>
  39. Wie von Benutzern erwähnt, arbeiteten die Prüfungen von
  40. <classname>Zend_File_Transfer</classname> nicht in Verbindung mit
  41. <classname>Zend_Config</classname> zusammen, durch den Fakt das Sie keine benannten
  42. Arrays verwendet haben.
  43. </para>
  44. <para>
  45. Deswegen wurden alle Filter und Prüfungen für
  46. <classname>Zend_File_Transfer</classname> überarbeitet. Wärend die alten Signaturen
  47. weiterhin funktionieren, wurden sie als veraltet markiert, und werfen eine
  48. <acronym>PHP</acronym> Notiz mit der Aufforderung das zu beheben.
  49. </para>
  50. <para>
  51. Die folgende Liste zeigt die Änderungen und was für die richtige Verwendung der
  52. Parameter getan werden muß.
  53. </para>
  54. <sect4 id="migration.17.zend.file.transfer.validators.rename">
  55. <title>Filter: Rename</title>
  56. <itemizedlist>
  57. <listitem><para>
  58. Alte <acronym>API</acronym> der Methode:
  59. <classname>Zend_Filter_File_Rename($oldfile, $newfile,
  60. $overwrite)</classname>
  61. </para></listitem>
  62. <listitem><para>
  63. Neue <acronym>API</acronym> der Methode:
  64. <methodname>Zend_Filter_File_Rename($options)</methodname> wobei $options
  65. die folgenden Schlüssel für das Array akzeptiert:
  66. <emphasis>source</emphasis> identisch mit $oldfile,
  67. <emphasis>target</emphasis> identisch mit $newfile,
  68. <emphasis>overwrite</emphasis> identisch mit $overwrite
  69. </para></listitem>
  70. </itemizedlist>
  71. <example id="migration.17.zend.file.transfer.validators.rename.example">
  72. <title>Änderungen für den Rename Filter von 1.6 zu 1.7</title>
  73. <programlisting language="php"><![CDATA[
  74. // Beispiel für 1.6
  75. $upload = new Zend_File_Transfer_Adapter_Http();
  76. $upload->addFilter('Rename',
  77. array('/path/to/oldfile', '/path/to/newfile', true));
  78. // Gleiches Beispiel für 1.7
  79. $upload = new Zend_File_Transfer_Adapter_Http();
  80. $upload->addFilter('Rename',
  81. array('source' => '/path/to/oldfile',
  82. 'target' => '/path/to/newfile',
  83. 'overwrite' => true));
  84. ]]></programlisting>
  85. </example>
  86. </sect4>
  87. <sect4 id="migration.17.zend.file.transfer.validators.count">
  88. <title>Prüfung: Count</title>
  89. <itemizedlist>
  90. <listitem><para>
  91. Alte <acronym>API</acronym> der Methode:
  92. <methodname>Zend_Validate_File_Count($min,
  93. $max)</methodname>
  94. </para></listitem>
  95. <listitem><para>
  96. Neue <acronym>API</acronym> der Methode:
  97. <methodname>Zend_Validate_File_Count($options)</methodname> wobei $options
  98. die folgenden Schlüssel für das Array akzeptiert:
  99. <emphasis>min</emphasis> identisch mit $min,
  100. <emphasis>max</emphasis> identisch mit $max,
  101. </para></listitem>
  102. </itemizedlist>
  103. <example id="migration.17.zend.file.transfer.validators.count.example">
  104. <title>Änderungen für die Count Prüfung von 1.6 zu 1.7</title>
  105. <programlisting language="php"><![CDATA[
  106. // Beispiel für 1.6
  107. $upload = new Zend_File_Transfer_Adapter_Http();
  108. $upload->addValidator('Count',
  109. array(2, 3));
  110. // Gleiches Beispiel für 1.7
  111. $upload = new Zend_File_Transfer_Adapter_Http();
  112. $upload->addValidator('Count',
  113. false,
  114. array('min' => 2,
  115. 'max' => 3));
  116. ]]></programlisting>
  117. </example>
  118. </sect4>
  119. <sect4 id="migration.17.zend.file.transfer.validators.extension">
  120. <title>Prüfung: Extension</title>
  121. <itemizedlist>
  122. <listitem><para>
  123. Alte <acronym>API</acronym> der Methode:
  124. <classname>Zend_Validate_File_Extension($extension, $case)</classname>
  125. </para></listitem>
  126. <listitem><para>
  127. Neue <acronym>API</acronym> der Methode:
  128. <methodname>Zend_Validate_File_Extension($options)</methodname> wobei
  129. $options die folgenden Schlüssel für das Array akzeptiert:
  130. <emphasis>*</emphasis> identisch mit $extension und kann jeden anderen
  131. Schlüssel haben <emphasis>case</emphasis> identisch mit $case,
  132. </para></listitem>
  133. </itemizedlist>
  134. <example id="migration.17.zend.file.transfer.validators.extension.example">
  135. <title>Änderungen für die Extension Prüfung von 1.6 zu 1.7</title>
  136. <programlisting language="php"><![CDATA[
  137. // Beispiel für 1.6
  138. $upload = new Zend_File_Transfer_Adapter_Http();
  139. $upload->addValidator('Extension',
  140. array('jpg,gif,bmp', true));
  141. // Gleiches Beispiel für 1.7
  142. $upload = new Zend_File_Transfer_Adapter_Http();
  143. $upload->addValidator('Extension',
  144. false,
  145. array('extension1' => 'jpg,gif,bmp',
  146. 'case' => true));
  147. ]]></programlisting>
  148. </example>
  149. </sect4>
  150. <sect4 id="migration.17.zend.file.transfer.validators.filessize">
  151. <title>Prüfung: FilesSize</title>
  152. <itemizedlist>
  153. <listitem><para>
  154. Alte <acronym>API</acronym> der Methode:
  155. <classname>Zend_Validate_File_FilesSize($min, $max, $bytestring)</classname>
  156. </para></listitem>
  157. <listitem><para>
  158. Neue <acronym>API</acronym> der Methode:
  159. <methodname>Zend_Validate_File_FilesSize($options)</methodname> wobei
  160. $options die folgenden Schlüssel für das Array akzeptiert:
  161. <emphasis>min</emphasis> identisch mit $min,
  162. <emphasis>max</emphasis> identisch mit $max,
  163. <emphasis>bytestring</emphasis> identisch mit $bytestring
  164. </para></listitem>
  165. </itemizedlist>
  166. <para>
  167. Zustätzlich wurde die Signatur der <methodname>useByteString()</methodname>
  168. Methode geändert. Sie kann nur verwendet werden um zu testen ob die Prüfung
  169. ByteStrings in den erzeugten Meldungen verwendet oder ncht. Um den Wert dieses
  170. Flags zu setzen muß die <methodname>setUseByteString()</methodname> Methode
  171. verwendet werden.
  172. </para>
  173. <example id="migration.17.zend.file.transfer.validators.filessize.example">
  174. <title>Änderungen für die FilesSize Prüfung von 1.6 zu 1.7</title>
  175. <programlisting language="php"><![CDATA[
  176. // Beispiel für 1.6
  177. $upload = new Zend_File_Transfer_Adapter_Http();
  178. $upload->addValidator('FilesSize',
  179. array(100, 10000, true));
  180. // Gleiches Beispiel für 1.7
  181. $upload = new Zend_File_Transfer_Adapter_Http();
  182. $upload->addValidator('FilesSize',
  183. false,
  184. array('min' => 100,
  185. 'max' => 10000,
  186. 'bytestring' => true));
  187. // Beispiel für 1.6
  188. $upload->useByteString(true); // Flag setzen
  189. // Gleiches Beispiel für 1.7
  190. $upload->setUseByteSting(true); // Flag setzen
  191. ]]></programlisting>
  192. </example>
  193. </sect4>
  194. <sect4 id="migration.17.zend.file.transfer.validators.hash">
  195. <title>Prüfung: Hash</title>
  196. <itemizedlist>
  197. <listitem><para>
  198. Alte <acronym>API</acronym> der Methode:
  199. <classname>Zend_Validate_File_Hash($hash, $algorithm)</classname>
  200. </para></listitem>
  201. <listitem><para>
  202. Neue <acronym>API</acronym> der Methode:
  203. <methodname>Zend_Validate_File_Hash($options)</methodname> wobei $options
  204. die folgenden Schlüssel für das Array akzeptiert:
  205. <emphasis>*</emphasis> identisch mit $hash und kann jeden anderen Schlüssel
  206. haben <emphasis>algorithm</emphasis> identisch mit $algorithm,
  207. </para></listitem>
  208. </itemizedlist>
  209. <example id="migration.17.zend.file.transfer.validators.hash.example">
  210. <title>Änderungen für die Hash Prüfung von 1.6 zu 1.7</title>
  211. <programlisting language="php"><![CDATA[
  212. // Beispiel für 1.6
  213. $upload = new Zend_File_Transfer_Adapter_Http();
  214. $upload->addValidator('Hash',
  215. array('12345', 'md5'));
  216. // Gleiches Beispiel für 1.7
  217. $upload = new Zend_File_Transfer_Adapter_Http();
  218. $upload->addValidator('Hash',
  219. false,
  220. array('hash1' => '12345',
  221. 'algorithm' => 'md5'));
  222. ]]></programlisting>
  223. </example>
  224. </sect4>
  225. <sect4 id="migration.17.zend.file.transfer.validators.imagesize">
  226. <title>Prüfung: ImageSize</title>
  227. <itemizedlist>
  228. <listitem><para>
  229. Alte <acronym>API</acronym> der Methode:
  230. <classname>Zend_Validate_File_ImageSize($minwidth, $minheight, $maxwidth,
  231. $maxheight)</classname>
  232. </para></listitem>
  233. <listitem><para>
  234. Neue <acronym>API</acronym> der Methode:
  235. <methodname>Zend_Validate_File_FilesSize($options)</methodname> wobei
  236. $options die folgenden Schlüssel für das Array akzeptiert:
  237. <emphasis>minwidth</emphasis> identisch mit $minwidth,
  238. <emphasis>maxwidth</emphasis> identisch mit $maxwidth,
  239. <emphasis>minheight</emphasis> identisch mit $minheight,
  240. <emphasis>maxheight</emphasis> identisch mit $maxheight,
  241. </para></listitem>
  242. </itemizedlist>
  243. <example id="migration.17.zend.file.transfer.validators.imagesize.example">
  244. <title>Änderungen für die ImageSize Prüfung von 1.6 zu 1.7</title>
  245. <programlisting language="php"><![CDATA[
  246. // Beispiel für 1.6
  247. $upload = new Zend_File_Transfer_Adapter_Http();
  248. $upload->addValidator('ImageSize',
  249. array(10, 10, 100, 100));
  250. // Gleiches Beispiel für 1.7
  251. $upload = new Zend_File_Transfer_Adapter_Http();
  252. $upload->addValidator('ImageSize',
  253. false,
  254. array('minwidth' => 10,
  255. 'minheight' => 10,
  256. 'maxwidth' => 100,
  257. 'maxheight' => 100));
  258. ]]></programlisting>
  259. </example>
  260. </sect4>
  261. <sect4 id="migration.17.zend.file.transfer.validators.size">
  262. <title>Prüfung: Size</title>
  263. <itemizedlist>
  264. <listitem><para>
  265. Alte <acronym>API</acronym> der Methode:
  266. <classname>Zend_Validate_File_Size($min, $max, $bytestring)</classname>
  267. </para></listitem>
  268. <listitem><para>
  269. Neue <acronym>API</acronym> der Methode:
  270. <methodname>Zend_Validate_File_Size($options)</methodname> wobei $options
  271. die folgenden Schlüssel für das Array akzeptiert:
  272. <emphasis>min</emphasis> identisch mit $min,
  273. <emphasis>max</emphasis> identisch mit $max,
  274. <emphasis>bytestring</emphasis> identisch mit $bytestring
  275. </para></listitem>
  276. </itemizedlist>
  277. <example id="migration.17.zend.file.transfer.validators.size.example">
  278. <title>Änderungen für die Size Prüfung von 1.6 zu 1.7</title>
  279. <programlisting language="php"><![CDATA[
  280. // Beispiel für 1.6
  281. $upload = new Zend_File_Transfer_Adapter_Http();
  282. $upload->addValidator('Size',
  283. array(100, 10000, true));
  284. // Gleiches Beispiel für 1.7
  285. $upload = new Zend_File_Transfer_Adapter_Http();
  286. $upload->addValidator('Size',
  287. false,
  288. array('min' => 100,
  289. 'max' => 10000,
  290. 'bytestring' => true));
  291. ]]></programlisting>
  292. </example>
  293. </sect4>
  294. </sect3>
  295. </sect2>
  296. <sect2 id="migration.17.zend.locale">
  297. <title>Zend_Locale</title>
  298. <sect3 id="migration.17.zend.locale.islocale">
  299. <title>Änderungen bei der Verwendung von isLocale()</title>
  300. <para>
  301. Bezugnehmend auf den Codingstandard mußte isLocale() so geändert werden das es ein
  302. Boolean zurückgibt. In vorhergehenden Releases wurde im Erfolgsfall ein String
  303. zurückgegeben. Für das Release 1.7 wurde ein Kompatibilitätsmodus hinzugefügt der es
  304. erlaubt das alte Verhalten, das ein String zurückgegeben wird, zu verwenden, aber
  305. das triggert auch eine User Warning die darauf hinweist das man auf das neue
  306. Verhalten wechseln sollte. Das Rerouting welches das alte Verhalten von isLocale()
  307. durchgeführt hätte ist nicht länger notwendig, da alle I18N Komponenten jetzt das
  308. Rerouting selbst durchführen.
  309. </para>
  310. <para>
  311. Um die Skripte auf die neue <acronym>API</acronym> zu migrieren muß die Methode
  312. einfach wie anbei gezeigt verwendet werden.
  313. </para>
  314. <example id="migration.17.zend.locale.example">
  315. <title>Wie man isLocale() von 1.6 nach 1.7 ändern muß</title>
  316. <programlisting language="php"><![CDATA[
  317. // Beispiel für 1.6
  318. if ($locale = Zend_Locale::isLocale($locale)) {
  319. // mach was
  320. }
  321. // Selbes Beispiel für 1.7
  322. // Man sollte den Kompatibilitätsmodus ändern um User Warnings zu verhindern
  323. // Aber man kann das in der Bootstrap tun
  324. Zend_Locale::$compatibilityMode = false;
  325. if (Zend_Locale::isLocale($locale)) {
  326. }
  327. ]]></programlisting>
  328. <para>
  329. Es ist zu beachten das man den zweiten Parameter verwendet kann um zu sehen ob
  330. das Gebietsschema richtig ist ohne das ein Rerouting durchgeführt wird.
  331. </para>
  332. <programlisting language="php"><![CDATA[
  333. // Beispiel für 1.6
  334. if ($locale = Zend_Locale::isLocale($locale, false)) {
  335. // mach was
  336. }
  337. // Selbes Beispiel für 1.7
  338. // Man sollte den Kompatibilitätsmodus ändern um User Warnings zu verhindern
  339. // Aber man kann das in der Bootstrap tun
  340. Zend_Locale::$compatibilityMode = false;
  341. if (Zend_Locale::isLocale($locale, false)) {
  342. if (Zend_Locale::isLocale($locale, true)) {
  343. // gar kein Gebietsschema
  344. }
  345. // Original String ist kein Gebietsschema, kann aber Reroutet werden
  346. }
  347. ]]></programlisting>
  348. </example>
  349. </sect3>
  350. <sect3 id="migration.17.zend.locale.getdefault">
  351. <title>Änderungen bei der Verwendung von getDefault()</title>
  352. <para>
  353. Die Bedeutung der getDefault() Methode wurde verändert durch den Fakt das
  354. Framework-weite Gebietsschemata integriert wurden welche mit setDefault() gesetzt
  355. werden können. Deswegen gibe es nicht mehr die Kette der Gebietsschemata zurück
  356. sondern nur die gesetzten Framework-weiten Gebietsschemata.
  357. </para>
  358. <para>
  359. Um die eigenen Skripte auf die neue <acronym>API</acronym> zu migrieren, muß einfach
  360. die Methode wie unten gezeigt verwendet werden.
  361. </para>
  362. <example id="migration.17.zend.locale.getdefault.example">
  363. <title>Wie man getDefault() von 1.6 auf 1.7 ändert</title>
  364. <programlisting language="php"><![CDATA[
  365. // Beispiel für 1.6
  366. $locales = $locale->getDefault(Zend_Locale::BROWSER);
  367. // Selbes Beispiel für 1.7
  368. // Man sollte den Compatibility Mode setzen um User Notices zu verhindern
  369. // Das kann in der Bootstrap Datei getan werden
  370. Zend_Locale::$compatibilityMode = false;
  371. $locale = Zend_Locale::getOrder(Zend_Locale::BROWSER);
  372. ]]></programlisting>
  373. <para>
  374. Es ist zu beachten das der zweite Parameter der alten getDefault()
  375. Implementation nicht mehr vorhanden ist, aber die zurückgegebenen Werte die
  376. gleichen sind.
  377. </para>
  378. </example>
  379. <note>
  380. <para>
  381. Standardmäßig ist das alte Verhalten noch immer aktiv, wirft aber eine User
  382. Notice. Wenn man den eigenen Code zum neuen Verhalten geändert hat sollte man
  383. auch den Compatibility Mode auf false setzen damit keine Notices mehr geworfen
  384. werden.
  385. </para>
  386. </note>
  387. </sect3>
  388. </sect2>
  389. <sect2 id="migration.17.zend.translate">
  390. <title>Zend_Translate</title>
  391. <sect3 id="migration.17.zend.translate.languages">
  392. <title>Setzen von Sprachen</title>
  393. <para>
  394. Wenn man die automatische Erkennung von Sprachen verwendet, oder Sprachen manuell
  395. auf <classname>Zend_Translate</classname> setzt kann es sein das man von Zeit zu
  396. Zeit eine Notiz geworfen bekommen die über nicht hinzugefügte oder leere
  397. Übersetzungen schreibt. In einigen vorhergehenden Releases wurde in einigen Fällen
  398. auch eine Exception geworfen.
  399. </para>
  400. <para>
  401. Der Grund ist, das wenn ein Benutzer eine nicht existierende Sprache anfragt, man
  402. einfach keinen Weg hat um festzustellen was falsch ist. Deswegen haben wir diese
  403. Notizen hinzugefügt die einem in den eigenen Logs zeigen das der Benutzer eine
  404. Sprache angefragt hat die man nicht unterstützt. Es ist zu beachten das der Code,
  405. selbst wenn eine Notiz getriggert wird, weiterhin ohne Probleme arbeitet.
  406. </para>
  407. <para>
  408. Aber wenn man einen eigenen Fehler oder Exception Handler, wie XDebug, verwendet
  409. wird man alle Notizen zurückerhalten, selbst wenn man das nicht gewollt hat. Das ist
  410. der Fall, weil diese Handler alle Einstellungen von <acronym>PHP</acronym> selbst
  411. überschreiben.
  412. </para>
  413. <para>
  414. Um diese Notizen wegzubekommen kann man einfach die neue Option 'disableNotices' auf
  415. true setzen. Der Standardwert ist false.
  416. </para>
  417. <example id="migration.17.zend.translate.example">
  418. <title>Setzen von Sprachen ohne das man Notizen erhält</title>
  419. <para>
  420. Nehmen wir an das wir 'en' vorhanden haben und unser Benutzer 'fr' anfragt was
  421. nicht in unserem Portfolio der übersetzten Sprachen ist.
  422. </para>
  423. <programlisting language="php"><![CDATA[
  424. $language = new Zend_Translate('gettext',
  425. '/path/to/translations',
  426. 'auto');
  427. ]]></programlisting>
  428. <para>
  429. In diesem Fall werden wir eine Notiz darüber erhalten das die Sprache 'fr' nicht
  430. vorhanden ist. Durch das einfache Hinzufügen der Option wird die Notiz
  431. abgeschaltet.
  432. </para>
  433. <programlisting language="php"><![CDATA[
  434. $language = new Zend_Translate('gettext',
  435. '/path/to/translations',
  436. 'auto',
  437. array('disableNotices' => true));
  438. ]]></programlisting>
  439. </example>
  440. </sect3>
  441. </sect2>
  442. <sect2 id="migration.17.zend.view">
  443. <title>Zend_View</title>
  444. <note>
  445. <para>
  446. Die Änderung der API in <classname>Zend_View</classname> sind nur dann zu beachten
  447. wenn man zum Release 1.7.5 oder höher hochrüstet.
  448. </para>
  449. </note>
  450. <para>
  451. Vor dem 1.7.5 Release wurde das Zend Framework Team darauf aufmerksam gemacht das eine
  452. potentielle Local File Inclusion (LFI) Schwäche in der
  453. <methodname>Zend_View::render()</methodname> Methode existiert. Vor 1.7.5, erlaubte die
  454. Methode standardmäßig, die Fähigkeit View Skripte zu spezifizieren die Schreibweisen für
  455. Eltern-Verzeichnisse enthalten (z.B. "../" oder "..\"). Das öffnet die Möglichkeit für
  456. eine LFI Attacke wenn ungefilterte Benutzereingaben an die
  457. <methodname>render()</methodname> Methode übergeben werden:
  458. </para>
  459. <programlisting language="php"><![CDATA[
  460. // Wobei $_GET['foobar'] = '../../../../etc/passwd'
  461. echo $view->render($_GET['foobar']); // LFI Einbruch
  462. ]]></programlisting>
  463. <para>
  464. <classname>Zend_View</classname> wirft jetzt standardmäßig eine Ausnahme wenn so ein
  465. View Skript angefragt wird.
  466. </para>
  467. <sect3 id="zend.view.migration.zf5748.disabling">
  468. <title>Ausschalten des LFI Schutzes für die render() Methode</title>
  469. <para>
  470. Da viele Entwickler gemeldet haben das Sie so eine Schreibweise in Ihren
  471. Anwendungen verwenden die <emphasis>nicht</emphasis> das Ergebnis einer
  472. Benutzereingabe sind, wurde ein spezielles Flag erstellt um das Deaktivieren des
  473. standardmäßigen Schutzes zu erlauben. Es gibt 2 Methoden um das Durchzuführen:
  474. Indem der 'lfiProtectionOn' Schlüssel in den Konstruktor-Optionen übergeben wird,
  475. oder durch den expliziten Aufruf der <methodname>setLfiProtection()</methodname>
  476. Methode.
  477. </para>
  478. <programlisting language="php"><![CDATA[
  479. // Ausschalten über den Konstruktor
  480. $view = new Zend_View(array('lfiProtectionOn' => false));
  481. // Ausschalten über expliziten Aufruf der Methode:
  482. $view = new Zend_View();
  483. $view->setLfiProtection(false);
  484. ]]></programlisting>
  485. </sect3>
  486. </sect2>
  487. </sect1>
  488. <!--
  489. vim:se ts=4 sw=4 et:
  490. -->