views:

144

answers:

4

Hi,

We are a small team of developers planing to develop a php application. (let's say a CRM system)

Our one main gold is to make it plugin enable application where developers at clients place can write plugings add new features to the system, with out changing the application core.

this changes may including, 1) add new features: more likely add a new page and create a new db table and and implement new operations such as add/edit/display data.

2) Edit existing functionality (like we have list the users, they might need the user name to be a hyperlink and open a light box with user information)

Since this is going to a large scale application (err!! Might be medium ;) ) we need to plan is carefully.

At the moment our plan is to write the core application structure and implement the requirements as plugings. So that each time client need any change we can only upgrade a specific pluging.

I just need the gurus here to give us some ideas, links to look at before the start.

The final question is “how to build a plugin enable PHP application?”

Thanks all...

+1  A: 

I would say try to use an OO framework (zend framework, cakephp, symphony) and create a configuration (xml based) to tell the loader which class should be loaded) that mean you can redifined class when you need to add a functionality to an existing feature or load new class.

Magento for instance use this approach to allow plugins.

But without more informations that's hard to tell.

stunti
using a framework is a good idea. But since we just need to be more unique and develop something our own where we can use it for our future projects is the idea that we have in mind.
A: 

Write well-structured, reuseable OOP-Code - define an abstract plugin class or interface.

Karsten
A: 

I second the opinion on using a framework like Symphony. It provides a better structure for any application, give you a cleaner and modular app. I'd even advise you to use another language but that is outside the scope of the question :)

Keltia
A: 

http://codeigniter.com/forums/viewthread/67697/

gkrogers
Thanks.. this is really helpful :)