3.4.4 La classe App
Le chargement de classes additionnelles est devenu plus simple dans CakePHP. Dans les versions précédentes, il y avait plusieurs fonctions pour charger une classe nécessaire, basées sur les type de classe que vous souhaitiez charger. Ces fonctions sont devenues obsolètes, toute classe ou librairie devrait maintenant pouvoir être chargée normalement avec App::import(). App::import() s'assure qu'une classe n'est chargée qu'une fois, que la classe parente appropriée a été chargée et résout automatiquement les chemins dans la plupart des cas.
3.4.4.1 Utiliser App::import()
App::import($type, $name, $parent, $search, $file, $return)
A première vue, App::import semble complexe, pourtant, dans la plupart des cas d'utilisation, seuls 2 arguments sont requis.
3.4.4.2 Importing Core Libs
Les librairies du cœur de Cake, comme Sanitize et Xml peuvent être chargées via :
<?php App::import('Core', 'Sanitize') ?> <?php App::import('Core', 'Sanitize') ?>
Ceci rendra la classe Sanitize disponible.
3.4.4.3 Importer des Contrôleurs, des Modèles, des "Components", des "Behaviors" et des "Helpers"
Toute classe relative à l'application devrait aussi être chargée avec App::import(). Les exemples suivants illustrent comment s'y prendre.
3.4.4.3.1 Charger des Contrôleurs
App::import('Controller', 'MonController');
3.4.4.3.2 Charger des Modèles
App::import('Model', 'MonModel');
3.4.4.3.3 Charger des "Components"
App::import('Component', 'Auth');
3.4.4.3.4 Charger des "Behaviors"
App::import('Behavior', 'Tree');
3.4.4.3.5 Charger des "Helpers"
App::import('Helper', 'Html');
3.4.4.4 Charger depuis les Plugins
Charger des classes de plugins fonctionne à peu près de la même manière que le chargement des classes du cœur ou de l'application, excepté que vous devez préciser le plugin depuis lequel vous chargez.
App::import('Model', 'MonPlugin.Pomme'); App::import('Model', 'MonPlugin.Pomme');
3.4.4.5 Charger les fichiers Vendor
La fonction vendor() a été dépréciée. Les fichiers Vendor devraient maintenant être chargés via App::import(). La syntaxe et les arguments additionnels sont légèrement différents, car les structures du fichier vendor peuvent différer grandement et tous les fichiers vendor ne contiennent pas de classes.
Les exemples suivants illustrent comment charger les fichiers vendor depuis divers structures de chemins. Ces fichiers vendor pourraient être localisés dans n'importe quels dossiers de vendor.
3.4.4.5.1 Exemples Vendor
Pour charger vendors/geshi.php
App::import('Vendor', 'geshi'); App::import('Vendor', 'geshi');
Pour charger vendors/flickr/flickr.php
App::import('Vendor', 'flickr/flickr'); App::import('Vendor', 'flickr/flickr');
Pour charger vendors/un.nom.php
App::import('Vendor', 'UnNom', array('file' => 'un.nom.php')); App::import('Vendor', 'UnNom', array('file' => 'un.nom.php'));
Pour charger vendors/services/bien.dit.php
App::import('Vendor', 'BienDit', array('file' => 'services'.DS.'bien.dit.php')); App::import('Vendor', 'BienDit', array('file' => 'services'.DS.'bien.dit.php'));
