Bonjour,

Mon site fonction à 98%.
Mais je viens de constater un truc qui m'a plus que fait sauter sur ma chaise.

J'ai du faire une erreur sans que je me rende compte et c est que maintenant que je la vois, et pourtoant tout marche.

Dans le premier modele que j'ai créé, je l'ai fait ainsi

class User extends AppModel {}

Mais voilà, j'ai vu que pour certain j'ai fait comme ceci

class Group extends Model {}

Pourtant ca l'air de bien fonctionner.

Mais es-ce que

class Group extends Model {

est faux?
Quel est la différence entre Model et AppModel?????

Merci pour vos lumières

4 réponses


AppModel étends de Model sans rien ajouter il me semble.

En tout cas, c'est ce que j'ai en local sur mon projet.
A vérifier

Tout dépend si tu as renseigné des méthodes que tu te sers dans tout tes modèles dans ton appmodel.

Quand tu fais un "class Group extends Model {}"
Ton modèle pourra utiliser toutes les fonctions class methodes qu'il y a dans ton lib lib\Cake\Model\Model.php

Quand tu fais un "class User extends AppModel {}"
Ton modèle pourra utilisé les fonctions/methodes before save etc.. qu'il y a dans ton appmodel et aussi les propriétés/méthodes qu'il y a dans lib\Cake\Model\Model.php car l'appmodel est : "class AppModel extends Model "

Donc tout dépend de ce que tu mets dans ton appmodel.php ^^

Oui ca fonctionne car tu utilises directement la classe Model sans passer par AppModel qui etend deja de Model.

L'avantage si je puis dire c est qu'en faisant un extends AppModel tu pourras ajouter des befores ou autres... dans le AppModel, et les utiliser sur l'ensemble de ton application.

Hors si tu fais ca dans Model, qui est dans le coeur de CakePHP tu risques de te retrouver avec des problèmes. surtout si tu fais une MAJ de CakePHP.

Donc je penses qu'il est fortement conseillé de faire un extends AppModel. Car n'oublie pas que AppModel extends de Model

@coloo : "Donc tout dépend de ce que tu mets dans ton appmodel.php ^^" <= en soit tu as raison, mais mieux vaut utiliser directement extends AppModel meme si il utilise aucune méthode dedans. non ?

Je réponds à la question mais la bonne pratique est effectivement extend appmodel.