mentalswitch (mentalswitch) wrote in mercurymvc,

My new PHP Framework

After twelve years of ColdFusion development I have recently embraced PHP.  It's not that I've lost faith in CF but the economic reality is that I will have an easier time getting work as a PHP developer than a CF one.  To that end I have decided to pretty much abandon my CF KungFu platform and rewrite it in PHP.  This has been complicated by the fact that PHP has neither an application scope for variables nor the ability to load functions into a global and persistent memory space.  It's taken some slight of hand but I have put together a system that doesn't waste any overhead loading anything it doesn't need.

I call this system Mercury.

So far I have built the following:

  • Core Mercury framework
  • MySQL script to build initial tables (built using MySQL Workbench)
  • MySQL script to populate initial data
  • Flexible security and permission structure
  • The ability for modules to hook into other modules without having to at all rewrite the source module that is being hooked into.  This is kind of like one module 'extending' another.
  • A content management system with WYSIWYG controls and file browser
  • An admin system that adapts to the modules that you want to use
  • An MVC model that separates form from functions
  • Default presentation files that can be customized on a per-site basis with almost zero processing expense
  • The ability to have a core repository of code for multiple sites on the server yet easily control which modules a given site has
  • The ability to run distinct databases per site (this deviates from the WebKit model.  It will mean more overhead when changes happen but will give us the ability to much more easily migrate sites as needed)
  • A ton of useful functions I can leverage at will
  • A level of database-software abstraction

Last night at pool I added the ability to easily update permissions as modules get updates and need to push new permissions into the system.  Along with that there is a summary for each permission to let you see who it has been assigned to on a login, group or user type basis.

Today I added a switch to enable or disable modules.  This mostly comes into play on the hook level but since the admin system is built on that then it means that a disabled module won't show up in the admin, nor can it be summoned anywhere within a site that calls the functionality by hooks.
  • Post a new comment


    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded