- Statistiques
- Stats Relax
- Stats Poker/Aracde
http://www.spicefactory.org/parsley/doc ... .php#intro
Configuration et initialisation du Cadre Persil comporte habituellement les étapes suivantes:
• Étape 1: Raconter l'Container CIO qui classes, il doit gérer. Cela peut être fait avec MXML, les fichiers XML ou dans ActionScript. Les trois mécanismes seront décrits dans les sections suivantes.
• Étape 2: Configurer les services d'un container comme Dependency Injection ou de messagerie pour chaque classe. Cela peut être fait avec le mécanisme que vous aviez choisi pour l'étape 1 (par exemple avec MXML ou des balises de configuration XML) ou - dans la plupart des cas - idéalement avec AS3 tags métadonnées au sein des classes elles-mêmes.
• Étape 3: Initialisation de la COI Container (généralement sur application de démarrage). Le persil 2, ceci est fait en une ligne dans la plupart des cas. Voir les sections ci-dessous pour des exemples.
3.1 Configuration avec AS3 Metadata
AS3 Metadata Tags peuvent être utilisés pour configurer des services tels que la dépendance par injection ou Messagerie. Elles peuvent être placées sur n'importe quelle classe qui est géré par Persil. Caractéristiques configuré par des balises de métadonnées peuvent être combinées à une configuration en XML ou en MXML. Presque toutes les balises de métadonnées a une MXML correspondants et balise XML de configuration.
Les balises de métadonnées individuels et leurs attributs ainsi que des exemples sont décrits dans les sections correspondantes:
• 4 Dependency Injection •4 Dependency Injection http://www.spicefactory.org/parsley/doc ... .php#intro
• 5 Messaging •5 Messaging http://www.spicefactory.org/parsley/doc ... .php#intro
• 6.1 usines l'utilisant •6.1 Using Factories http://www.spicefactory.org/parsley/doc ... #factories
• 6.2 Asynchronous objet d'initialisation •6.2 Asynchronous Object Initialization
• 6.3 Object Lifecycle Méthodes •6.3 Object Lifecycle Methods http://www.spicefactory.org/parsley/doc ... hp#methods
• 6.4 Méthodes d'observation du cycle de vie•6.4 Lifecycle Observer Methodshttp://www.spicefactory.org/parsley/docs/2.2/m ... p#observer
Compilation des métadonnées personnalisées dans des FSv
Malheureusement, le compilateur mxmlc a un comportement assez incohérent quand il s'agit de décider si des métadonnées personnalisées seront inclus dans le fichier SWF ou non. Si vous utilisez le persil et Spicelib SWCS pour compiler l'application principale, vous (ou votre outil) sera probablement spécifier la bibliothèque avec l'option-l de sorte que la bibliothèque sera compilé dans votre SWF. Dans ce cas, toutes les balises de métadonnées utilisées par Parsley et Spicelib sera inclus automatiquement. Donc, pour l'application principale SWF il n'ya rien que vous avez à faire, sauf si vous avez créé balises de configuration personnalisés que vous souhaitez utiliser en tant que métadonnée AS3.
Pour la compilation de modules ou d'autres fonds souverains où vous (ou vous de l'outil) choisir d'utiliser l'option-El de préciser le CFC Persil elle est différente cependant. Les classes cadre ne sera pas compilé dans votre SWF ensuite (ce qui est destiné le comportement) et, malheureusement, les balises de métadonnées sera pas non plus. Et c'est plutôt un comportement erratique, puisque, pour votre intention d'utiliser le cadre et donc ses balises de configuration de métadonnées ne devrait pas faire la différence si vous compilez les classes de cadres dans le SWF ou non. Donc, lorsque vous utilisez l'option-el, vous devez spécifier explicitement le persil et Spicelib balises de métadonnées. Ceux qui sont assez nombreux (extrait de la Fourmi Persil versions):
Code : Tout sélectionner
<keep-as3-metadata name="Metadata" />
<keep-as3-metadata name="DefaultProperty" />
<keep-as3-metadata name="Required" />
<keep-as3-metadata name="Event" />
<keep-as3-metadata name="AssignableTo" />
<keep-as3-metadata name="Inject" />
<keep-as3-metadata name="InjectConstructor" />
<keep-as3-metadata name="Factory" />
<keep-as3-metadata name="Init" />
<keep-as3-metadata name="Destroy" />
<keep-as3-metadata name="Observe" />
<keep-as3-metadata name="AsyncInit" />
<keep-as3-metadata name="ManagedEvents" />
<keep-as3-metadata name="MessageDispatcher" />
<keep-as3-metadata name="MessageHandler" />
<keep-as3-metadata name="MessageBinding" />
<keep-as3-metadata name="MessageInterceptor" />
<keep-as3-metadata name="MessageError" />
<keep-as3-metadata name="Command" />
<keep-as3-metadata name="CommandResult" />
<keep-as3-metadata name="CommandError" />
<keep-as3-metadata name="CommandStatus" />
<keep-as3-metadata name="ResourceBinding" />
<keep-as3-metadata name="Selector" />
<keep-as3-metadata name="Target" />
<keep-as3-metadata name="Internal" />
<keep-as3-metadata name="ObjectDefinition" />
Dans le cas où les balises de métadonnées ne se sont pas compilés dans votre SWF Les symptômes sont généralement que plusieurs opérations échouent en silence. Pour les injections exemple ne sera pas exécuté alors si vous en avez spécifié avec l'[Injecter] tag. Quand les choses échouent en silence c'est en général une indication claire que certains ou l'ensemble des balises de métadonnées sont manquants dans le fichier SWF. Parce que si il y avait un autre type de problème, comme un type d'injection où le cadre ne trouve pas de contrepartie pour un objet dans le conteneur, Persil aura toujours une erreur. Elle ne manquera pas en silence sauf si vous précisez la dépendance comme facultatifs.
Cette section a été ajoutée à ce chapitre que par quelques utilisateurs déjà rencontré ce problème.
3.2 Configuration MXML
C'est le seul mécanisme de configuration que Persil (évidemment) ne peuvent être utilisés dans des applications Flex. Tout le reste est disponible pour les applications Flex et Flash.
Supposons que vous souhaitez configurer les deux classes suivantes:
Code : Tout sélectionner
package com.bookstore.service {
class LoginServiceImpl implements LoginService {
public var timeout:int;
public function login (username:String, password:String) : void {
// execute service
}
}
}
Code : Tout sélectionner
package com.bookstore.actions {
class LoginAction {
[Inject]
public var service:LoginService
[MessageHandler]
public function handleLoginEvent (event:LoginEvent) : void {
service.login(event.username, event.password);
}
}
}
La configuration du fichier MXML
Nous avons maintenant à indiquer au conteneur de gérer ces classes et créer le fichier suivant MXML:
Code : Tout sélectionner
<mx:Object
xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:services="com.bookstore.services.*"
xmlns:actions="com.bookstore.actions.*">
<services:LoginServiceImpl timeout="3000"/>
<actions:LoginAction/>
</mx:Object>
Cadre d'initialisation
Finalement, vous avez pour initialiser le conteneur. En supposant que vous avez enregistré la configuration dans BookstoreConfig.mxml, vous pouvez l'initialiser avec:
Code : Tout sélectionner
<parsley:ContextBuilder config="{BookStoreConfig}"/>
En théorie, vous pouvez aussi interagir directement avec le contexte Persil:
Code : Tout sélectionner
var context:Context = FlexContextBuilder.build(BookStoreConfig, this);
var initializer:BookStoreInitializer
= context.getObjectByType(BookStoreInitializer) as BookStoreInitializer;
initializer.execute();
Dans le code de l'application normale, il n'ya généralement pas besoin d'utiliser l'API Persil directement. L'API est principalement pour étendre le cadre ou pour la création de cadres personnalisés autour de persil.
Utilisation de persil
MXML Tags Il existe une variante du mode de configuration MXML indiqué ci-dessus où vous utilisez des balises Persil, au lieu des balises objet normal:
Code : Tout sélectionner
<mx:Object
xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns="http://www.spicefactory.org/parsley">
<mx:Script>
<![CDATA[
import com.bookstore.services.*;
import com.bookstore.actions.*;
]]>
</mx:Script>
<Object type="{LoginServiceImpl}">
<Property name="timeout" value="3000"/>
</Object>
<Object type="{LoginAction}"/>
</mx:Object>
Avantages de balises normales MXML:
• Simple et facile à utiliser.
• Pas de connaissance des balises de configuration nécessaires Persil.
• compilateur vérifie pour les types de la valeur des propriétés.
Avantages des tags MXML Persil:
• Permet Constructor Injection. Certains considèrent cela comme le plus propre de toute injection de dépendance en termes d'encapsulation comme vous pouvez créer des catégories immuables de cette façon. Vous ne pouvez pas utiliser l'injection, constructeur avec des balises normal puisque dans ce cas, le compilateur génère le code MXML la création d'objets et persil s'empare seule de l'objet après qu'il a été instancié pour effectuer une configuration supplémentaire. Lorsque l'aide de balises normales vos classes sont tenus d'avoir un constructeur sans argument.
• Permet de définir un objet à la paresse ( <Object lazy="true" type="..."/> ) Ce qui signifie qu'il ne sera pas initialisée et configurée avant la première fois que vous l'utilisez.
• Permet de configurer un objet comme une non-singleton ( <Object singleton="false" type="..."/> ). Cela signifie que chaque fois que cet objet sera récupéré à partir du conteneur ou injectée dans un autre objet, le conteneur va créer une nouvelle instance.
• Permet d'utiliser des balises personnalisées. Persil 2 est facile à étendre. Vous pouvez créer des extensions personnalisées avec une classe unique qui peut ensuite être utilisés comme des métadonnées personnalisées, MXML ou XML. Pour des exemples voir 11 Extension du cadre.
http://www.spicefactory.org/parsley/doc ... .php#intro
suite ...