Mentioned in summary Zend-based core was started during my work at Cybertone.
Today I support and develop one project based on it. I wanted to publish full
source code, but 3-4 years ago it was not good enough to be shared, and now it
looks a bit outdated in matter of used frameworks (Zend Framework 1.12.0,
Prototype JS 1.7.1).
I support "thin controller" idea and main business logic is implemented in
models. Every model consists of Db layer, Entity transfer object, Db and Form
data adapters and Manager that makes all the main work. In Db layer
Zend_Db_Adapter is used and for all data selects I use Zend_Db_Select. I do not
use Zend_Db_Table/Row, instead Entities are used. Entity is just a simple
transfer object, usually represents table row, but also has some additional
properties and provides fluent interface to access related Entities.
The way it works is pretty simple and I managed to introduce it in at least two
teams in very short time. It is also project-independent and could be used in
any existing Zend-based project.
Recently I made important upgrade of back-end part of Core. Now it successfully
utilizes Redis and NodeJS to have event-based (with Redis pub/sub)
communications among different entities. The project is still based on
PHP/Zend/Mysql but some heavy work (like counters, caching, cascaded updates) is
now done with Node and Redis (and sometimes PHP callbacks made by Node). The
way
it works is pretty interesting and I will be happy to share it.
The way my front-end Javascript part is organized is still fresh despite of its
age (I found some new popular libraries having similar architecture and flow).
It consists of main component loader, couple of additional support classes (like
request manager) and a lot of completely independent components. AMD ideology is
used there to load everything (local and remote css and
js).
Actually, I implemented the loader, that works in very similar way to very
popular RequireJS library. First version was written about 6 years ago and that
time we did not have such a big variety of good and simple libs. Even jQuery was
pretty bad comparing to PrototypeJS that time.
All components communicate using native DOM events only, therefore it is very
easy to add new components, load them dynamically and communicate with others.
In addition to pure front-end components, there are plenty of components, that
work together with my custom Zend Form Elements.
I can say that even being the part of my core, it still could be used outside
of it - once I took some main JS core files and components and easily integrated
them with a Magento project (it uses Prototype).
For all my new projects I, of course, use all these new libraries (like
RequireJS, Underscore, jQuery, Async, and many more), still keeping similar way
and architecture, just using different libraries.