OverviewObjectiveLearn how to create dynamic objects that you can addmethods and variables too on the fly.Requirements Understanding of PVCollections Understanding of Closures/Anonymous FunctionsEstimated Time10 minutes www.prodigyview.com
Follow Along With A Code Example1. Download a copy of the example code at www.prodigyview.com/source.2. Install the system in an environment you feel comfortable testing in.3. Proceed to examples/design/Objects.php
The ObjectIn ProdigyView, PVObject and PVStaticObject are verypowerful classes. Have the design patterns to improve development Enable Object Oriented Programming Enable Aspect Oriented Programming Easily mutable codeBefore we get into the higher level constructs, lets startwith understanding PVObjects and PVStaticObjects.
Create Our Class We can start learning about how to use an object by creating an empty class. Yes, just merely define a class with nothing in it.Extend PVObject or PVStaticObject Take notice it’s empty, no methods or variables
Anonymous functions/closuresNext step is to create our anonymous functions . Thesefunctions are eventually going to become the class’smethods.
Adding the MethodsWe have a class with no methods and we have twoanonymous functions. Ok we are ready to go. Becauseour class extends PVObject, we have access to a methodcalled addMethod(). This method will allow us to add ouranonymous functions as methods that become part of theclass. Add our anonymous functionSet the name of the method
Calling the Methods Ok so we’ve added the methods to our object that was once empty. Now we can call those methods by using the -> operator and the name we assigned the method.Name of the methodRemember, the anonymous function $write_email accepted two parameters.
PVCollectionIf you remember PVCollection, we could add informationand retrieve information from it at any time.Every class that extends PVObject and PVStaticObjecthas a PVCollection built in. This makes it possible to adddata to an object and also iterate through the objectsdata.Let’s take a look on the next slide.
Adding Variables When we created our class, it was empty with no variables. Let’s change that by adding some variables. The method addToCollectionWithName is a method inherited from PVObject and will allow us to add variables to the objects collection that can be retrieved later. Or you can explicitly add a variable by assigning it using the ‘->’ operator.Name of the variable Value associated with the name Name of the variable Value associated with the variable
Get the variablesLike the methods, we can now get the variables that wereassigned to our once empty object. Also we can iteratethrough the variables that were added.Get the variables by calling the name assigned to them
PVObjectsPretty cool? Well this is only the tip of the ice berg.With a clear understanding of adding methods andvariables to an object, we have the ability to create verydynamic objects.Once combined with design patterns, you will able toleverage aspect oriented programming and othercapabilities that will make building an applicationincredibly easy and robust.
Challenge!To better understand the concepts covered, complete theoptional challenge below.1. Start out with an empty class.2. Add a variable to the class3. Add a function to this call that will retrieve the variable and pass it to another function that alters the result.4. Then pass the altered result back to where the function was originally called.
The Not So Obvious1. Adding a variable to an object can also be accomplish by using the method addToCollection. But the variable will not be assigned a key for accessing it later. The variable can retrieved when using the getIterator() method.2. All objects have a PVCollection. All variables are assigned and pulled from this collection behind the scenes.
Review To create dynamic objects, make sure the class extends PVObject or PVStaticObject Closures/anonymous functions can be added to using the addMethod function Variables can be added using the addCollectionWithName() method or explicitly applying the variable with ‘->’ operator.
API ReferenceFor a better understanding of the Collections and theIterator, check out the api at the two links below.PVStaticObjectPVObject More TutorialsFor more tutorials, please visit:http://www.prodigyview.com/tutorials www.prodigyview.com