PHP Light-weight Web Application Requirements

A lot of web designers are using complete CMS systems like Drupal and Joomla as foundations for custom PHP/MySQL web apps that are not really CMS apps.

The main disadvantage with doing that is that they are relatively large codebases, and each site developed that way ends up using (and hosting) a different version of the CMS.

It would be nice to have a light-weight alternative that is more app framework-oriented.

Some of the items I would expect in any modern PHP webapp:

  • PHP 5.2+ support
  • Free and Open Source
  • horizontally scalable, same as raw PHP
  • filters extension support
  • ORM and non-ORM database queries
  • memcached support
  • Work in all browsers
  • authenticated sessions with salted, multiple-round MD5 and SHA-1 hashing of password
  • Relative links for installation multiple times on same server, or on different servers (dev/stage/prod)
  • Reasonably secure sessions – hard to steal a login cookie, no private data in cookie
  • App should degrade but still mostly work without JavaScript
  • 100% input filtering and validation
  • No XSS or XSRF problems
  • No SQL injection problems
  • AJAX support (MooTools provides light-weight AJAX support – MIT licensed) or maybe jquery (MIT or GPL)
  • Reporting with scalable/resizable/emailable graphs like OpenFlash ( with OFCGWT – LGPL licensed)
  • I18n support (locales, UTF-8, admin emails.)
  • No database-specific APIs like mysql_*()
  • Amazon EC2, S3 and EBS support (like Zend_Service_Amazon_Ec2)
  • Search widget built-in for SOLR or Sphinx
  • Help widget built-in
  • App is always aware of locale and does the right thing
  • Not XHTML
  • End-user can do language translation, similar to Facebook.com
  • Content is easily shareable
  • TinyURLs available for content links
  • Replication-aware and resistant.
  • Retargetable output display formats.

For business webapps:

  • Subaccounts
  • Payment processing

For the Japanese market:

  • Login/logout session history for auditing
  • Separate CSS for Japanese locale (mostly to reduce font size)
  • Maru (circle) instead of checkmark.
  • Somebody Japanese to test it.

Please leave a comment if you have any thoughts.

Some popular existing PHP frameworks:

CakePHP + Zend Framework Impressions
Drake: CakePHP Drupal Module

PHP PEAR
Feb. 2008: Notes on Choosing a PHP Framework: A Comparison of CakePHP and the Zend Framework
2006: Rasmus Lerdorf – The no-framework PHP MVC framework
ringsworld.com: PHP input-filter

Leave a Reply