Categorized | News

PHPseagull 0.1 Released

Posted on 20 May 2003 by Demian Turner


PHPseagull is a PHP CMS/framework I’ve been working on for a while.  It helps developers manage basic application tasks like:

  • authentication
  • authorisation
  • templating
  • workflow
  • rapid application development
  • building easy-to-customise modularised components
  • user/group management
  • content management
  • document management
  • category management
  • messaging
  • error handling
  • alerts

If you’re interested in contributing to the project, or have any feedback, I’d love to hear from you.

Bookmark and Share

5 Comments For This Post

  1. cauliflo Says:

    Hey quite a good thing out there!

    I\’m actually finishing a similar project for my mission in a french compagny.

    The main features are quite the same :
    – heavy use of pear (DB_Dataobject, excellent!, MDB, QuickForm, HTML_Table, HTML_Tree, Log, Benchmark, Config, …)
    – MVC model (in fact double MVC, first level for the page, second level for each block declared in the page (using a home-made Smarty function)
    – modular design (a shell script which can duplicate an existing module for implementing a close new one, … or even quite far 🙂
    – struts like classes and design patterns
    – and many of the features you mentionned…

    the main differences are :
    – using Smarty for templating (with specific functions for the framework and caching)
    – an extended Data_Object using cache (and synchronising clearing of both smarty and Data_Object cache)
    – xml config file, especially for declaring which model and template to use for a specific action
    – use a home made texthtml element for quickform which use an external wysiwig editor : fckeditor

    but indeed, PHPseagull is a really great work.

    Happy to see these way of programming are shared!!!

    As soon as my project is finished, i\’ll try to :
    – translate it in english, only in french (shame on me 🙂
    – put it opensource on the web after convincing my chief

    or just try to help you on PHPseagull…

  2. YellowDuck Says:

    Is there any support for multilingual sites in PHPseagull? Let\’s say you want to use PHPseagull in a website project that has to be available in Dutch, English and French, how would you take care of that?


  3. demian Says:

    yes PHPseagull has multilingual support, see here for a brief explanation:

    basically you can pass a language flag to any url in the app, like this:


    and that gets saved to the session and controls the language output to the templates. Use the Output::translate() method to translate all your strings in your code, see <install-dir>/lang for a few examples.

    Currently I haven\’t got locale/timezone support working yet but that will be fixed shortly.



  4. demian Says:

    Hi cauliflo,

    thanks for the positive feedback, you\’re project sounds interesting – I\’m looking forward to seeing the code, in particular your caching solution. Caching is a fairly complex topic and of course PHPseagull could benefit from DB and file caches. I\’m curious to see if MySQL 4.1 built-in caching makes a big difference. Regarding file caching, the standard solutions really clutter the code, I\’m looking at sytem level options for big installs.

    So far PHPseagull runs a lot faster than Geeklog (what PHPkitchen runs on) though, which surprises me as the latter is mostly procedural code.

    At the last PHP conf. in amsterdam one of the chaps presented the SRM solution which is Derick Rethan\’s crack at an application server for PHP, a la Websphere or Broadvision.

    This is a key element in my opinion, and with the app loading all the classes into RAM only once per server bootup a dramatic speed improvement should result.

  5. cauliflo Says:

    for caching, i use the cache form Smarty and an extended Data_Objet class using PEAR::Cache.

    When updating records in a table (insert, update, delete), i clear the cache related to the specific object (i.e. table). as i use groups both in smarty and CachedData_Object (my extended class), i just have to clear the cache for the group and all the cache is cleared (including the template cache files)

    example :
    for a news section i use a NEWS cache group for smarty and CachedDataObject. So when i do an update in the DBO_NEWS object, it also clears the smarty cache files.

    within my action classes (struts like) i use an initialisation method which determine the cache id considering the context (element id, date, …). this way, not only the smarty template is not parsed, but the main part of the model is not executed (the process method, like in struts or PHPseagull 🙂

    SRM is indeed a very interesting project. But in my mission, this kind of architecture is not compatible with the vision of PHP (they want J2EE apps for this 🙁 ).
    otherwise, you can use SHM for storing data direcly in memory but this has some drawbacks on heavy loads…

    i think that a good file cahing policy is good enough for wide needs, in fact for my own needs ;-)…

Leave a Reply



Demian Turner's currently-reading book recommendations, reviews, favorite quotes, book clubs, book trivia, book lists



PHPkitchen recommends you also check out the following sites :

Accounting for Small Businesses

FreeAgent sign-up