DOM Basic: Create DOM documents in pure PHP

Recommend this page to a friend!
  Info   View files Example   View files View files (229)   DownloadInstall with Composer Download .zip   Reputation   Support forum   Blog    
Last Updated Ratings Unique User Downloads Download Rankings
2018-03-20 (2 years ago) RSS 2.0 feedNot enough user ratingsTotal: 190 This week: 1All time: 8,390 This week: 295Up
Version License PHP version Categories
dom-basic 1.0BSD License5HTML, XML, PHP 5, Libraries
Description Author

This package can create DOM documents in pure PHP.

It can create DOM documents with more options than the traditional DOM classes, like for instance setting the type of document to HTML, XHTML, XML, or custom document type, defining the open and close tags, etc..

Some classes use the singleton pattern, calls can be chained, and errors throw exceptions.

Innovation Award
PHP Programming Innovation award nominee
September 2015
Number 11


Prize: One downloadable copy of Komodo IDE
XML and HTML are used as formats to describe information structured in hierarchies, but there are other hierarchic formats used by many applications like JSON, INI, etc..

This package can define and generate hierarchic documents in XML, HTML, JSON, INI or other formats and switch between them just by changing changing some configuration values that define details like delimiter characters.

Manuel Lemos
  Performance   Level  
Name: Juan Jose <contact>
Classes: 1 package by
Country: Spain Spain
Innovation award
Innovation award
Nominee: 1x

Details

DOMbasic

<a href="http://guerratron.github.io/DOMbasic"><img src="http://guerratron.github.io/DOMbasic/assets/DOMbasic_logo.png" title="DOMbasic GitHub page" alt="dombasic logo" /></a> <!--- %% dombasic logo ---> *DOMbasic. Juan José Guerra Haba - 2014 - dinertron@gmail.com dombasic-full@lists.osdn.me - dombasic-private@lists.osdn.me*

DEFINITION:

PHP package to create dynamic DOM elements. It follow the OOP paradigm, implemented SINGLETON patterns, magical methods, contains error control ('own exceptions'), chaining methods, optimized memory and resources, ...

EXPLANATORY:

More flexible and lighter than the native PHP. It allows you to create any document labeling: HTML, XHTML, XML, ... including any user-defined (this includes those who are yet to be implemented) that are based on hierarchies of tags, attributes and content; this You can be achieved simply by modifying the constants file specify, opening and closing tags and a couple of other modifications.

You can create complete websites that adhere to the standards validation of its structure. A tree harbor the only variable element created, this includes visible elements (BODY) and invisible (HEAD), static (HTML) and dynamic (SCRIPTS:. EG Javascript), elements and positioning structure (xHTML) or style (CSS) ...

Although there are other ways to achieve the same (text variables, other APIs, ...) This method is designed for flexibility and dynamism, performance and low resource consumption. Once you understand the mechanism and its syntax, saving time and effort, errors are minimized and DOM construction and automated cleaner is achieved. We all know the problems that can be generated when processing a Web page on the fly successive chaining 'Echo, print, ... " making sure that the headers are not sent in advance; these errors multiplied by a thousand if we use Frameworks or type CMS (Joomla, Wordpress, Drupal, ...)

FEATURES:

They have been implemented utility functions that allow us to quickly convert theDOM* tree JSON text, HTML, XML, ... and vice versa. * Maintain tight control 'Exceptions' providing much information when debugging. Classes that follow theSINGLETON* pattern. * Contains methods 'constructor' and 'destructor' to optimize memory. Methods called magical (getter, setter, unset, clone, toString, ...*). Configuration file writable for the accommodation of the basic parameters ofINI DOM*. Chaining methods [NO GETTER*]. Programming entirely within the paradigmOOP*. * ... Other utility functions.

REQUIREMENTS:

PHP* > 4 The modules that support for readingINI,JSONandXMLfiles, must be enabled inPHP*. * Having wanted to write code. jejejejj

INSTALATION:

1. You do not require installation.

Place the pakage in the desired route by which to call to instructions 'include' or 'require'. (obviously if it's in a compressed format before DECOMPRESS) We suggest creating a folder (for example DOM) and place it inside.

USE:

Load the main input class 'DOM_element' by 'include' or some variant clause:include_once, require ...* by example: ... require(realpath(dirname(__FILE__))."/DOM/DOM_element.php"); ... After this, to creatingDOM* elements: ... $div1=new DOM_element('div1'); ... * Add attributes and properties: ... $div1->setTag("div")->id="container"; ... * Add content: ... $div1->setText("TEXT INTO 'container' DIV")->addChild($div2); ... * Print: ... echo $div1->toHTML(); ...

WEB FLOW CREATION:

* The normal flow for building a Web page would be: DOCTYPE -> HTML (HEAD -> BODY).

All this would contain the entire document. (SEE EXAMPLES FOR MORE FULL SHOW)  

* DOCUMENT:

  No special labels or attributes element is purely the DOM representation, the element tree, the container document in full:
	  `... $document=new DOM_element('document'); ...`  
		`... $document->setTag(''); ...`  
		`...   $conf=array( "TYPE"=>"2", "DESC"=>"",
				               "OPEN_TAG_LEFT"=>"", "OPEN_TAG_RIGHT"=>"", 
				               "CLOSE_TAG_LEFT"=>"", "CLOSE_TAG_RIGHT"=>"" ); ...`  
		`... $document->setConfiguration($conf); ...`  

* DOCTYPE:

  This being another special element (it is an element of definition, structure and style), we should also do it using both special 
	opening tag but no closing and unnamed attributes:  
	  `... $doctype=new DOM_element("doctype"); ...`  
		`... $doctype->setTag("DOCTYPE"); ...`  
		`... $conf=array( "TYPE"=>"doctype", "DESC"=>"Tipo de Documento (DTD)",
										 "OPEN_TAG_LEFT"=>"<!", "OPEN_TAG_RIGHT"=>">", 
										 "CLOSE_TAG_LEFT"=>"", "CLOSE_TAG_RIGHT"=>"" ); ...`  
		`... $doctype->setConfiguration($conf); ...`  
		//STARTING A KEY FOR '_null' means an attribute without key (doctype)  
		`... $doctype->addAttrib("_null1", "-//W3C//DTD XHTML 1.0 Transitional//EN"); ...`  
		`... $doctype->_null2="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"; //atributo asignado diréctamente ...`  
		_NOTE: Also keep in mind that not harbor any element._  

* HTML:

  Container of elements HEAD and BODY. Depending on the type of document to create (HTML 1.0, xHTML, HTML5, ...) 
  will implement those or other parameters:  
	  `... $html=new DOM_element('html'); ...`  
		`... $html->setTag("html"); ...`  
		`... $html->xmlns="http://www.w3.org/1999/xhtml"; ...`  

* HEAD:

  Invisible element of page:  
	  `... $head=new DOM_element('head'); ...`  
	  `... $head->setTag("head")->addChild($title); ...`  

* BODY:

	Visual element of page:  
	  `... $body=new DOM_element('body'); ...`  
		`... $body->setTag("body")->addChild($div1); ...`  

* SEWING OF ELEMENTS:

  `... $html->setChildren(array($html, $body)); ...`  
  `... $document->setChildren(array($doctype, $html)); ...`  

* WEB PRINTING:

  `... echo $document->toHTML(); ...`  

NOTE: (SEE EXAMPLES IN THE 'EXAMPLES' FOLDER FOR A MORE FULL SHOW)  
  Files folder image Files  
File Role Description
Files folder imageassets (2 files)
Files folder imageDOCS (5 files, 2 directories)
Files folder imageexamples (4 files)
Files folder imageexceptions (8 files)
Files folder imageutil (3 files)
Accessible without login Plain text file config.ini Data INI Data File
Plain text file DOM_attribs.php Class Aux. Class
Plain text file DOM_element.php Class Main Class
Plain text file DOM_Interface.php Class Main Interface
Plain text file DOM_textNode.php Class Child Class
Accessible without login HTML file index.html Doc. web access page
Accessible without login Plain text file LICENSE Lic. GNU GPL v2
Accessible without login Plain text file README.md Doc. Howto, instalation, ... mini-Help

  Files folder image Files  /  assets  
File Role Description
  Accessible without login Image file DOMbasic_logo.png Icon Logo pakage
  Accessible without login Image file torotron_logo.png Icon Logo author

  Files folder image Files  /  DOCS  
File Role Description
Files folder imagehtml (93 files, 1 directory)
Files folder imagertf (21 files)
  Accessible without login Plain text file LEEME.txt Doc. Spanish mini-Help
  Accessible without login Plain text file license_bsd-3.txt Doc. NO-USE
  Accessible without login HTML file README.html Doc. mini-Help HTML
  Accessible without login Plain text file README.txt Doc. English mini-Help Text Plain
  Accessible without login Plain text file unlicense.txt Doc. NO-USE

  Files folder image Files  /  DOCS  /  html  
File Role Description
Files folder imagesearch (85 files)
  Accessible without login HTML file annotated.html Doc. Documentation
  Accessible without login Plain text file annotated_dup.js Data Auxiliary data
  Accessible without login Image file arrowdown.png Icon Icon image
  Accessible without login Image file arrowright.png Icon Icon image
  Accessible without login Image file bc_s.png Icon Icon image
  Accessible without login Image file bdwn.png Icon Icon image
  Accessible without login HTML file classes.html Doc. Documentation
  Accessible without login HTML file class_configuration.html Doc. Documentation
  Accessible without login Plain text file class_configuration.js Data Auxiliary data
  Accessible without login HTML file class_d_o_m_basic_...ound_exception.html Doc. Documentation
  Accessible without login Plain text file class_d_o_m_basic_..._found_exception.js Data Auxiliary data
  Accessible without login Image file class_d_o_m_basic_...found_exception.png Icon Icon image
  Accessible without login HTML file class_d_o_m_basic_...only_exception.html Doc. Documentation
  Accessible without login Plain text file class_d_o_m_basic_...d_only_exception.js Data Auxiliary data
  Accessible without login Image file class_d_o_m_basic_..._only_exception.png Icon Icon image
  Accessible without login HTML file class_d_o_m_basic_...load_exception.html Doc. Documentation
  Accessible without login Plain text file class_d_o_m_basic_autoload_exception.js Data Auxiliary data
  Accessible without login Image file class_d_o_m_basic_autoload_exception.png Icon Icon image
  Accessible without login HTML file class_d_o_m_basic_...ound_exception.html Doc. Documentation
  Accessible without login Plain text file class_d_o_m_basic_..._found_exception.js Data Auxiliary data
  Accessible without login Image file class_d_o_m_basic_...found_exception.png Icon Icon image
  Accessible without login HTML file class_d_o_m_basic_...only_exception.html Doc. Documentation
  Accessible without login Plain text file class_d_o_m_basic_...d_only_exception.js Data Auxiliary data
  Accessible without login Image file class_d_o_m_basic_..._only_exception.png Icon Icon image
  Accessible without login HTML file class_d_o_m_basic_exception.html Doc. Documentation
  Accessible without login Plain text file class_d_o_m_basic_exception.js Data Auxiliary data
  Accessible without login Image file class_d_o_m_basic_exception.png Data Auxiliary data
  Accessible without login HTML file class_d_o_m_basic_...eton_exception.html Doc. Documentation
  Accessible without login Plain text file class_d_o_m_basic_singleton_exception.js Data Auxiliary data
  Accessible without login Image file class_d_o_m_basic_...leton_exception.png Icon Icon image
  Accessible without login HTML file class_d_o_m_basic_value_exception.html Doc. Documentation
  Accessible without login Plain text file class_d_o_m_basic_value_exception.js Data Auxiliary data
  Accessible without login Image file class_d_o_m_basic_value_exception.png Icon Icon image
  Accessible without login HTML file class_d_o_m__attribs.html Doc. Documentation
  Accessible without login Plain text file class_d_o_m__attribs.js Data Auxiliary data
  Accessible without login Image file class_d_o_m__attribs.png Icon Icon image
  Accessible without login HTML file class_d_o_m__element.html Doc. Documentation
  Accessible without login Plain text file class_d_o_m__element.js Data Auxiliary data
  Accessible without login Image file class_d_o_m__element.png Icon Icon image
  Accessible without login HTML file class_d_o_m__text_node.html Doc. Documentation
  Accessible without login Plain text file class_d_o_m__text_node.js Data Auxiliary data
  Accessible without login Image file class_d_o_m__text_node.png Icon Icon image
  Accessible without login HTML file class_i_n_i.html Doc. Documentation
  Accessible without login Image file closed.png Icon Icon image
  Accessible without login HTML file dir_444cf7440f6d50...88fca847a92561.html Doc. Documentation
  Accessible without login HTML file dir_5bd50db0cec53e...aa45c0260a87c6.html Doc. Documentation
  Accessible without login HTML file dir_6d94ce0bce29c7...b7b49f64d560f3.html Doc. Documentation
  Accessible without login HTML file dir_80dabeb122eccd...89c99f981bb24f.html Doc. Documentation
  Accessible without login HTML file dir_b850b63c566039...4ad73d25f2be7b.html Doc. Documentation
  Accessible without login HTML file dir_b8b0c052545290...9e2d127988077f.html Doc. Documentation
  Accessible without login HTML file dir_e1907a670304bc...f1610a6344eb26.html Doc. Documentation
  Accessible without login HTML file dir_f0124488be2362...4df2685b93c743.html Doc. Documentation
  Accessible without login Image file doc.png Icon Icon image
  Accessible without login Image file DOMbasic_logo.png Icon Document Logo
  Accessible without login Plain text file doxygen.css Data Auxiliary data
  Accessible without login Image file doxygen.png Icon Icon image
  Accessible without login Plain text file dynsections.js Data Auxiliary data
  Accessible without login Image file folderclosed.png Icon Icon image
  Accessible without login Image file folderopen.png Icon Icon image
  Accessible without login HTML file functions.html Doc. Documentation
  Accessible without login HTML file functions_func.html Doc. Documentation
  Accessible without login HTML file functions_vars.html Doc. Documentation
  Accessible without login HTML file hierarchy.html Doc. Documentation
  Accessible without login Plain text file hierarchy.js Data Auxiliary data
  Accessible without login Plain text file index.hhc Data Auxiliary data
  Accessible without login Plain text file index.hhk Data Auxiliary data
  Accessible without login Plain text file index.hhp Data Auxiliary data
  Accessible without login HTML file index.html Doc. Main Help file documentation
  Accessible without login HTML file interface_d_o_m___interface.html Doc. Documentation
  Accessible without login Plain text file interface_d_o_m___interface.js Data Auxiliary data
  Accessible without login Image file interface_d_o_m___interface.png Icon Icon image
  Accessible without login Plain text file jquery.js Data Auxiliary data
  Accessible without login HTML file namespaces.html Doc. Documentation
  Accessible without login Plain text file namespaces.js Data Auxiliary data
  Accessible without login HTML file namespace_d_o_m_base.html Doc. Documentation
  Accessible without login HTML file namespace_d_o_m_basic.html Doc. Documentation
  Accessible without login Plain text file navtree.css Data Auxiliary data
  Accessible without login Plain text file navtree.js Data Auxiliary data
  Accessible without login Plain text file navtreedata.js Data Auxiliary data
  Accessible without login Plain text file navtreeindex0.js Data Auxiliary data
  Accessible without login Image file nav_f.png Icon Icon image
  Accessible without login Image file nav_g.png Icon Icon image
  Accessible without login Image file nav_h.png Icon Icon image
  Accessible without login Image file open.png Icon Icon image
  Accessible without login Plain text file resize.js Data Auxiliary data
  Accessible without login Image file splitbar.png Data Auxiliary data
  Accessible without login Image file sync_off.png Icon Icon image
  Accessible without login Image file sync_on.png Icon Icon image
  Accessible without login Plain text file tabs.css Data Auxiliary data
  Accessible without login Image file tab_a.png Icon Icon image
  Accessible without login Image file tab_b.png Icon Icon image
  Accessible without login Image file tab_h.png Icon Icon image
  Accessible without login Image file tab_s.png Icon Icon image

  Files folder image Files  /  DOCS  /  html  /  search  
File Role Description
  Accessible without login HTML file all_0.html Doc. Documentation
  Accessible without login Plain text file all_0.js Data Auxiliary data
  Accessible without login HTML file all_1.html Doc. Documentation
  Accessible without login Plain text file all_1.js Data Auxiliary data
  Accessible without login HTML file all_2.html Doc. Documentation
  Accessible without login Plain text file all_2.js Data Auxiliary data
  Accessible without login HTML file all_3.html Doc. Documentation
  Accessible without login Plain text file all_3.js Data Auxiliary data
  Accessible without login HTML file all_4.html Doc. Documentation
  Accessible without login Plain text file all_4.js Data Auxiliary data
  Accessible without login HTML file all_5.html Doc. Documentation
  Accessible without login Plain text file all_5.js Data Auxiliary data
  Accessible without login HTML file all_6.html Doc. Documentation
  Accessible without login Plain text file all_6.js Data Auxiliary data
  Accessible without login HTML file all_7.html Doc. Documentation
  Accessible without login Plain text file all_7.js Data Auxiliary data
  Accessible without login HTML file all_8.html Doc. Documentation
  Accessible without login Plain text file all_8.js Data Auxiliary data
  Accessible without login HTML file all_9.html Doc. Documentation
  Accessible without login Plain text file all_9.js Data Auxiliary data
  Accessible without login HTML file all_a.html Doc. Documentation
  Accessible without login Plain text file all_a.js Data Auxiliary data
  Accessible without login HTML file all_b.html Doc. Documentation
  Accessible without login Plain text file all_b.js Data Auxiliary data
  Accessible without login HTML file all_c.html Doc. Documentation
  Accessible without login Plain text file all_c.js Data Auxiliary data
  Accessible without login HTML file all_d.html Doc. Documentation
  Accessible without login Plain text file all_d.js Data Auxiliary data
  Accessible without login HTML file all_e.html Doc. Documentation
  Accessible without login Plain text file all_e.js Data Auxiliary data
  Accessible without login HTML file all_f.html Doc. Documentation
  Accessible without login Plain text file all_f.js Data Auxiliary data
  Accessible without login HTML file classes_0.html Doc. Documentation
  Accessible without login Plain text file classes_0.js Data Auxiliary data
  Accessible without login HTML file classes_1.html Doc. Documentation
  Accessible without login Plain text file classes_1.js Data Auxiliary data
  Accessible without login HTML file classes_2.html Doc. Documentation
  Accessible without login Plain text file classes_2.js Data Auxiliary data
  Accessible without login Image file close.png Icon Icon image
  Accessible without login HTML file functions_0.html Doc. Documentation
  Accessible without login Plain text file functions_0.js Data Auxiliary data
  Accessible without login HTML file functions_1.html Doc. Documentation
  Accessible without login Plain text file functions_1.js Data Auxiliary data
  Accessible without login HTML file functions_2.html Doc. Documentation
  Accessible without login Plain text file functions_2.js Data Auxiliary data
  Accessible without login HTML file functions_3.html Doc. Documentation
  Accessible without login Plain text file functions_3.js Data Auxiliary data
  Accessible without login HTML file functions_4.html Doc. Documentation
  Accessible without login Plain text file functions_4.js Data Auxiliary data
  Accessible without login HTML file functions_5.html Doc. Documentation
  Accessible without login Plain text file functions_5.js Data Auxiliary data
  Accessible without login HTML file functions_6.html Doc. Documentation
  Accessible without login Plain text file functions_6.js Data Auxiliary data
  Accessible without login HTML file functions_7.html Doc. Documentation
  Accessible without login Plain text file functions_7.js Data Auxiliary data
  Accessible without login HTML file functions_8.html Doc. Documentation
  Accessible without login Plain text file functions_8.js Data Auxiliary data
  Accessible without login HTML file functions_9.html Doc. Documentation
  Accessible without login Plain text file functions_9.js Data Auxiliary data
  Accessible without login HTML file functions_a.html Doc. Documentation
  Accessible without login Plain text file functions_a.js Data Auxiliary data
  Accessible without login HTML file functions_b.html Doc. Documentation
  Accessible without login Plain text file functions_b.js Data Auxiliary data
  Accessible without login HTML file functions_c.html Doc. Documentation
  Accessible without login Plain text file functions_c.js Data Auxiliary data
  Accessible without login Image file mag_sel.png Icon Icon image
  Accessible without login HTML file namespaces_0.html Doc. Documentation
  Accessible without login Plain text file namespaces_0.js Data Auxiliary data
  Accessible without login HTML file nomatches.html Doc. Documentation
  Accessible without login Plain text file search.css Data Auxiliary data
  Accessible without login Plain text file search.js Data Auxiliary data
  Accessible without login Plain text file searchdata.js Data Auxiliary data
  Accessible without login Image file search_l.png Icon Icon image
  Accessible without login Image file search_m.png Icon Icon image
  Accessible without login Image file search_r.png Icon Icon image
  Accessible without login HTML file variables_0.html Doc. Documentation
  Accessible without login Plain text file variables_0.js Data Auxiliary data
  Accessible without login HTML file variables_1.html Doc. Documentation
  Accessible without login Plain text file variables_1.js Data Auxiliary data
  Accessible without login HTML file variables_2.html Doc. Documentation
  Accessible without login Plain text file variables_2.js Data Auxiliary data
  Accessible without login HTML file variables_3.html Doc. Documentation
  Accessible without login Plain text file variables_3.js Data Auxiliary data
  Accessible without login HTML file variables_4.html Doc. Documentation
  Accessible without login Plain text file variables_4.js Data Auxiliary data

  Files folder image Files  /  DOCS  /  rtf  
File Role Description
  Accessible without login Image file class_d_o_m_basic_...found_exception.png Icon Icon image
  Accessible without login Image file class_d_o_m_basic_..._only_exception.png Icon Icon image
  Accessible without login Image file class_d_o_m_basic_autoload_exception.png Icon Icon image
  Accessible without login Image file class_d_o_m_basic_...found_exception.png Icon Icon image
  Accessible without login Image file class_d_o_m_basic_..._only_exception.png Icon Icon image
  Accessible without login Image file class_d_o_m_basic_exception.png Data Auxiliary data
  Accessible without login Image file class_d_o_m_basic_...leton_exception.png Icon Icon image
  Accessible without login Image file class_d_o_m_basic_value_exception.png Icon Icon image
  Accessible without login Image file class_d_o_m__attribs.png Icon Icon image
  Accessible without login Image file class_d_o_m__element.png Icon Icon image
  Accessible without login Image file class_d_o_m__text_node.png Icon Icon image
  Accessible without login Plain text file dir_444cf7440f6d502a5c88fca847a92561.rtf Data Auxiliary data
  Accessible without login Plain text file dir_5bd50db0cec53ef87aaa45c0260a87c6.rtf Data Auxiliary data
  Accessible without login Plain text file dir_6d94ce0bce29c72c23b7b49f64d560f3.rtf Data Auxiliary data
  Accessible without login Plain text file dir_80dabeb122eccdded689c99f981bb24f.rtf Data Auxiliary data
  Accessible without login Plain text file dir_b850b63c5660396b604ad73d25f2be7b.rtf Data Auxiliary data
  Accessible without login Plain text file dir_b8b0c05254529002079e2d127988077f.rtf Data Auxiliary data
  Accessible without login Plain text file dir_e1907a670304bc66b4f1610a6344eb26.rtf Data Auxiliary data
  Accessible without login Plain text file dir_f0124488be2362525b4df2685b93c743.rtf Data Auxiliary data
  Accessible without login Image file interface_d_o_m___interface.png Icon Icon image
  Accessible without login Plain text file refman.rtf Data Auxiliary data

  Files folder image Files  /  examples  
File Role Description
  Accessible without login Plain text file comparation.php Example example php file
  Accessible without login Plain text file example1.php Example example php file
  Accessible without login Image file img1.png Icon image to example
  Accessible without login Image file img2.png Icon example image

  Files folder image Files  /  exceptions  
File Role Description
  Plain text file DOMBasicAttribNotFoundException.php Class Exception Class
  Plain text file DOMBasicAttribReadOnlyException.php Class Exception Class
  Plain text file DOMBasicAutoloadException.php Class Exception Class
  Plain text file DOMBasicElementNotFoundException.php Class Exception Class
  Plain text file DOMBasicElementReadOnlyException.php Class Exception Class
  Plain text file DOMBasicException.php Class Main Exception Class
  Plain text file DOMBasicSingletonException.php Class Exception Class
  Plain text file DOMBasicValueException.php Class Exception Class

  Files folder image Files  /  util  
File Role Description
  Plain text file INI.php Class Utility Class for read/write INI Files
  Accessible without login Plain text file JsonIniXml.php Aux. Json Utility Class
  Accessible without login Plain text file Utiles.php Aux. Utility Methods

 Version Control Unique User Downloads Download Rankings  
 100%
Total:190
This week:1
All time:8,390
This week:295Up

For more information send a message to info at phpclasses dot org.