Login   Register  
PHP Classes
elePHPant
Icontem

File: docs/README.txt

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Stefan Rottensteiner  >  ClassGenerator  >  docs/README.txt  >  Download  
File: docs/README.txt
Role: Documentation
Content type: text/plain
Description: README
Class: ClassGenerator
Generate classes from definitions in XML
Author: By
Last change: Cleared some typos
Date: 2008-03-19 04:17
Size: 2,018 bytes
 

Contents

Class file image Download
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.