Les objets sont géniaux, tout le monde le dit. Outre leur merveilleuse flexibilité, ils sont incroyablement rapides. Vous pouvez rechercher dans des millions d’enregistrements en une fraction de seconde seulement. 4D v16 permet même d’ordonner les objets par leurs attributs et d’effectuer des calculs tels que la somme ou la moyenne.
Avec 4D v16 R4, le langage 4D a été radicalement amélioré pour rendre l’utilisation des objets beaucoup plus confortable – avec le support de la notation objet. Rapide, flexible, efficace et maintenant élégant !
Quelles sont les possibilités ?
Les objets du langage 4D peuvent être manipulés en utilisant la notation objet standard pour obtenir ou définir leurs valeurs. Avec la notation objet :
- les propriétés des objets sont accessibles à l’aide du symbole « point » (par exemple, employee.name)
- les éléments de la collection d’objets sont accessibles à l’aide de crochets (par exemple, rooms[2])
- les sous-objets intégrés et les propriétés des sous-objets sont accessibles par une séquence de symboles (par exemple, employee.children[2].age).
Bonne nouvelle, maintenant vous avez un moyen de vous débarrasser de tous ces OB Get et OB SET dans votre code ! Et vous savez quoi ? L’exécution du code est 10 fois plus rapide avec la notation objet par rapport à OB Get/OB SET !
Exemples de notation d’objet
Disons que nous avons un objet $o contenant les informations suivantes :
{ "Lastname": "Doe", "Firstname": "John", "Avatar": "[object Picture]" "Child": [{ "Name": "Susan", "Age": 3 } , { "Name": "Bob", "Age": 8 }] }
Pour récupérer l’attribut « Firstname« , il faut écrire :
Avec la notation d’objet
C_TEXT($name)
$name :=$o.Firstname
Sans notation d’objet
C_TEXT($name)
$name :=OB Get($o; "Firstname")
Pour récupérer l’attribut « Name » du deuxième enfant, on écrit
Avec notation d’objet
C_TEXT($name)
$name :=$o.Child[1].Name
Sans notation d’objet
ARRAY OBJECT($aChild;0 )
C_TEXT ($name)
OB GET ARRAY ($o; "Enfant" ;$aChild)
$name :=OB GET($aChild{2} ; "Nom")
Pour ajouter un autre enfant, on écrit :
Avec la notation objet
$o.Child[2].Name:="Mike"
$o .Child[2].Age:=9
Sans notation d’objet
ARRAY OBJECT($aChild;0 )
C_OBJECT ($kid)
OB GET ARRAY ($o; "Child" ;$aChild)
OB SET ($kid; "Name" ; "Mike")
OB SET ($kid; "Age";9)
APPEND TO ARRAY ($aChild;$kid)
OB SET ARRAY ($o; "Child" ;$aChild)
En savoir plus sur les collections >
Pour ajouter une image dans un attribut d’objet, on écrit :
Avec la notation objet
C_PICTURE($img)
READ PICTURE FILE("img.jpg" ;$img )
$o .Avatar:=$img
Sans la notation d’objet
C_PICTURE($img )
READ PICTURE FILE ("img.jpg" ;$img )
OB SET ($o; "avatar" ;$img)
En savoir plus sur les images dans les objets >
Pour utiliser la notation par pointeur, on écrit :
Avec la notation d’objet
C_POINTER($p)
$p :=->$o
...
C_TEXT ($name)
$name :=$p->Prénom
Sans notation d’objet
C_POINTER($p)
$p :=->$o
...
C_TEXT ($name)
$name :=OB Get($p-> ; "Firstname")
Comment activer la notation objet ?
Pour pouvoir bénéficier de la notation d’objet, vous devez vous rendre sur la page « Compatibility Settings » dans la boîte de dialogue « Database Settings » et cliquer sur le bouton « Activate object notation » :
Il y a quelques conditions préalables avant d’activer la notation d’objet, mais nous vous aidons à vous préparer :