Actions
Amélioration #4096
ferméAjout propriété CLASS - Dépréciation de METHOD
Début:
18/06/2013
Echéance:
% réalisé:
100%
Temps estimé:
21:00 h
Version source:
Solution proposée:
Principaux fichiers impactés:
Wiki Détail:
Contrôle:
Ajout TAUFU de contrôle
Description
CLASS
Indique le nom de la classe métier utilisée par la famille.
Ce nom de classe doit être unique parmi l'ensemble des classes PHP utilisées sur le serveur. Il est recommandé d'utiliser un namespace afin d'éviter un conflit de nom.
Si la famille définie n'a pas de parent alors la classe métier doit étendre la classe Dcp\Family\Document. Cette classe est une classe héritant de la classe Doc.
Exemple :
BEGIN Ma première famille MY_FIRST
CLASS My\MyFirstFamily
END
namespace My;
class MyFirstFamily extends \Dcp\Family\Document {
public function myFirstProcedure($x) {
return $x+1;
}
}
Si la classe est utilisée avec une famille héritant d'une autre famille, cette classe doit hériter de la classe générée de la famille parente.
Exemple :
BEGIN IMAGE Photographie MY_PHOTO
CLASS My\MyPhotoFamily
ATTR MYPHO_FR_INFO Informations N N frame 100
ATTR MYPHO_EXIF MYPHO_FR_INFO Exif N N longtext 110
END
namespace My;
class MyPhotoFamily extends \Dcp\Family\Image {
public function postStore() {
$err=parent::postStore();
if (! $err) {
if (! $this->getRawValue(\Dcp\Attribute\Image::img_file)) {
$err=_("my::image needed");
}
if (! $this->getRawValue(\Dcp\Attribute\My\My_Photo::mypho_exif)) {
$err=_("my::no exif detected");
}
}
return $err;
}
}
La classe peut étendre des classes intermédiaires, utiliser des interfaces ou des classes abstraites. La seule contrainte est que la classe générée de la famille parente doit faire partie de la hiérarchie de la classe métier. La classe générée de la famille hérite de cette classe. Elle apporte en plus la définition des attributs définis dans la famille ainsi que le code généré pour les attributs calculés. Le nom de cette classe est \Dcp\Family\<nom de la famille>.
Hiérarchie de classe lorsque la famille MY_PHOTO est intégrée :
namespace \Dcp\CoreFamily {
// classe métier de la famille IMAGE
class Images extends \Dcp\Family\Document {}
}
namespace \Dcp\Family {
// classe générée de la famille IMAGE
class Images extends \Dcp\CoreFamily\Image {}
}
namespace \My {
// classe métier de la famille MY_PHOTO
class MyPhotoFamily extends \Dcp\Family\Image {}
}
namespace \Dcp\Family {
// classe générée de la famille MY_PHOTO
class My_photo extends \My\MyPhotoFamily {}
}
Les attributs des classes sont disponibles sous forme de constantes. Une classe d'attributs est générée lors de l'enregistrement de la famille. Cette classe est nommée avec le nom de la famille dans le namespace \Dcp\Attribute. L'usage des constantes permet de s'assurer de la validité des noms d'attributs. La classe d'attribut donne l'accès aux noms d'attribut de la famille et aussi à ceux de ces parents.
Lors de l'importation de la famille les contraintes suivantes sont vérifiées :
Le fichier PHP de la classe doit être accessible par l'autoloader. Les fichiers de classes sont généralement publiés dans le sous-répertoire de l'application livrée par le module.
Le nom du fichier ne doit pas commencer par Method.
L'extension du fichier doit être PHP.
La classe doit hériter de la classe finale de la famille parente. En cas de famille sans héritage, la classe doit hériter de la classe \Dcp\Family\Document.
La classe ne doit pas être abstraite
L'encodage du fichier doit être utf-8 (incluant l'encodage ascii).
Le fichier PHP doit être syntaxiquement correct.
Le nom de la classe doit être unique parmi l'ensemble des classes PHP utilisées par Dynacase.
La propriété className ne peut pas être utilisée avec la propriété CLASS.
Actions
#2
Mis à jour par Éric Brison il y a presque 13 ans
- Statut changé de Nouveau à Intégré
- % réalisé changé de 90 à 100
Appliqué par commit commit:df0af147356613429bb02afd5c220c2c9c133573.
Actions