| 4D v18Storage | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|  | 
    4D v18
 Storage 
         | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Storage -> Résultat | ||||||||
| Paramètre | Type | Description | ||||||
| Résultat | Objet |   | Catalogue des objets et collections partagé(e)s enregistré(e)s dans Storage | |||||
La commande Storage retourne le catalogue des objets partagés et des collections partagées qui ont été enregistré(e)s dans l'objet Storage sur la machine ou le composant courant(e).
Le catalogue retourné par Storage est créé automatiquement par 4D et est disponible pour tous les process de la base, y compris les process préemptifs. Il existe un seul catalogue Storage par machine et par composant : dans une application client/serveur, il y a un seul objet partagé Storage sur le serveur, et un objet partagé Storage sur chaque application 4D distante ; si la base utilise des composants, il y a également un objet Storage par composant.
Utilisez le catalogue Storage pour référencer les objets ou collections partagé(e)s que vous souhaitez utiliser depuis tout process préemptif ou standard. Pour enregistrer un objet partagé ou une collection partagée dans Storage, il suffit d'ajouter sa référence à l'objet partagé retourné par Storage.
Comme le catalogue retourné par Storage est un objet partagé, il suit les règles décrites dans la section Objets partagés et collections partagées, avec toutefois les spécificités suivantes :
Il est pratique d'initialiser le contenu de l'objet Storage dans la :
 Use(Storage)
    Storage.counters:=New shared object("customers";0;"invoices";0)
 End useCet exemple montre la manière standard de définir les valeurs de Storage :
 Use(Storage)
    Storage.mydata:=New shared object
    Use(Storage.mydata)
       Storage.mydata.prop1:="Smith"
       Storage.mydata.prop2:=100
    End use
 End useStorage permet d'implémenter un singleton en lazy initialization, comme proposé dans l'exemple ci-dessous.
Note : Pour plus d'informations sur les singletons, vous pouvez consulter cette page Wikipedia.
 C_LONGINT($0)
 C_LONGINT($counterValue)
 C_OBJECT(counter) //créer une référence de counter pour le process
 
 If(counter=Null) //si la référence est null, on la récupère depuis Storage
    Use(Storage) //L'utilisation de Storage n'est nécessaire qu'une seule fois !
       If(Storage.counter=Null)
          Storage.counter:=New shared object("operation";0)
       End if
       counter:=Storage.counter //Obtenir la référence de l'objet partagé counter
    End use
 End if
 Use(counter) //on utilise directement l'objet partagé counter (pas besoin de Storage)
    counter.operation:=counter.operation+1
    $counterValue:=counter.operation
 End use
 
 $0:=$counterValue
	Produit :  4D
	Thème :  Objets (Langage)
	Numéro :  
        1525
        
        
        
	
	Créé :  4D v16 R6
	
	
	
	
	
	
	
	
	
	4D - Langage ( 4D v18)
	
	
	
	
	
 Ajouter un commentaire
Ajouter un commentaire