Tutoriel Flex 3 et AMFPHP (partie 2)

17 September 2008 par Dimitri Ho

Cet article est la suite du tutoriel précédent (Tutorial Flex 3 et AMFPHP), qui expliquait comment configurer AMFPHP (partie serveur) et le projet sous Flex Builder (partie cliente). Je reprendrai néanmoins cette première partie avec une variante "quick-and-dirty". Nous verrons ensuite comment appeler des méthodes avec arguments et mapper automatiquement les classes entre le code ActionScript et PHP.

Prérequis

Création d'un service AMFPHP

Pour installer AMFPHP, décompressez l'archive et copiez le dossier amfphp dans le DocumentRoot du serveur Apache (i.e. on doit pouvoir accéder à cette adresse http://localhost/amfphp/gateway.php).

Dans amfphp/services, créez un dossier trombimti. Ajoutez le script TrombiService.php dans ce nouveau dossier.

amfphp/services/trombimti/TrombiService.php

< ?php
class TrombiService
{
  public function hello()
  {
    return "Salut !";
  }
}

Il s'agit du service qu'utilisera notre application Flex pour récupérer les données du serveur. Par défaut, on peut invoquer n'importe quelle méthode appartenant à la classe TrombiService. Vous pouvez d'ores et déjà tester notre service grâce à l'application Flex livrée avec AMFPHP. Ca se passe ici :

http://localhost/amfphp/browser/

Création du projet

Dans Flex Builder, créez un projet Flex.

Nous allons commencer par créer un RemoteObject dans le fichier src/main.mxml, qui permettra à l'application de se connecter au service AMFPHP.

src/main.mxml

< ?xml version="1.0" encoding="utf-8"?>
<mx :Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"></mx>
<mx :RemoteObject id="backendService" destination="dummy" source="trombimti.TrombiService"
       endpoint="http://localhost/amfphp/gateway.php">
<mx :method name="hello" result="trace(event.result as String)" />
</mx>
<mx :Button label="Go" click="backendService.getOperation('hello').send();"/>

Quelques explications :

  • source : le nom du service auquel on veut se connecter ;
  • endpoint : l'URL du gateway AMFPHP ;
  • destination : ne sert à rien dans cet exemple. En général, une destination doit être définie dans un fichier de configuration à part, définition qui contient entre autres le endpoint que nous avons mis directement en attribut ici ;
  • La balise mx:method permet quant à elle d'indiquer le nom d'une méthode que l'on peut invoquer à partir du RemoteObject. On peut bien sûr en rajouter d'autres comme nous le verrons un peu plus loin.

Lancez l'application en mode debug, puis cliquez sur le bouton. Si tout se passe bien vous devriez voir "Salut !" dans la console.

Nous avons vu comment créer un service AMFPHP et invoquer une méthode sans argument, retournant une chaine de caractères. C'est ici que s'arrêtait le tutoriel de l'article précédent.

Méthodes avec arguments

Créons maintenant une nouvelle méthode côté serveur qui prend une chaîne de caractère en argument et renvoie vrai si la chaîne vaut "p3L1c@n".

amfphp/services/trombimti/TrombiService.php

< ?php
class TrombiService
{
  public function hello()
  {
     return "Salut !";
  }
  public function guesspassword($pass)
  {
     return strcmp($pass, "p3L1c@n") == 0;
  }
}

Dans src/main.mxml, rajoutez une balise mx:method.

< ?xml version="1.0" encoding="utf-8"?>
<mx :Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
</mx>
<mx :RemoteObject id="backendService" destination="dummy"
  source="trombimti.TrombiService"
  endpoint="http://localhost/amfphp/gateway.php">
<mx :method name="hello" result="trace(event.result as String)" />
</mx>
<mx :method name="guesspassword" result="trace(event.result as Boolean)">
</mx>
<mx :arguments>
  <arg1>p3L1c@n</arg1>
</mx>
<mx :Button label="Go" click="backendService.getOperation('hello').send();"/>
<mx :Button label="Go2" click="backendService.getOperation('guesspassword').send();" x="49"/>

Notez que pour la méthode guesspassword, je convertis bien le résultat en booléen.

Le nom des balises à l'intérieur de la balise mx:arguments importe peu. Cependant, si la méthode doit prendre plusieurs arguments en paramètres, il est impératif que ces balises aient des noms différents, et que l'ordre de leurs déclarations soit respecté.

Lancez l'application en mode debug et cliquez sur le bouton "Go2". Vous devriez voir true dans la console.

Mapping de classes

Jusqu'ici, nous n'avons utilisé que des types simples qui sont automatiquement reconnus des deux côtés (boolean et string). En effet, même si le type statique du champ result (event.result) était Object, son type dynamique est bien String ou Boolean (il suffit de voir que le cast as String ne renvoit pas null).

Si on essaie de passer l'instance d'une classe perso de l'AS vers PHP (avec le passage en argument), AMFPHP transforme l'objet en tableau associatif pour PHP. De même, une classe perso en PHP devient un Object en AS. Je vous invite à lire la documentation d'AMFPHP (http://www.amfphp.org/docs/datatypes.html) concernant les types de donnée reconnus automatiquement.

Le mapping des classes permet d'éviter de reconstruire les classes "à la main" à partir des types Object ou tableau associatif.

Commençons par créer un dossier vo/trombimti dans amfphp/services. Faites bien attention à ne pas oublier le dossier vo, c'est en effet dans ce dossier que AMFPHP va chercher les classes PHP pour le mapping AS vers PHP. De nombreux tutoriels font l'erreur de placer ces classes dans le même dossier que le service, ce qui fait que le type de l'objet reste en réalité un tableau associatif.

Ajoutez Person.php dans ce nouveau dossier.

amfphp/services/vo/trombimti/Person.php

< ?php
class Person
{
  var $firstName;
  var $lastName;
  var $_explicitType = "trombimti.Person";
 
  function getFirstName()
  {
     return $this->firstName;
  }
}

Ajoutez également 2 nouvelles méthodes au service :

< ?php
require_once "../vo/trombimti/Person.php"
 
class TrombiService
{
  public function hello()
  {
     return "Salut !";
  }
 
  public function guesspassword($pass)
  {
     return strcmp($pass, "p3L1c@n") == 0;
  }
 
  public function getFirstName($p)
  {
    return $p->getFirstName();
  }
 
  public function getPerson()
  {
     $p = new Person();
     $p->firsname = "Dimitri";
     $p->lastname = "Ho";
     return $p;
  }
}

Lors de l'appel à la méthode getFirstName, la ligne 19 ne doit pas provoquer d'erreur si le mapping a bien fonctionné.

Dans le projet Flex Builder, créez un dossier src/trombimti.

Ajoutez-y une classe ActionScript nommée Person.as.

src/trombimti/Person.as

package trombimti
{
  [RemoteClass(alias="trombimti.Person")]
  [Bindable]
  public class Person
  {
    public var firstName:String;
    public var lastName:String;
  }
}

Le metatag [RemoteClass(alias="trombimti.Person")] indique à AMFPHP où trouver la classe PHP correspondante, de la même manière que l'attribut _explicitType dans la classe PHP. Dans les faits, je me suis rendu compte que pour le mapping PHP vers AS, il faut et il suffit que les deux chaînes soient identiques (remplacer "trombimti.Person" par "foo" par exemple fonctionne).

Modifiez également le fichier main.mxml afin d'invoquer les 2 méthodes :

src/main.mxml

< ?xml version="1.0" encoding="utf-8"?>
<mx :Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" applicationComplete="init()"></mx>
<mx :Script>
< ![CDATA[
  import trombimti.Person;
  [Bindable]
 
  public var person:Person = new Person();
 
  public function init():void
  {
     person.firstName = "Foo";
     person.lastName = "Bar";
  }
]]>
</mx>
<mx :RemoteObject id="backendService" destination="dummy"
  source="trombimti.TrombiService"
  endpoint="http://localhost/amfphp/gateway.php">
<mx :method name="hello" result="trace(event.result as String)" />
</mx>
<mx :method name="guesspassword" result="trace(event.result as Boolean)">
</mx>
<mx :arguments>
   <arg1>p3L1c@n</arg1>
</mx>
<mx :method name="getPerson" result="trace(event.result as Person)" />
<mx :method name="getFirstName" result="trace(event.result as String)">
</mx>
<mx :arguments>
   <arg1>{person}</arg1>
</mx>
<mx :Button label="Go" click="backendService.getOperation('hello').send();"/>
<mx :Button label="Go2" click="backendService.getOperation('guesspassword').send();" x="49"/>
<mx :Button label="getPerson" click="backendService.getOperation('getPerson').send();" x="217"/>
<mx :Button label="getFirstName" click="backendService.getOperation('getFirstName').send();" x="105"/>

Vérifiez que getPerson affiche bien [object Person] dans la console, et que getFirstName renvoit Foo.

Sources et liens

http://www.amfphp.org/docs/

http://viconflex.blogspot.com/2007/04/mapping-vos-from-flex-to-php-using.html

http://www.sephiroth.it/tutorials/flashPHP/flex_remoteobject/index.php

Article sur l'(in)utilité du mapping des classes AS vers PHP :

http://www.5etdemi.com/blog/archives/2007/01/why-you-shouldnt-use-class-mapping-and-vos-in-amfphp/

Tags: , , , ,

7 commentaires pour “Tutoriel Flex 3 et AMFPHP (partie 2)”

  1. switcherdav dit :

    Salut,

    J’utilise depuis peu amfphp et je n’arrive pas à faire passer de PHP->FLEX un objet d’une classe perso avec une propriété également d’une classe perso

    Avec ton exemple, c’est comme si je voulais pour la personne, son service sachant que le service est décrit par une classe Service

    J’aurais :

    class Personne
    {
    public var service:Service

    }

    class Service
    {
    public var lieu:String ;

    }

    Il me dit tout le temps que le service est null malgré le cast

    Sous le browser il m’indique bien un objet complet.

    Des idées ?

    Merci en tous cas pour le tuto

  2. imed dit :

    sa marche bien si j utilise une application et un seul module
    mais a partir de deux modules flex qui utilisent amfphp le deuxieme ne fonctionne pas meme avec un autre channel
    ça me derange beaucoup

  3. jeremy dit :

    bonjour,
    ce tuto ma mi l’eau a la bouche, car il présente une notion que j’ai grandement besoin de connaitre, maleureusement aprés 45minute a essayé de corriger les erreur de syntaxe, je perd patience et j’abandonne… sa ne marche pas :(

  4. ohazar dit :

    J’ai enfin réussi à le faire tourner ! :D

    Alors d’accord avec d’autres posts/remarques - même si c’est super sympa de faire un tuto - un tuto qui ne marche pas est contre-productif, et produit l’effet inverse - a savoir dégouter les moins acharnés ^^ Donc vérifiez votre tuto au moins une fois svp avant de le mettre en ligne ;)

    Ceci étant, pour ceux qui veulent le faire marcher, voila ce qu’il faut corriger (j’espere ne pas oublier d’etapes) :

    - pas d’espace entre entre le chevron ouvrant et le point d’interrogation pour débuter un script php :
    “< ?php” devient “<?php”

    - idem pour les balises xml :
    “< ?xml” devient “<?xml”

    - idem pour les balises flex
    “<mx :method” devient “<mx:method”

    - il faut spécifier le type pour les balises flex fermantes :
    “” devient “”

    - il faut corriger deux ou trois encapsulations :

    p3L1c@n

    devient

    p3L1c@n

    - enfin, l’erreur qui m’a fait perdre une bonne demi-journée. La ligne :
    require_once “../vo/trombimti/Person.php”

    …. va produire une erreur qui sera difficile a déceler :( grrrr …

    Il faut écrire à la place :
    require_once(”../vo/trombimti/Person.php”);

    Voila, tout ca pour redire que ces erreurs sont bien idiotes, et qu’elles font perdre un temps précieux …. si vous ne voulez par relire les articles que vous écrivez, n’écrivez pas - c’est mieux ;) merci

  5. ohazar dit :

    citer

    - il faut spécifier le type pour les balises flex fermantes :
    “<mx :method” devient “<mx:method”

  6. ohazar dit :

    citer

    - il faut corriger deux ou trois encapsulations :

    devient

  7. ohazar dit :

    Désolé, pour les encapsulations, vous devrez trouver tout seuls : le systeme de commentaire n’accepte pas les copier coller :P
    (En gros, il faut ouvrir la balise “method”, puis la balise “arguments”, puis fermer la balise “arguments”, puis la balise “methods” … gnia)

Laisser un commentaire


  • molle pack assembly instructions
  • polycom user manual
  • paper claw instructions
  • infant massage instructions
  • 1040 c instructions
  • above ground pool closing instructions
  • rice maker instructions
  • motorola ht1250 user manual
  • advance watch instructions
  • yugioh instructions
  • 990 tax form instructions
  • delta shower faucet repair instructions
  • sissy masturbation instruction
  • radio shack 3 in 1 remote instructions
  • marshmallow shooter instructions
  • sharp carousel microwave instructions
  • kenmore manual
  • div instruction
  • welding instructions
  • russian spiral beading instructions
  • instructional strategies for physical education
  • mindstorm robot instructions
  • instructional tubes
  • i-765 form instruction
  • instruction manuals for cameras
  • toshiba laptop user manuals
  • instruction for 1040x
  • call forwarding instructions
  • docubind p100 instructions
  • lpc2148 user manual
  • candyland game instructions
  • native american flute instruction
  • 2008 form 990 instructions
  • origami cardinal instructions
  • viagra instructions for use
  • ralph tyler basic principles of curriculum and instruction
  • ntvdm cpu has encountered an illegal instruction
  • pa-40 instructions
  • garage door opener programming instructions
  • methods of group exercise instruction
  • irs form 8621 instructions
  • origami instructions for kids
  • us bank wire transfer instructions
  • ept test instructions
  • 1911 disassembly instructions
  • hotpoint dishwasher instructions
  • risk lord of the rings instructions
  • moss out instructions
  • water softener installation instructions
  • metacognitive instruction
  • hp officejet j4580 manual
  • stouffer s french bread pizza cooking instructions
  • pa tax return instructions
  • energizer battery charger instructions
  • web design instruction
  • what is instructional design
  • swimp3 instructions
  • azo instructions
  • origami hexagon box instructions
  • instructional oral sex videos
  • safety instructions
  • zune manual
  • super colon cleanse instructions
  • motorola mts 2000 user manual
  • hulled barley cooking instructions
  • texas margin tax instructions
  • user manual example
  • gambling instruction
  • intarsia knitting instructions
  • opnav instruction 6000.1c
  • sharp atomic clock instructions spc364
  • new york state tax return instructions
  • dod instruction 1000.13
  • adobe photoshop instructions
  • instructional dvd
  • direct instruction special education
  • shut the box game instructions
  • origami deer instructions
  • origami rhino instructions
  • casio pathfinder 2632 manual
  • instructions for form w 2
  • free singer sewing machine manuals
  • sba form 413 instructions
  • motorola bluetooth user manual
  • logic pro user manual
  • instructions for 24 hour urine collection
  • schedule ssa instructions
  • down comforter washing instructions
  • stroking instructions
  • directv slimline dish installation instructions
  • bowling instructions for beginners
  • honda user manual
  • tassimo instructions
  • hossfeld bender instructions
  • facial instruction
  • epson workforce 610 user manual
  • fdic call report instructions
  • article on differentiated instruction
  • woodworking instruction
  • radio shack user manuals
  • instructions for form 8582
  • paper lantern instructions
  • evenflo car seat instruction manual
  • white basmati rice cooking instructions
  • disney uno instructions
  • user instructions
  • javma instructions for authors
  • instructional strategies for phonics
  • md form 500 instructions
  • tig welding instructions
  • pottery barn crib assembly instructions
  • tai chi instructional videos
  • radio installation instructions
  • lego 7676 instructions
  • instructional design software programs
  • form i-129f instructions
  • linksys wireless-g router instructions
  • washing machine instructions
  • thumler s tumbler instructions
  • reese friction sway control instructions
  • tooth extraction care instructions
  • instructions how to make paper airplanes
  • combitube instructions
  • i touch manual
  • wire wrapping instructions
  • hp photosmart instructions
  • lego gun building instructions
  • thomas train set instructions
  • monistat 3 instructions
  • rug braiding instructions
  • monopoly junior dig n dinos instructions
  • instructions for n-400
  • little tikes car bed assembly instructions
  • sony exmor r manual
  • sex instructionals
  • federal circuit jury instructions
  • form 8398 instructions
  • pops-a-dent instructions
  • instructional design - chicago
  • cubing differentiated instruction
  • ge universal remote control instructions
  • iolite vaporizer instructions
  • hogwarts castle lego instructions
  • west bend stir crazy popcorn popper instructions
  • shl instruction
  • ipod touch manual 4th generation
  • instructional practices in teaching
  • aztek airbrush instructions
  • trampoline instructions
  • improving instruction
  • journal of bacteriology instructions to authors
  • s corp instructions
  • steelcase 9000 assembly instructions
  • navy harp duty instruction
  • clock instructions
  • from 1040 instructions
  • ab swing instructions
  • elfa instructions
  • no sew tutu instructions
  • instructions for farkle
  • direct tv remote programming instructions
  • star wars transformers instructions
  • sony cybershot n50 manual
  • kettlebell instruction
  • mustang convertible top installation instructions
  • schedule b instruction
  • rice instructions
  • instructional design basics
  • instructions to build a chicken coop
  • instructions for irs form 6251
  • water bath canning instructions
  • camera instructions
  • selena jerk off instructions
  • youth baseball instruction
  • wilton instructions
  • garmin instruction manual
  • lycoming service instructions
  • altistart 48 user manual
  • samsung camera instructions
  • tying a bow tie instructions
  • heatilator gas fireplace instructions
  • massachusetts income tax instructions
  • annoy a tron instructions
  • breast pump instructions
  • brookstone grill alert instructions
  • r4 instructions
  • spyderco knife sharpener instructions
  • uscis i-765 instructions
  • logitech user manual
  • balloon hat instructions
  • avery dark t-shirt transfer instructions
  • irs 1023 instructions
  • 2010 toyota prius owners manual
  • aqua glass shower installation instructions
  • personal property consignment instruction guide
  • manual transmission gears
  • diving instruction
  • pennsylvania inheritance tax return instructions
  • pga golf instruction
  • nih final progress report instructions
  • allure flooring instructions
  • safety pin christmas tree instructions
  • instructions for form 1023
  • ste user manual
  • ny state it-201 instructions
  • weapons of math instruction
  • plos pathogens instructions to authors
  • roomba instructions
  • free hairbow instructions
  • oral sex instruction
  • anderson patio door installation instructions
  • tassimo coffee maker instructions
  • rose petal cottage assembly instructions
  • visual boy advance instructions
  • chicken dance instructions
  • well chlorination instructions
  • origami fortune cookie instructions
  • innotek instructions
  • shake n bake chicken instructions
  • wd my passport instructions
  • jack lalanne power juicer instructions
  • manual tube benders
  • how to differentiate instruction in mixed ability classrooms
  • fry 9c instructions
  • instruction sets
  • instructional design competencies
  • cast on knitting instructions
  • degrees in instructional design
  • blackberry storm user manual
  • capri sun wallet instructions
  • pa rct-101 instructions
  • rohn tower installation instructions
  • baked potato instructions
  • how do i differentiate instruction
  • software user manual template
  • ipod mini battery replacement instructions
  • motorcycle instruction permit colorado
  • msd 6al instructions
  • make your own lego instructions
  • python user manual
  • dance step instructions
  • driving instruction rochester ny
  • georgia state tax instructions
  • sony user manual
  • form 8880 instructions
  • ftp instructions
  • access instructions
  • microsoft excel instructions
  • newborn discharge instructions
  • golf instruction putting
  • lokar shifter instructions
  • ga form 600s instructions
  • casio manuals
  • form wh-347 instructions
  • irs form 8814 instructions
  • folding instructions for paper airplanes
  • 9th circuit model jury instructions
  • moen kitchen faucet repair instructions
  • 2009 form 5500 instructions
  • ge microwave instruction manual
  • instructions how to make a diaper cake
  • rit dying instructions
  • nikon d100 user manual
  • brothers sewing machine manual
  • shower installation instructions
  • logitech mouse instructions
  • suntrust wire instructions
  • form u4 instructions
  • sportline heart rate watch manual
  • hypercom t7 plus user manual
  • oral sex instruction videos
  • form 1099 general instructions
  • 1099 miscellaneous instructions
  • ruffler foot instructions
  • orgami instructions
  • tax instruction booklet
  • packing instruction 650
  • form 712 instructions
  • evenflo pack n play instructions
  • cake decorating instructions
  • basket weaving instructions
  • dermabond wound care instructions
  • sock animals instructions
  • math differentiated instruction
  • decoupage instructions
  • aha cpr instructions
  • singer industrial sewing machine manuals
  • instructions for dd form 1172
  • wisconsin department public instruction
  • paracord braiding instructions
  • ct 1040 instructions
  • faxing instructions
  • ohio state income tax instructions
  • touchpad instructions
  • sporting clays instruction
  • mitsubishi mr slim user manual
  • epson printer instructions
  • guided masturbation instruction
  • oster blender instructions
  • instruction booklets
  • crochet loop stitch instructions
  • zutter bind it all instructions
  • golf instruction for women
  • wanking instructions
  • e6b instructions
  • cell phone user manuals
  • what is phonics instruction
  • washington state office of superintendent of public instruction
  • irs form 8801 instructions
  • taboo instructions
  • waterfall card instructions
  • i 134 instructions
  • form 8038 instructions
  • spud gun instructions
  • ipod touch user manual
  • direct vs indirect instruction
  • indoor palm tree care instructions
  • instructional resource teacher
  • 100s instructions
  • rag quilting instructions
  • irs form 6198 instructions
  • wonder wash instructions
  • camcorder manuals
  • tai chi instructions
  • german language instruction
  • lego car instructions
  • msd 7531 instructions
  • abortion aftercare instructions
  • irs w-8ben instructions
  • chain mail instructions
  • bowflex assembly instructions
  • instruction 1120
  • teeth whitening instructions
  • zip-line instructions
  • lawn mower manual
  • diaper genie instruction manual
  • apple iphone instruction manual
  • u s passport instructions
  • dod instruction 1332.38
  • 3d snowflake instructions
  • amoxicillin 500 mg dosage instructions
  • instructions on how to insert a tampon
  • dog grooming instructions
  • differentiated instruction lesson plan template
  • ipod nano instruction booklet
  • paper pinwheel instructions
  • form w 8ben instructions
  • brother fax 575 instructions
  • nucc instruction manual
  • fetch instruction
  • origami polyhedra instructions
  • 1045 instructions
  • hasbro game instructions
  • telephone instructions
  • writing user manual
  • droid eris user manual
  • federal income tax 1040ez instructions
  • butterfly loom instructions
  • uno spin instruction manual
  • maryland form 503 instructions
  • zojirushi instructions
  • instructional design for online learning
  • hair clip instructions
  • samsung cell phone instructions
  • robocopy instructions
  • motorola bluetooth instructions
  • instructional fair
  • macrame bracelets instructions
  • crest white strips instructions
  • pa 40 instructions
  • verizon call block instructions
  • mason bee house instructions
  • explicit instruction definition
  • form 941x instructions
  • origami crane folding instructions
  • general instruction of the roman missal
  • topsy turvy instructions
  • canon powershot sx30 manual
  • form 5498 instructions
  • linksys wireless router instructions
  • instruction targeted for tabe success
  • kill a watt instructions
  • blue bowl instructions
  • instruction sex
  • driving instructions and map
  • navy instructions
  • chicago flight instruction
  • creation instruction association
  • nec user manual
  • bingo game instructions
  • wisconsin superintendent of public instruction
  • optimal optimus instructions
  • drumbone instructions
  • stauer atomic watch instructions
  • arizona 140ez instructions
  • form u-4 instructions
  • talking watch instructions
  • douche instructions
  • hypercom t7plus manual
  • blender user manual pdf
  • wisconsin schedule h instructions
  • instructions for knitting a hat
  • instructional design elearning
  • anal instruction
  • texas pattern jury instructions
  • liquid nails instructions
  • coralife protein skimmer instructions
  • private music instruction
  • the instruction at referenced memory at the memory could not be written
  • tomtom xl manual
  • paternity leave navy instruction
  • irs forms instructions
  • mirro pressure canner instruction manual
  • transcendental meditation instructions
  • room essentials assembly instructions
  • dynamic instructional design model
  • workout instructions
  • best sex instruction
  • edge finder instructions
  • volleyball scorebook instructions
  • mature jerk off instructions
  • it 201 tax form instructions
  • origami scorpion instructions
  • tv ears instructions
  • instructions for tax form 1040
  • instructions for clue
  • jewelry making instructions
  • occ call report instructions
  • sch a instructions
  • breast bondage instructions
  • canon powershot sd890 is manual
  • federal jury practice and instructions
  • irs form 1116 instructions
  • instructional technology resources
  • ikea bed instructions
  • medrol dosepak instructions
  • crossbow instructions
  • theme-based instruction
  • armitron wr330 instructions
  • glock 22 instruction manual
  • federal income tax form 1040 instructions
  • 1065 k 1 instructions
  • curriculum and instruction degree
  • xslt processing instruction
  • cigar box purses instructions
  • ihome alarm clock instructions
  • rowenta iron self cleaning instructions
  • classroom instruction videos
  • vibrator instructions
  • differentiating instruction for students with learning disabilities
  • craftlace instructions
  • tissot t-touch instructions
  • origami squid instructions
  • mac user manual
  • instructional guide template
  • wisconsin form 4 instructions
  • mr coffee coffee maker cleaning instructions
  • sse instruction
  • fly tying patterns instructions
  • timex triathlon watch instructions
  • memorandum of instruction format
  • belkin n wireless router user manual
  • softball hitting instructions
  • dd form 1348-1a instructions
  • instructions 1040a
  • leupold scope mounting instructions
  • bra measurement instructions
  • brother p touch 1180 instructions
  • tie dye instructions for kids
  • jiu-jitsu instructional videos
  • paper tole instructions
  • disadvantages of direct instruction
  • concept oriented reading instruction
  • viking knit instructions
  • nec aspire user manual
  • curriculum instruction degree
  • research-based math instruction
  • energizer rechargeable batteries instructions
  • tomtom go 720 manual
  • ge universal remote instructions
  • worm factory instruction manual
  • brighthouse remote instructions
  • slingbox pro hd user manual
  • scotch tl901 thermal laminator instructions
  • bean bag toss instructions
  • singer sewing machine repair manual
  • lg air conditioner user manual
  • instructional strategies for autism
  • computer managed instruction
  • form w-2c instructions
  • process instructions
  • stanley 45 instructions
  • managing small group instruction
  • hitting instruction
  • types of classroom instruction
  • theories of instruction
  • moneygram instructions
  • washington state office of the superintendent of public instruction
  • munchkin sterilizer instructions
  • instructions schedule k 1