PageRenderTime 45ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 1ms

/fr/appendices/new-features-in-cakephp-2-0.rst

https://github.com/steinkel/docs
ReStructuredText | 325 lines | 242 code | 83 blank | 0 comment | 0 complexity | cdf5b7e109ca0f6f8df8ae5276b64a3d MD5 | raw file
  1. Nouvelles caractéristiques dans CakePHP 2.0
  2. ###########################################
  3. Model
  4. =====
  5. Le processus de construction du modèle a été allegé. Les associations des
  6. Modèles sont maintenant en lazy loaded, les applications avec beaucoup de
  7. modèles et d'associations vont voir une grande réduction de temps dans le
  8. processus de bootstrap.
  9. Les modèles ne requièrent maintenant plus de connexion à la base de données
  10. dans le processus de construction. La base de données ne sera accédée pour la
  11. première fois seulement quand une opération de recherche est délivrée ou
  12. une information pour une des colonnes est requise.
  13. View
  14. ====
  15. View::$output
  16. -------------
  17. View n'aura pas toujours le dernier rendu de contenu (view ou layout)
  18. accessible avec ``$this->output``. Dans les helpers, vous pouvez utiliser
  19. ``$this->_View->output``. Modifier cette propriété changera le contenu
  20. qui sort de la vue rendue.
  21. Helpers
  22. =======
  23. HtmlHelper
  24. ----------
  25. * ``getCrumbList()`` Créé un fil d'ariane de liens entourés d'éléments ``<li>``.
  26. * ``loadConfig()`` a été déplacé de :php:class:`Helper` vers la classe
  27. :php:class:`HtmlHelper`. Cette méthode utilise maintenant les nouvelles
  28. classes de lecture (voir 2.0 :php:class:`Configure`)
  29. pour charger votre fichier de config. En option vous pouvez passer le chemin
  30. en deuxième paramètre (``app/Config`` par défaut). Pour simplifier, vous
  31. pouvez définir le fichier de configuration (et le lecteur) dans
  32. ``Controller::$helpers`` (exemple ci-dessous) pour charger le constructeur
  33. du helper. Dans le fichier de configuration, vous pouvez définir les clés
  34. ci-dessous:
  35. * ``tags`` Doit être un tableau avec une valeur clé;
  36. * ``minimizedAttributes`` Doit être une liste;
  37. * ``docTypes`` Doit être un tableau avec une valeur clé;
  38. * ``attributeFormat`` Doit être une chaîne de caractère;
  39. * ``minimizedAttributeFormat`` Doit être une chaîne de caractère.
  40. Exemple sur la façon de définir le fichier de configuration sur les contrôleurs::
  41. public $helpers = array(
  42. 'Html' => array(
  43. 'configFile' => array('config_file', 'php') // Option une: un tableau avec le nom du fichier et le nom de lecture
  44. 'configFile' => 'config_file' // Option deux: une chaîne de caractère avec le nom du fichier. Le PhpReader sera utilisé
  45. )
  46. );
  47. FormHelper
  48. ----------
  49. * :php:class:`FormHelper` supporte maintenant tout type d'entrée HTML5 et
  50. tout type d'entrée personnalisé. Utilisez simplement le type d'entrée
  51. que vous souhaitez en méthode sur le helper. Par exemple ``range()``
  52. créera une entrée avec type = range.
  53. * ``postLink()`` et ``postButton()`` Crée un lien/bouton permettant d'accéder
  54. à certaine pasge utilisant la méthode HTTP POST. Avec ceci dans votre
  55. controller vous pouvez empêcher certaines actions, comme delete, d'être
  56. accédées par la méthode GET.
  57. * ``select()`` avec multiple = checkbox, traite maintenant l'attribut ``'id'``
  58. en préfixe pour toutes les options générées.
  59. Libs
  60. ====
  61. CakeRequest
  62. -----------
  63. :php:class:`CakeRequest` est une nouvelle classe introduite dans 2.0. Elle
  64. encapsule les méthodes d'introspection de requêtes utilisées couramment et
  65. remplace le tableau params avec un objet plus utile. Lisez en plus sur
  66. :php:class:`CakeRequest`.
  67. CakeResponse
  68. ------------
  69. :php:class:`CakeResponse` est une nouvelle classe introduite dans 2.0. Elle
  70. encapsule les méthodes et propriétés utilisées couramment dans la réponse HTTP
  71. que votre application génère. Elle consolide plusieurs caractéristiques dans
  72. CakePHP. Lisez en plus sur :php:class:`CakeResponse`.
  73. CakeSession, SessionComponent
  74. -----------------------------
  75. :php:class:`CakeSession` et le :php:class:`SessionComponent` ont connu un
  76. nombre de changements, regardez la section session pour plus d'informations.
  77. Router
  78. ------
  79. Routes peuvent retourner des URLs complètes
  80. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  81. Les Objets Route peuvent maintenant retourner des URLs complètes, et
  82. :php:class:`Router` ne les modifiera plus au-delà de l'ajout de la
  83. chaîne de requête et des éléments de fragments. Par exemple, ceci
  84. pouvait être utilisé pour créer des routes pour la gestion de
  85. sous-domaines, ou pour l'activation de flags https/http. Un exemple
  86. de classe de route qui supporte les sous-domaines serait::
  87. class SubdomainRoute extends CakeRoute {
  88. public function match ($params) {
  89. $subdomain = isset($params['subdomain']) ? $params['subdomain'] : null;
  90. unset($params['subdomain']);
  91. $path = parent::match($params);
  92. if ($subdomain) {
  93. $path = 'http://' . $subdomain . '.localhost' . $path;
  94. }
  95. return $path;
  96. }
  97. }
  98. Quand vous créez des liens, vous pouvez faire ce qui suit pour faire pointer
  99. les liens vers d'autres sous-domaines.
  100. ::
  101. echo $this->Html->link(
  102. 'Autre domaine',
  103. array('subdomain' => 'test', 'controller' => 'posts', 'action' => 'add')
  104. );
  105. Ce qui est ci-dessus créera un lien avec l'url http://test.localhost/posts/add.
  106. Xml
  107. ---
  108. :php:class:`Xml` a connu un certain nombre de changements. Lisez en plus sur la
  109. classe :doc:`/core-utility-libraries/xml`.
  110. Nouvelles caractéristiques de Lib
  111. =================================
  112. Configure readers
  113. -----------------
  114. :php:class:`Configure` peut maintenant être configuré pour le chargement de
  115. fichiers à partir d'une variété de sources et de formats. La section
  116. :doc:`/development/configuration` contient plus d'informations sur les
  117. changements faits à configure.
  118. :php:meth:`Configure::read()` sans autre argument vous permet de lire
  119. toutes les valeurs de configure, plutôt que uniquement la valeur du debug.
  120. Error et gestion des exceptions
  121. -------------------------------
  122. CakePHP 2.0 a reconstruit la gestion des :doc:`/development/exceptions`
  123. et des :doc:`/development/errors`, pour être plus flexible et donner
  124. plus de puissance aux développeurs.
  125. String::wrap()
  126. --------------
  127. :php:meth:`String::wrap()` a été ajouté pour faciliter les formatages de
  128. largeur fixe des textes. Il est utilisé dans les Shells quand vous utilisez
  129. :php:meth:`Shell::wrapText()`.
  130. debug()
  131. -------
  132. :php:func:`debug()` ne sort plus de HTML dans la console. A la place, elle
  133. donne des sorties comme ce qui suit::
  134. ########## DEBUG ##########
  135. Array
  136. (
  137. [0] => test
  138. )
  139. ###########################
  140. Ceci devrait améliorer la lecture de ``debug()`` dans les lignes de commande.
  141. Components
  142. ==========
  143. Components reçoit un traitement identique aux helpers et aux behaviors,
  144. :php:class:`Component` est maintenant la classe de base pour les components.
  145. Lisez en plus sur les changements sur les components.
  146. RequestHandler
  147. --------------
  148. :php:class:`RequestHandler` a été fortement remaniée du fait de l'introduction
  149. de :php:class:`CakeRequest`. Ces changements permettent à certaines nouvelles
  150. fonctionnalités d'être aussi introduites.
  151. Parsing automatique d'Acceptation des headers
  152. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  153. Si un client envoie un unique mime type Accept qui correspond à l'une des
  154. extensions activées dans :php:class`Router`, :php:class:`RequestHandler`
  155. le traitera de la même façon qu'une extension. Cela étendra le support de
  156. CakePHP pour les terminaux de type REST. Pour utiliser cette fonctionnalité,
  157. commencez par activer les extensions dans ``app/Config/routes.php``
  158. ::
  159. Router::parseExtensions('json', 'xml');
  160. Une fois que vous avez créé les layouts et les vues pour vos extensions, vous
  161. pourrez visiter une url comme posts/view/1 et envoyer Accept:
  162. ``application/json`` dans les headers pour recevoir la version JSON de cette
  163. URL.
  164. CookieComponent
  165. ---------------
  166. :php:class:`CookieComponent` supporte maintenant seulement les cookies HTTP.
  167. Vous pouvez les activer en utilisant ``$this->Cookie->httpOnly = true;``.
  168. Avoir seulement les cookies HTTP les rendra inaccessible à partir du navigateur.
  169. Security Component CSRF separation
  170. ----------------------------------
  171. CakePHP a une protection CSRF depuis 1.2. Pour 2.0, le CSRF existant a un
  172. nouveau mode plus paranoïaque, et est sa caractéristique propre autonome.
  173. Dans le passé, les fonctionnalités CSRF étaient couplées avec des gardes-fous
  174. de tampering de formulaires. Les développeurs désactivent souvent
  175. validatePost pour faire des formulaires dynamiques, en désactivant la
  176. protection CSRF en même temps. Pour 2.0, la vérification CSRF a été séparée
  177. du tampering des formulaires vous donnant plus de contrôle.
  178. Pour plus d'informations, regardez :ref:`security-csrf`
  179. Controller
  180. ==========
  181. Les Controllers ont maintenant accès aux objets request et response. Vous
  182. pouvez en lire plus sur ces objets sur leurs pages spécifiques.
  183. Console
  184. =======
  185. La console pour CakePHP 2.0 a été preque entièrement reconstruite. De
  186. nombreuses nouvelles caractéristiques ainsi que quelques changements
  187. incompatibles avec antérieurement. Lisez en plus sur les changements sur
  188. la console.
  189. Pagination
  190. ==========
  191. Pagination fournit maintenant un maxLimit par défaut à 100 pour la pagination.
  192. Cette limite peut maintenant être dépassée avec la variable paginate dans
  193. le Controller.
  194. ::
  195. $this->paginate = array('maxLimit' => 1000);
  196. Cette valeur par défaut est fournie pour empêcher l'utilisateur de manipuler
  197. les URL provoquant une pression excessive sur la base de données pour les
  198. requêtes suivantes, un utilisateur modifierait le paramètre 'limit' pour
  199. une nombre très important.
  200. Mettre un Alias
  201. ===============
  202. Vous pouvez maintenant mettre un alias les helpers, les components et les
  203. behaviors pour utiliser votre classe plutôt qu'une autre. Cela signifie que
  204. vous pouvez très facilement faire un helper ``MyHtml`` et n'avez pas besoin
  205. de remplacer chaque instance de ``$this->Html`` dans vos vues. Pour le faire,
  206. passez la clé 'className' tout au long de votre classe, comme vous feriez avec
  207. les modèles.
  208. ::
  209. public $helpers = array(
  210. 'Html' => array(
  211. 'className' => 'MyHtml'
  212. )
  213. );
  214. De même, vous pouvez mettre en alias les components pour l'utilisation dans vos controllers.
  215. ::
  216. public $components = array(
  217. 'Email' => array(
  218. 'className' => 'QueueEmailer'
  219. )
  220. );
  221. Appeller le component Email appelle le component QueueEmailer à la place.
  222. Finalement, vous pouvez aussi mettre en alias les behaviors.
  223. ::
  224. public $actsAs = array(
  225. 'Containable' => array(
  226. 'className' => 'SuperContainable'
  227. )
  228. );
  229. Du fait de la façon dont 2.0 utilise les collections et les partage dans
  230. toute l'application, toute classe que vous mettez en alias sera utilisée
  231. dans toute votre application. Quelque soit le moment votre application
  232. essaie d'accéder à l'alias, elle aura accès à votre classe. Par exemple,
  233. quand vous mettez en alias le helper Html dans l'exemple ci-dessus, tous
  234. les helpers qui utilisent le helper Html ou les éléments qui chargent le
  235. helper Html, utiliseront MyHtml à la place.
  236. ConnectionManager
  237. =================
  238. Une nouvelle méthode :php:meth:`ConnectionManager::drop()` a été ajoutée pour permettre
  239. de retirer les connexions lors de l'éxecution.
  240. .. meta::
  241. :title lang=fr: Nouvelles caractéristiques dans CakePHP 2.0
  242. :keywords lang=fr: réductions de temps,doctypes,construction de modèles,valeur clé,option une,connexion base de données,vue du contenu,fichier de configuration,constructeur,temps bon,tableau,nouvelles caractéristiques,processus bootstrap,éléments,nouveaux modèles