Login | Register
My pages Projects Community openCollabNet

On Friday, May 18, the normal maintenance window (17:00 Pacific time) will be extended for data center maintenance until 23:00 Pacific. No extended down-time is planned, but brief delays and interruptions are possible throughout the period.

If you were registered and logged in, you could join this project.

Summary Component architecture for PHP
Categories libraries, construction
License GNU Lesser Public License
Owner(s) hircus

This is an emergency release due to the advent of the Prado framework which essentially does the same ;-)

Php Objects is an object-oriented environment for component-driven web applications in the tradition of WebObjects, GnuStepWeb or Tapestry. Pages are components constructed of other components and controllers called dynamic elements.

Php Objects mimics the part of WebObjects which is responsible for page generation. It does not implement the database abstraction layer, the rapid prototyping via Direct to Web ('D2W'), the Web Services, the Java Client and the deployment platform.

Php Objects ist strictly object-orientated and currently consists of about hundred classes. As the nature of PHP is procedural it needs a few lines of procedural code in order to enter the world of objects. It requires PHP 4 and has been tested with PHP 4.2.3 and 4.3.3 on Linux, PHP 4.3.4 to 4.3.9 on Linux and Mac OS X, PHP 4.3.8 on Windows and PHP 5.0.2 on Mac OS X. Due to lots of warnings in the logfile on passing arguments explicitly by reference PHP 5 is quite slow by now.

Php Objects includes: Collection Classes mutable and immutable arrays and dictionaries, Key/Value Coding accessing properties of objects like a dictionary, Template parser based on regular expressions, Dynamic Elements controllers used in templates, Reusable Components consisting of template, bindings and class, property access via key/value coding, Associations key/value associations, constant associations, read-only associations, Request Handlers bookmarkable and non-bookmarkable urls, page request handler, direct action request handler, component request handler, Multiple Languages support for multiple languages based on browser information and session, Forms form values are pushed to and pulled from properties of the class, full validation handling.

Status


All required features are complete: collection classes, regular-expression-based template parsing, dynamic elements, reusable components, associations, component definition cache, transparent support for multiple languages, key/value coding, different request handlers, in-memory sorting, in-memory qualification, bundle paradigm, configuration system, on-demand class loading, turck mmcache support, logging, profiling, form handling with validation, binary response and file download support, caching.

Missing nice-to-have features: source code documentation, more examples, full set of dynamic elements, detailed error reporting, line precious error reporting in templates, typed key/value coding, resource request handler, suitable session timeout handling, additional performance tuning, project documentation, tutorial, web services support.

Installation


A short manual describing this project including installation is Overview.pdf

Design


There is also a first logo draft heavily inspired by BeOS:

Similar Products


These products share a similar core functionality in page generation:

  • WebObjects: One of the first web application server ever. Uses pure Java as language. Invented by Next, now maintained by Apple. The functionality of this commercial product goes far beyond simple components. It contains a very complex database abstraction layer, web services, client technology for swing, rapid prototyping.
  • GnuStepWeb: An open source WebObjects 4 clone using Objective-C as language implementing only the page engine.
  • Wotonomy: An open source WebObjects clone in Java.
  • Tapestry: An open source software in Java similar to the WebObjects page engine.
  • Prado: An implementation of tapestry in PHP, winner of Zend's PHP 5 Coding Contest.

Disclaimer


Apart from being the origin of my inspiration, neither the WebObjects Framework (TM) nor Apple Computer, Inc. have anything to do with this work. Neither this document nor any other project-related documents, nor the source code in itself, are in any way associated with Apple Computer, Inc., nor do I as the author have any relationship with Apple Computer, Inc. This page and related ones, the software and its author are not in anyway connected with Apple Computer, Inc. In particular, they are not endorsed by Apple Computer, Inc. in any way.