Features & Approach
Demo & Implementations
What is Phella?
Phella is a Content Management Framework (CMF) or an application programming interface for creating and maintaining websites. Another important part of Phella is Content Management System (CMS). Formally Phella CMS is just one of the optional plug-ins to Phella CMF. But importance of this particular plug-in makes whole Phella a platform for creation powerful and flexible websites. Unlike traditional CMS's which provide ready made fixed solutions, Phella gives you set of tools to create you own CMS solution with unbeatable level of flexibility (well you'll find couple ready made solutions in the Phella package too). If portal-oriented CMS's doesn't offer you what you need, if you have a working website and want to add CMS facilities to it, Phella is exactly what you looking for. With Phella we made a verb out of word "CMS". Phella is CMSing things up!
What is common in Phella with other CMF's?
Model-View-Control (MVC) approach proved itself as an effective system to organize workflow and maintain medium to large projects. We used it in Phella too.
Ability to use URL rewriting mechanism, caching and seems all other important features expected from any solid CMF/CMS.
Open source and extensibility of the code using simple plug in mechanism.
What makes Phella different?
CMSing things up!
Phella has imployed several innovative ideas which were never been seen somewhere else yet.
Most of popular open sources CMF/CMS's are portal oriented, designed for public driven websites. Phella was created with corporative websites in mind. It doesn't mean you can't create a portal with Phella, but you probably will have to work on it a bit more. Well if you want that your portal doesn't look like another somebody's clone then your efforts will be rewarded.
Boxed CMF/CMS's are designed to start working without any line of additional coding (I wonder have somebody ever managed to do that?). Phella is definitely not a tool for "dummies", you have to know how to program PHP. But what we did in Phella to the maximum we covered most of system programming allowing you to concentrate on your Model and View (MVC).
Phella CMF/CMS is fully abstract layer and doesn't provide any View (MVC) solutions. From one hand it gives you more work, from another full freedom. How many sleepless nights were drown in coffee while bending standard behavior of a boxed CMS package? Better spend that time in creation of your own rather than messing somebody's other creation.
One rare feature of Phella CMS is "administration-in-place". There is no any dedicated admin control panel. We found nothing good in using it. For the end user (think corporative admin, not you programmer) it may be extremely difficult to link certain feature of the website and one of the menu item in admin control panel. But if this item located at the intuitive and logical place of the actual website, then you don't need to answer again and again on the same questions of your client.
What kind of web projects is Phella good for?
Static corporative websites
Here we consider not literally static websites but those "dynamic" where PHP applied as the tool to re-use common presentation elements (header, footer, etc.). It helps a lot during development time, but at usual runtime it calls PHP on each request to do very same task every time.
In this case Phella may not speed up process of development (it just works in very same manner as normal PHP code), but Phella's caching mechanism will turn your finished project to a static one. PHP will run only once for each page, cache result and never will be invoked again for the same page (unless cache copy was deleted for certain reasons).
Each static corporative website may have one or few truly dynamic pages (i.e. "contact form", "order online", etc.). While developing you may not pay attention to the difference of such pages. But on final stage set runtime mode for static (de facto) pages to be cashed and others to stay dynamic.
Dynamic corporative websites, portals
Phella helps by hiding low level operations (HTTP requests, sessions, etc.). Instead Phella offers its own abstract concept of data flow, which allows concentrating on business logic and shortening development time. Separatig of logic from presentation using Phella's templates will help to maintain and modernize your project.
Growing dynamic corporative websites
With addition of Phella's CMS module you may create website which may be dynamically maintained and extended by the corporative content editors (admins). Say online magazine, shop, etc.
We somehow would like to distinguish this functionality from publicly edited portals. Phella CMS module is the only less abstract module with embedded visual presentation. This visual may not (actually it on purpose was designed not to) match your project outlook as nobody of ordinary visitors see it. That why this functionality considered as internal or back-end part.
Public portal editors ARE the visitors. They suppose to see straight forward controls not masqueraded ones. But if you feel comfortable with Phella CMS control elements on your public portal we can't prohibit you to use it there.
What different people may get out of Phella?
What's behind Phella?
Written in PHP it offers PHP as the working base. But Phella takes over control on HTTP protocol data flow and lower level programming, creating accomplished higher level web developing environment (4GL). This allows a lot of looseness for the developer. Think of HTTP headers, HTML <title> tag and other low level thing which may be defined at any point, etc.
Template language is native PHP. Do you know PHP was initially created for this purpose and still good in this job? Read this article if you doubt. Even with 4GL environment and all its loose things Phella managed to do only single PHP pass of all involved code without any additional preprocessing and eval'ing.
Phella's runtime benchmark is comparable to simple PHP driven web pages. Mostly it is because of native PHP syntax approach in all cases where possible.
Developed as an abstract tool Phella doesn't require any back-end database (except for some ready made solutuion modules/samples). Everything is up to you and your common sense. Phella just helps you to do this effectively.
When you need static cache Phella generates complete HTML files which can be handled by the web server without any additional single line of code. Can be any faster?
Why another CMF?
When we came to the point that certain projects do need more organization we looked for available CMF's. After certain time of research we found no one suitable for us. Some were too heavy and asked for far too many resources. Others were lightweight but too limited in functionality.
Basically all CMF's contains of 3 layers (MVC):
And seem many of them use three different parsers for each of the layers. It means one request (web page) needs to be parsed thrice to get final result. Three programs to run and three syntaxes to parse. If low level programming done by PHP, two others done either by self made parsers or by third party products such as Smarty.
Here we come to the main obstacle. All third party parsers not only need extra resources, but also may have limitation in their syntax. Say if we miss certain template tag, we hardly can get it. Smarty and other parsers may provide access to low level programming but in this case we loose another important point - clean high level programming.
In order to satisfy our needs we desided to develop our own CMF with the following features:
There Phella was born.
Phella Unique Features
New Abstract Layer over HTTP
There are two data pools -- incoming and outgoing. Once all kind of incoming data described, Phella doesn't inform any more where it come from. Low level HTTP details are hidden on purpose in order to shift more attention to the business logic.
Additional Layer to the MVC Paradigm
While MVC is the well known and well used idea there is one problem rises when it comes to the practical realisation of the paradigm. We have added another optional layer resolve this (and another one) problem. MVC becomes MHVC or M[H]VC if you like. Read more about our approach.
Custom Super-Global Variables
In order to simplify process of coding Phella introduced custom super-global variables.
A PHP specialist may notice that there are no such in PHP yet. It's true. We "hijacked" them from the system level and used for our custom purpose. Arguable? But convenient!
Suppose you need each of your webpage to be in different languges. Or oriented to the different country clientelle. Or both? Then Phella may handle all these invariants. All requests will be automatically extended to the fully qualified whenever some arguments missing Also default invariant will be shown each time whenever actual one doesn't exist.
There is no any dedicated administration control panel. Instead all system details (handled by the developer) are in configuration file. Other settings (handled by the content editor) are intuitevely and descretely embedded into the actual layout of the website. Obviously those control elements are avilable only when the content editor (admin) logged in. See the sample of Phella content management.