I am using PHP.

I'm building a fully modular CMS, which is destined for the public. Some people might view this as a framework, but I intend to write a set of extensions for it, extensions that will make it a CMS :P

Because it's completely modular I have a problem figuring out how to load extensions.

Practically I need to get the list of active extensions, so I can load them inside my base class. I load them by reading some file headers, which contain a "dependency" field. That field decides the order in which I have to instantiate the objects.

The problem is that when the CMS starts I have no database interface, because that's an extension too, so I can't store the active extensions list in the database :)

You might ask how are extensions activated in the first place. Well - in the administration interface, which is an extension as well (obviously on first install of the CMS there will be some extensions active by default).

Could writing that list inside a text file be a solution? The problem is that a lot of hosts are not very nice with scripts when they write files. And since this CMS is public I might have a problem here?

  • It appears as if you are asking very specific details about implementing a mechanism for loading extensions. This can look very different in different languages. Some languages have libraries that support this out of the box. I'd suggest that you include more details about the technology you are using. – Manfred Feb 26 '12 at 0:20
  • I have to echo @John - for example if you're using .NET there's a fairly obvious answer (MEF) and some other possibilities (applies to more than .NET) if using containers to resolve dependencies. – Murph Feb 27 '12 at 13:19
  • I am using PHP. – Ella Feb 27 '12 at 16:06

"(obviously on first install of the CMS there will be some extensions active by default)."

Isn't this the answer? Your app has to have some core functionality before it's extended. A mechanism to retain the configured extensions and to discover or add additional extensions is essential. If you want to maintain the ability to replace both the data store and the process which loads extensions with other extensions, you will still need that bootstrap extension loader as part of your base functionality.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.