Annotation de classe @business
-
Déclare une classe d’objets métier.
/** * @business [boolean] */ class A_Class
Les classes métier servent à représenter des objets stockés en base de données relationnelle. Toute classe représentant un objet stocké en base devrait donc être déclarée
@business
.Valeur par défaut
Sans annotation déclarée dans la classe ou une classe de parente ou de composition, la valeur par défaut est
false
.Paramètre
-
true
rend la classe et ses descendants métier (valeur par défaut).
-false
permet de forcer la classe non-métier, dans le cas d’une classe descendant d’une classe métier dont on ne veut pas qu’elle soit considérée comme métier.Effets
Expérience utilisateur
- Pour la génération automatique de vues dans le cas d’une propriété de classe abstraite, toutes les classes filles
@business
de la classe abstraite donnent lieu à création d’une requête SQL union pour la vue.
- L’affichage au format texte d’un objet dans les formulaires et sous-formulaires ne voit s’adjoindre un lien vers la vue de l’objet que s’il est de classe@business
.
- Dans la sélection inverse de propriétés, la remontée ne se fait que vers des propriétés de classes@business
.Structure de la base de données
- La maintenance automatique de la base de données n’est réalisée que sur les classes métier
@business
de plus haut niveau. Pour une classe fille qui ne doit pas agir sur la structure de données (par exemple surcharge d’une classe pour une vue, il faudra déclarer@business false
.Effets internes au framework
- Le test unitaire Select_Test::testEverything – visant à vérifier la validité de toutes les variantes de requêtes SQL select partant d’une classe – ne s’exécute que sur les classes
@business
.
- Seules les classes@business
sont retenues comme contexte de traduction.
- La valeur par défaut de l’annotation@store_name
ne peut s’enregistrer en Dependency que pour les classes@business
.Voir aussi
- Lorsque vous programmez une classe métier, veillez également à :
— déclarer les propriétés contenant les valeurs représentatives avec @representative
— déclarer une méthode pour représenter textuellement les objets de cette classe avec __toString() : l’ommission de l’implémentation de cette méthode pourrait provoquer des erreurs lorsque des fonctionnalités standard sont utilisées avec votre classe métier.