My current project is the biggest site I’ve had to design and build by myself. And in the process of planning the code I’ve realised why so many people have a framework they use. I’m having to do too much stuff here from scratch; code that should just plug in from existing projects. I’ve written a SQLBuilder library, polished up my own take on Fusebox, and am developing the FormProcessor library (the more I use it the more I realise why people do forms the “normal” - i.e. writing PHP to construct them - way: it’s such a pain writing these forms by hand. Dreamweaver really doesn’t speed up the generation much - I will post ideas of a dedicated application I think _someone else_ ought to write - sometime!).
So I’ve decided I need to invest time learning an existing framework, rather than write my own half-baked version. *Please*, if you’ve had good or bad experiences of frameworks, *post a comment*, and share your experience.
20 comments ↓
hello peter,
I like your site and since I work on such a PHP application framework myself in my free time with so nice and bright people from around the globe, I just had to recommend it to you: its called Xaraya and can be found @ http://www.xaraya.com
found your site via feedster searching for “template engine”
If you like, drop by in IRC @ irc.xaraya.com channels #support or #chat, and talk to some developers and users. Its always great fun.
regards, frank.
Hi Peter,
I have been following your site for quite some time once I found it through Simon’s weblog. Nice stuff you put it up there!
I have also faced the same issue, you are facing, several times. But none of the times, I was able to make switch from my code to some other application framework. It’s very difficult. Let me tell you why.
1. Each framework has its coding style, style of implementing various techniques (say form processing/templating/OOP) which may or may not suit you. According to me, it doesn’t make sense to follow your style different then framework’s style. If I give you example, you liked Simon’s idea of form processing but with bit of change. So you are hacking it away. You might need to do same thing with framework. Now how long you can keep hacking the framework?? If you keep hacking, you loose the advantage of having framework in the first place.
2. This relates to point 1, finding a framework which is coded in style which matches yours + operates like the way you do web development will be VERY DIFFICULT to find. If you have to ADJUST to framework, believe me you will need to spend lot of time to get up to speed. Your productivity will have a serious drop.
3. Sadly, there is no universally accepted framework for PHP and everyone codes in a way they think is the BEST. They don’t use the best of the tools available for the job. Say you always develop using ADODB but framework might not use the same. Now ADODB is the BEST database abstraction library for PHP. Same goes for template engines. You can think of numerous things. [Am I repeating point number 1?? Kind of.]
4. Learning curve involved for being competent with framework. If framework is HUGE, learning curve will be rather steep. If it is not HUGE, it might not have what you need. I always found myself in trouble of deciding whether I should just heck away the code to finish off project OR take more time to learn framework! Have a look at binarycloud.com to know how complex a framework can be. [Relates to point no. 2]
5. Future support for framework. It is pretty important who is driving the framework. Are those guys behind framework really smart and will continue supporting the development of framework? You can find many frameworks which have just died. Binarycloud.com is just another example.
All of the above mentioned reason has kept me away from frameworks. Anyways, I have tried following:
1. horde.org – a quite neat and stable framework but development has really slowed down. Also, installation is pain (may be because it uses PEAR heavily??). Imagine yourself spending long hours to install framework on your client’s machine before you install your application itself!
2. binarycloud.com – Complex one.
I have tried almost everything at http://www.hotscripts.com/PHP/Scripts_and_Programs/Development_Tools/Application_Framework/index.html but I didn’t find anything which I could use without major changes.
Btw, just recently I got developer access to blueshoes.org. I am currently downloading the framework (its almost 7 mb!) . It certainly looks VERY PROMISING. I will update you about how it goes.
Hope I was able to provide some useful input,
Regards,
JD
One that’s nice and lightweight and encourages a fairly nice structure is ISMO: http://ismo.sourceforge.net. The ISMOBlog available on the same site gives a pretty good idea how to structure an app with.
Alternatively you might consider becoming a http://wact.sourceforge.net alpha user.
I chanced by here while doing a search for PHP Application Frameworks. I’m probably too late to help you on the above mentioned project, but you might just find InterJinn (http://www.interjinn.com) to be useful for your next large scale project.
Cheers,
Rob.
I just want add another one, try ROADSEND PHP SiteManager @ http://www.roadsend.com/siteManager.
Cheers,
[bayu]
I have done some research on this, and I too was pulled to your blog in search of frameworks. Here are some I found… pardon the lack of urls
ampoliros
phpgroupware (look at it as a working example of one you must clean out)
horde
just to name a few
Hope I can help you with my own solution: I’ve been working on the development of a PHP framework since october ‘02. It’s called PHP2Go and was born from a long history of problems with Web Development.
I started to work in a team that used to deal with PHP. In 1,5 year, we’ve created a lot of small components that used to do some boring jobs for us: forms generation, HTML documents generation, session handling, XML parsing, database transparency, … In all theses cases, we’ve had the choice between using a third party component or build by ourselves. Our choice was the second one. Why? Because that’s the pleasure on being a programmer: having the choice of creating your own solution instead of just using someone’s code. However, there are some exceptions: some fantastic components that you just don’t need to change or adjust. These components must be used and used again, because they’re very good! An example? ADODB. Another? JPGraph.
In the end of this “coding” phase, I decided to put all these modules together, rewrite them in a structured and hierarchical way, creating PHP2Go framework. During the last year, I’ve been working on it, and have just released the first beta version. For now, it has almost 100 classes and is able to perform a large set of common tasks.
I won’t say it is THE solution you’re looking for. But I suggest you analyze it. It can be a good candidate, at least.
Cheers.
Marcos Pont
If you’ve to write a web application, I strongly suggest Merlinwork, http://merlinwork.sourceforge.net, it’s true OO and event driven, the right choice to build applications such as CMS.
Regards
Hi!
You mentioned something like a formbuilder before. Do you know PEAR_QuickForm and PEAR_QuickForm_Controller?
Design of the form is latter done via one of a dozen Template Renderers to choose (IT, Smarty, ..)
We are also working on a solution to describe forms completly in XML and let the code do all the boring stuff. This XML could later be created via a XML-editor (and validated via a DTD/Schema) or entirely created via a visual editor.
Check out thw devWiki of our group of PEAR people here : http://www.mamasam.com/qfbuilder if you are interrested.
yours,
matthias
Hi all
Happened by here same reason as the others, posting for the same reason - framework propaganda
Had an interesting chat with a colleague the other day and we concluded that with so many PHP frameworks about, maybe 30 or so serious contenders, it’s not really important which one you choose, just that it offers robust support for standard framework features: oo design, widely accepted PEAR coding standards, db portability, config and preference mgnt, error handling, templating and a good concept of roles and permissions.
The biggest mistake I see frameworks making is choosing academic design over performance, there are many out there that take over a second to execute a simple page. The same school tends to have objects for forms, then text fields, then submit buttons, then actions fired by clicks - missing the boat entirely as far as what PHP can deliver as a scripting language.
Seagull is a framework project I started that tries to address some of these issues, performance currently is around 70 reqs/sec with APC cache which stands up pretty well against its peers. Documentation however is not a strong point, pop by and see if you’d like to get involved.
cheers
Demian Turner
a programmer unable to spell his domain properly - very promising …
http://phpkitchen.com/seagull
(not intended as spam, apologies)
The PHP Reusable Web Framework (rwfPHP) is a framework to build more complex frameworks. It is a nice Event Driven Object Oriented framework that uses Web Controls and Templates to separate the logic and display.
It uses ADOdb for a database abstraction layer and Smarty for the template engine.
Take a look at http://www.rwfphp.org
At some point when the community builds Web Controls with rwfPHP, these web controls could then be used any project using rwfPHP framework.
Try my KPF. It’s “ASP.NET style” framework. It’s simple no learning curve yet powerful. Still alpha quality but I already used for some client website and it works. Need help to build up user controls and documentation. Visit http://www.k-edge.com for details.
There is perhaps a lot of confusion about what really does a framework. in fact, is it a program that links a lot of different libraries eachothers in order to provide few but specific functions for the user application ? This can explain why there is so much projects developped around but they never really fit our needs
What we need is a really flat engine that will be able to speek only with those different libraries :
- ADODB for the db abstraction layer
- Smarty for the templates/cache engine
- A good and secure session_handlers and
authentication classe with roles handling
I don’t know exactly what to use for the last tool. any advice ?
I have used in the past a great library
called PHPShop with a good system of function registrating procedure in order to get the application more secure but it is too much
e-commerce oriented. Nevertheless, the same team has developped a good work call PHPCore http://www.phpshop.org . It is always in beta version and quite a litle bit hold but making it working with marty could be just a fine framework (it possess the ADODB library) and it could be more securised by adding the feature of PHPShop about the function registration. any one interested can contact me. I would rather be better for the securising task than for the Smarty implementation task
This program should provide the very deep foundation of all new great project !
Philippe
I have been working with the Mojavi framework, its a MVC style framework, very flexible, fast and light. I have checked out most of the other mentioned but Mojavi provided me with the basic and allowed me to build out much of the business logic using my own classes, etc. It is certainly worth checking out…http://www.mojavi.org
Please see PARDO. http://www.xisc.com/
Its a Great Work!
hi peter,
I´m very curious to hear what your decision was based on your research! did you get to test a couple of these suggestions?
I´m looking for a framework too, as well as a off-the-shelf cms.
from my initial search sounds like it´s worth looking at seagull,blueshoes and ezpublish 3…
best
oliver
Use PRADO. Its realy good work. But I think it’s leathel to slow. But this times are computers so fast that this is not a major problem.
I develop Zoop Framework for PHP (http://zoopframework.com) and invite all to come and check it out. It is mature, full featured and has features unique to itself across all php frameworks. It is written to make the coders job easier and quicker by through such systems as guicontrols and forms and sequences.
I am trying Zend framework. it looks promising, and supported by big company.
Leave a Comment