PHP ClassGenerator - V1.0
(C) Rottensteiner Stefan, 2008
The PHP ClassGenerator is smart and simple class to create PHP classes, based
on a simple XML description. It' depends on the standard PHP extension XMLReader.
Look into the file examples/example_001.php and see a demonstration of all
core features.
First I have to confess that I've done a lot in Java over the last year and so
I've learned a lot about patterns, coding conventions and naming of
classes and properies. One of the results of my studies is this class generator.
An example XML class description, used in the example:
<?xml version="1.0" standalone="yes" ?>
<Family xmlns:cgen="http://www.example.com/namespaces#ClassGenerator" cgen:factMethod="getInstance" >
<Mother name="Heidelinde" inCome="2501.0" >
<Child cgen:extends="HumanBeeing" name="Anna" sex="female"/>
<Child name="Lena" sex="female"/>
</Mother>
<Father name="Franz" inCome="2500.0"/>
</Family>
As you can see, it's really simple and nearly self explanory:
There are 4 named classes: "Family", "Mother", "Father" and "Child". All of this
are predefined, except the "Child" class - it will be generated on the fly. The
class "Family" is instantiated with a simply static factory method called
"getInstance". Btw., the generator searches also for an attribute called
"factClass" and will use this. In my example there is no such attribute so the
class "Family" will be used.
In order to create the new class "Child", the generator uses the attribute
"extends". Yes - it's optional.
Property setting strategiy:
1. Use a public or protected setter method "set<elementName>" or "set<attributeName>".
2. Use a public or protected setter method "add<elementName>" or "set<attributeName>".
3. Set a public or protected class member called "<elementName>".
A bad side effect is the fact that the generator sometimes has to create derivated classes in order to access the properties. Hopefully I can change this in the next release.
|