Jump to content

objectmodel : questions sur definition


Recommended Posts

Bonjour,

 

Qui pourrait expliquer l'utilisation du tableau $definition et en particulier de l'entrée "association".

 

On peut deviner certains éléments en lisant les classes, mais si quelqu'un de la team nous en faisait le descriptif, ce serait vraiment très appréciable.

 

Pourquoi a t-on l'entrée multilang_shop, puisque l'on a déjà multilang et multishop ?

 

J"ai les mêmes questions à propos de $webserviceParameters.

 

merci.

Edited by chantane (see edit history)
Link to comment
Share on other sites

Bonjour,

 

$definition obtient le retour de ObjectModel::getDefinition($class).

 

Cette méthode et sa variable associée permette donc de "définir" l'objet en indiquant le nom de cet objet et en indiquant les champs composant l'objet (ainsi que les champs d'association pour le multi langue !).

 

La variable $definition n'est visible que dans une classe. Il s'agit d'un Array ayant trois champs: table, primary et fields. Respectivement le nom de la table associée, la clé primaire et les champs qui compose la table.

 

Lorsque la classe comporte du multi langues, on lui donne également deux paramètres supplémentaires: multilang et multilang_shop. Respectivement le fait que la table contient du texte traduisible en plusieurs langues et que les traductions sont gérées en fonction du shop (évidemment, pour un "only shop", c'est inutile).

 

Est-ce que cela t'aide, en soit ?

Link to comment
Share on other sites

Il s'agit de la clé association du tableau $definition,

 

Je crée de nouveaux controllers et de nouvelles classes d'objet et pour cela je décortique l'existant car il n'y a pas de documentation, hélas! J'espère qu'elle sera fournie prochainement.

Link to comment
Share on other sites

Le truc, c'est que l'association est "native" et "automatique", non ?!

 

Elle est gérée automatiquement lorsque tu mentionnes que la classe est multilangue, et l'entrée "associations" est gérée automatiquement en mentionnant les données correspondantes (ce qui permet après à la requête d'insérer la table _lang correspondante, par exemple).

 

En bref, tu ne l'utilises jamais directement...

Link to comment
Share on other sites

Bonjour,

comme je suis la personne qui a créé cette partie ($definition) je me permet de répondre pour donner quelques éclaircissements.

 

Cette propriété a pour but de stocker la définition de l'entité vis à vis de la base de donnée pour l'Active Record, donc les différents champs, avec le type afin de bien les caster. Cette propriété est là afin de remplacer les anciennes propriétés $fieldsRequired, $fieldsValidate, $fieldsSize, $fieldsRequiredLang, $fieldsValidateLang, $fieldsSizeLang, $table et $identifier. Ces anciennes propriétés étaient en effet très mal conçues et très peu pratiques à utiliser (n'étant pas statiques, il fallait instancier un objet juste pour savoir le nom de la table par exemple !).

 

Le but de cette propriété $definition est de permettre plus facilement de connaître la définition de la table, et de pouvoir mettre en place un ORM (ce qui a été commencé via la classe Collection). La partie "association" du tableau ne sert actuellement à rien (elle devait servir à gérer les relations entre entités, ce qui aurait été un grand bon technique), je n'ai pas eu le temps de l'implémenter puisque je ne travaille plus chez PrestaShop. Etant donné que la direction technique est un peu réfractaire à orienter le logiciel vers de l'objet plutôt que du procédural, je suppose que cette propriété restera dans l'état actuel un très long moment.

 

La propriété $webserviceParameters aurait du être fusionnée avec $definition mais je n'ai pas eu le temps de le faire, c'était un des buts. Je ne me souviens plus précisément à quoi sert multilang_shop, propriété un peu confuse je suis d'accord. Peut être qu'un jour ce sera expliqué dans une documentation technique, espérons :D

 

Cordialement

  • Like 3
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...