PHP is a 'second language' for myself, coming more from a LISP background, but over the past few years, I've ported a web development system to LAMP, and incorporated what I feel are some interesting, if not unique, developments including;
- Incorporating a semantic network model.
The use of an Entity – Attribute – Value data store using a single MySQL table.
Very agile, with a strong use of metadata.
An N-Tier architecture, pulling the business logic from the DB into the PHP tier.
Everything is an object, with properties stored as metadata.
Methods are in the form of small PHP modules, that are lazy loaded as required, and are goal based, rather than object based.
7 or so php functions replace 95% of required SQL, with a library of simple functions for special cases. I haven't coded any MySQL in a long time.
A single copy of this framework, was handling 35+ domains, a university exchange management system, another company's production line, with numerous developers working on different projects simultaneously, with no namespace conflicts, and rarely pushes 2% cpu utilization.
The concept is based on two fundamental aspects of language.
Every sentence in any language is either a declaration, a query, or a command.
Every sentence consists of a subject, a predicate and a value.
It's not object oriented in the traditional sense, inheritance etc occurs as per a semantic network model ie: we make a few declarations;
tweety isa canary
canary isa bird
bird isa animal
With these 3 simple declarations, we can answer the query “Is Tweety an animal?” through inference.
Of course, there's much more to it. The client side includes drag 'n drop widget development, lazy loading everything, multiple JS library support, and completely Ajax driven. There's a ton of tools that allow clients to build websites using drag and drop, and heavy widget incorporation.
So, what do you think? Is this something anyone would be interested in?