CakePHP 2.5 est une mise à jour complète à partir de l’API de 2.4. Cette page souligne les changements et améliorations faits dans 2.5.
Un nouvel adaptateur a été ajouté pour Memcached
. Ce nouvel adaptateur
utilise ext/memcached au lieu de ext/memcache. Il permet d’améliorer la
performance et les connexions persistentes partagées.
L’adaptateur Memcache
est maintenant déprécié en faveur de Memcached
.
Cache::remember()
a été ajoutée.
Cache::config()
accepte maintenant la clé database
lors de
l’utilisation avec RedisEngine
afin d’utiliser un certain nombre
de base de données pas par défaut.
Les sous-commandes create
et update
ont maintenant une option yes
.
L’option yes
vous permet de passer les différentes questions interactives
forçant ainsi une réponse à yes.
CompletionShell a été ajoutée. Il a pour objectif d’aider à la création de librairies autocompletion pour les variables d’environnement de shell comme bash, ou zsh. Aucun script shell n’est inclu dans CakePHP, mais les outils sous-jacents sont maintenant disponibles.
loggedIn()
est maintenant dépréciée et sera retirée dans 3.0.
Lors de l’utilisation de ajaxLogin
, AuthComponent va retourner un code de
statut 403
au lieu de 200
quand l’utilisateur n’est pas authentifié.
RequestHandlerComponent::renderAs()
ne définit plus
Controller::$ext
. Cela posait des problèmes lors de l’utilisation d’une
extension autre que celle par défaut pour les vues.
Les échecs de vérification de noeud ACL sont maintenant directement mis dans
les logs. L’appel de trigger_error()
a été retiré.
Le scaffold dynamique est maintenant déprécié et sera retiré dans 3.0.
App::pluginPath()
a été dépréciée. CakePlugin::path()
doit être
utilisé à la place.
CakePlugin::loadAll()
fusionne maintenant les options par défaut
et celles spécifiques au plugin comme on peut s’y attendre intuitivement.
Regardez les cas de test pour plus de détails.
Les Events liés au gestionnaire global sont maintenant déclenchés dans l’ordre de priorité des events liés au gestionnaire local. Ceci peut entraîner le déclenchement des listeners dans un ordre différent par rapport aux versions précédentes. Au lieu d’avoir des listeners globaux attrapés, et ensuite instancier les listeners étant déclenchés plus tard, les deux ensembles de listeners sont combinés en une liste de listeners basé sur leurs priorités et ensuite déclenchés en un ensemble. Les listeners globaux d’une prioriété donnée sont toujours déclenchés avant l’instanciation des listeners.
La classe I18n
a de nombreuses nouvelles constantes. Ces
constantes vous permettent de remplacer les hardcoded integers avec des
valeurs lisibles par exemple : I18n::LC_MESSAGES
.
Les nombres unsigned sont maintenant supportés par les sources de données
qui les fournissent (MySQL). Vous pouvez définir l’option unsigned
à true
dans vos fichiers schema/fixture pour commencer à utiliser cette
fonctionnalité.
Les Jointures inclues dans les requêtes sont maintenant ajoutées après que les jointures des associations sont ajoutées. Cela facilite la jointure des tables qui dépendent d’associations générées.
Les adresses Email dans CakeEmail ne sont pas validées avec filter_var
par défaut. Cela assouplit les règles d’addresse email en autorisant les
addresses d’email interne comme root@localhost
par exemple.
Vous pouvez maintenant spécifier la clé layout
dans la config d’email
sans avoir à spécifier la clé template
.
CakeRequest::addDetector()
supporte maintenant options
qui
accepte un tableau des options valides lors de la création de paramètre
basé sur les detecteurs.
CakeRequest::onlyAllow()
a été dépréciée. En remplacement, une nouvelle
méthode nommée CakeRequest::allowMethod()
a été ajoutée avec
une fonctionnalité identique. Le nouveau nom de la méthode est plus intuitif
et transmet mieux ce que la méthode fait.
Sessions ne seront pas démarrées si elles sont connues pour être vides. Si le cookie de session ne peut être trouvé, une session ne sera pas démarrée à moins qu’une opération d’écriture ne soit faite.
Router::mapResources()
accepte la clé connectOptions
dans
l’argument $options
. Regardez Routing REST Personnalisé pour plus de
détails.
Debugger::dump()
et Debugger::log()
supportent un paramètre
$depth
. Ce nouveau paramètre facilite la sortie de structures d’objet
imbriquée plus profonde.
Hash::insert()
et Hash::remove()
supportent maintenant
les expressions de matcher dans les selecteurs de chemin.
File::replaceText()
a été ajoutée. Cette méthode vous permet
de facilement remplacer le texte en un fichier en utilisant str_replace
.
Folder::addPathElement()
accepte maintenant un tableau pour le
paramètre $element
.
Security::encrypt()
et Security::decrypt()
ont été
ajoutées. Ces méthodes montrent une API très simple pour accéder au
chiffrement symétrique AES-256.
Ils doivent être utilisés en faveur des méthodes cipher()
et
rijndael()
.
Le troisième paramètre pour Validation::inList()
et
Validation::multiple()
a été modifié de $strict en
$caseInsensitive. $strict a été retiré puisqu’il ne fonctionnait pas
correctement et pouvait être facilement contourné. Vous pouvez maintenant
définir ce paramètre à true pour des comparaisons non sensibles à la casse.
Par défaut, c’est à false et cela ca comparer la valeur et lister la casse
sensible comme avant.
Le paramètre $mimeTypes
de Validation::mimeType()
peut aussi
être une chaîne regex. Aussi maintenant quand $mimeTypes
est un tableau
ses valeurs sont en minuscule.
CakeLog ne s’auto-configure plus tout seul. Au final, tous les fichiers de log ne seront plus auto-créés si aucun flux n’est écouté. Assurez-vous que vous avez au moins un moteur par défaut configuré si vous voulez écouter tous les types et les niveaux.
ExceptionRenderer remplit maintenant les tempplates d’erreur avec les variables « code », « message » et « url ». « name » a été déprécié mais est toujours disponible. Cela uniformise les variables à travers tous les templates d’erreur.
Les fichiers de fixture peuvent maintenant être placés dans des
sous-répertoires. Vous pouvez utiliser les fixtures dans les sous-répertoires
en incluant le nom du répertoire après le .
. Par exemple,
app.my_dir/article va charger App/Test/Fixture/my_dir/ArticleFixture
.
On notera que le répertoire de fixture ne sera pas inflecté ou modifié dans
tous les cas.
Les Fixtures peuvent maintenant définir $canUseMemory
à false pour
désactiver le moteur de stockage de la mémoire utilisée dans MySQL.
$title_for_layout
est déprécié. Utilisez $this->fetch('title');
et
$this->assign('title', 'your-page-title');
à la place.
View::get()
accepte maintenant un deuxième argument pour fournir
une valeur par défaut.
FormHelper va maintenant générer les inputs de fichier pour les types de champ
binary
.
FormHelper::end()
a eu un deuxième paramètre ajouté. Ce paramètre
vous laisse passer les propriétés supplémentaires aux champs utilisés pour
sécuriser les formulaires avec SecurityComponent.
FormHelper::end()
et FormHelper::secure()
vous
permettent de passer des options supplémentaires qui sont changées en
attributs sur les inputs cachés générés. C’est utile quand vous voulez
utiliser l’attribut HTML5 form
.
FormHelper::postLink()
vous permet maintenant de faire un tampon
de la balise de formulaire généré au lieu de la retourner avec le lien. Ceci
permet d’éviter les balises de formulaire imbriquées.
PaginatorHelper::sort()
a maintenant une option lock
pour
créer le tri des liens de pagination avec seulement la direction par défaut.
Le Scaffold Dynamique est mainteanant déprécié et sera retiré dans 3.0.