Time to find a PHP framework

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 ↓

#1 frank on 08.21.03 at 5:46 pm

hello peter,
found your site via feedster searching for “template engine” :) 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
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.

#2 JD on 08.21.03 at 8:37 pm

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

#3 Harry Fuecks on 08.24.03 at 11:24 am

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.

#4 Robert on 09.24.03 at 4:12 am

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.

#5 Bayu Widyasanyata on 10.31.03 at 2:14 am

I just want add another one, try ROADSEND PHP SiteManager @ http://www.roadsend.com/siteManager.

Cheers,
[bayu]

#6 Dan Graaff on 10.31.03 at 4:49 am

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

#7 Marcos Pont on 11.01.03 at 2:32 am

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

#8 Fabrizio Balliano on 12.16.03 at 10:09 am

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

#9 Matthias on 12.18.03 at 11:41 pm

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

#10 Demian Turner on 02.18.04 at 11:24 pm

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

#11 Demian Turner on 02.18.04 at 11:27 pm

a programmer unable to spell his domain properly - very promising …

http://phpkitchen.com/seagull

(not intended as spam, apologies)

#12 Renaun Erickson on 03.24.04 at 5:34 pm

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.

#13 Hong nguyen on 04.01.04 at 6:28 am

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.

#14 Philippe Schelté on 05.29.04 at 12:35 am

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

#15 Nathan Fish on 06.11.04 at 4:28 pm

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

#16 Ahm Asaduzzaman on 02.17.05 at 6:01 pm

Please see PARDO. http://www.xisc.com/
Its a Great Work!

#17 oliver on 04.05.05 at 4:55 pm

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

#18 Blaz on 08.11.05 at 6:00 am

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.

#19 Steve Francia on 12.15.05 at 3:19 am

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.

#20 Purna Budaya on 05.10.08 at 4:20 am

I am trying Zend framework. it looks promising, and supported by big company.

Leave a Comment