09 12 Aug
Author: Tomas Bartkus and Viktoras Puzas Filed under: Uncategorized     No Comments »

What is OxyBase ?

Definition

OxyBase is a Zend Framework extension. Main goal of this package is to provide flexible, extensible and customizable web application framework based on Zend Framework.

Vision

Our vision is to create a php development framework oriented to php development teams, but of course can be used and by individuals. This framework should help development teams to manage project development process easier and enhance project development speed.

Overview

The definition given above is very basic so let us explain everything in more detail.

Zend Framework is a wonderful library because of its architecture. With it you can do whatever you like in whatever way you like. And if:

  • you or your team are advanced PHP developer(-s)
  • you or your team have to build enterprise application
  • you or your team do not want to spend time by analyzing a lot of frameworks and seeing if their suggested structure fits for you
  • you or your team need to own your application and at any point, at any development phase, you must have possibility to implement structure changes in a short time frame
  • youor your team just want to have “architecture at will”

then Zend Framework is the best solution at this moment. Why? Simple answer would be that it is constructed from decoupled components, which can be used by your choice.

So Oxy team and did it. We used and still are using this beauty to build all our web applications, but there are things that ZF is missing, or perhaps better to say, that developers are forced to add some extra work that it would fit their needs. For example, for every project you have to create your folders structure, you have to set up lot of other things. In other words you have to create your project infrastructure, before you can start developing actual business model. We are pretty sure that before Zend_Tool was out, every ZF user had its own way how to setup his application’s base, everyone had its own integrations with certain template engines and certain ORM libraries. Everyone was looking for a right application structure and was trying to put code were it belongs. Everyone was using ZF in hundreds of different ways.

Other thing is development process management. If you are working in a team, so you probably know that it’s totally different thing, than working  alone. You have all those coding standards, rules how to do custom things, continues integration tools,  reviews and tools. Yes, lot of external tools are used by teams during development phase. And all teams creates it’s own base project infrastructure that helps to roll out the project faster and manage development process easier. So again all teams has its own way.

So, one day Oxy team said, perhaps we can suggest our way? Perhaps we can suggest people the same ZF, but along with it a huge package of integrations? Perhaps we can suggest our application structure, which is a bit different then ZF structure and uses domains as the biggest grouping unit, which is used to build enterprise applications (e.g. http://www.collectweb.com)? Perhaps we can suggest a nice package of Zend_Tool providers, with features in front line like module CRUD generator? Perhaps we can provide an easier way for users to share their built components that are useful, but ZF is not letting in and in this way extend ZF?

Perhaps we can provide, from our point of view, a very good application structure base and infrastructure, which is customizable, flexible and extensible and on which people could start building applications right after the download“.

And our answer was – “we can try”.

So, OxyBase and is our suggestion for you, yes you – another Zend Framework user.

Features, or why should I give a shot?

Domains

At all times there was a problem with standard ZF, that you couldn’t decouple your application’s Frontend and Backend (aka Admin).  With standard Zend_Controller component you have modules directory and basically you can play only with it. You can put your controllers in <module>/<admin|public> directories, you can try doing something else, but still whatever you will do, you will not be able to achieve what you actually want, without changing dispatcher or facing additional problems.

One of the OxyBase main features is extended Zend_Controller component Oxy_Controller, which implements domains logic. This domains logic let’s you improve your applications scalability.  That improvement is achieved by dividing your application in domains, where every domain implements some business model. We are offering flexible structure which will allow you to have N additional domains if your application requires. For example, you can have your Admin and Frontend domains (which is common for CMS/CRM systems), or you can optionally have Webservices domain which would function under completely different logic – everything is up to you. It is you who will decide how the things will flow.

Every domain has its own Bootstrap and configuration, so every domain can have totally different resources loaded. That means you can connect  every domain to different database, use different set of features, interact with different business objects, etc.
At the bottom every domain has its own modules. Module is the same ZF module with controllers, models, views, plugins and so on.

Plugins system for components

OxyBase implements event based plugin system for components. This Oxy_Event component implements standard Observer pattern and let’s you create an extensible code which can be extended by third party users.

Resources sharing between domains and modules

OxyBase has very simple, but very useful, resources sharing component called Oxy_Extension. With it you can access any module resource in your application, of course if that module will let you to do that. That permission is given when extension is loaded into extensions registry during bootstrap. And when its there you can reuse functionality (methods) without any worries about dependency problems, because handling is done by Oxy component.
In simple words, you can extend/reuse any model in your application without “extend” keyword.

Zend_Tool providers

OxyBase includes lot of providers which saves our time when we have to perform day by day routines, like creating module structure, creating new domain structure, creating simple CRUD’s for N modules and so on.

Lot of integrations

OxyBase provides lot of our created integrations with template engines, like Smarty, Dwoo, Savant. Integrations with ORM libraries, like Doctrine.  We will support those integrations and even more, we will try to integrate all your used libraries.

Custom OxyBase

We do not want to have 300MB size zip file for download, so we will let you to decide what you want to have in your OxyBase. Do you want Smarty? Dwoo? Doctrine ? Apache-FOP? Its up to you, we will let you create your download package which will include only your chosen components.

Cmp_Community

OxyBase will let you share your built components with other ZF-OxyBase users. We will not decide what you can add and what you can’t, you can share with others what you like, and you – users will decide what components to use.

Zend and Oxy

We do not want to have another “Oxy framework”, we love ZF and we are contributing to ZF code, but this is our way how we do it. We add it to Oxy, we build application and if we see that it works, we will suggest to ZF. If ZF will not accept it, ok it will remain in Oxy,  if they accept it – we will remove it from Oxy.

Summary

So that what is OxyBase and that what is an idea that we, Oxy team, want to make true. And if you like it, please join us, we are open for suggestions, for your suggested improvements, let’s create an awesome web application development framework, which relies on Zend Framework, together!