Library Organisation in Seagull

Introduction

The library classes used in the Seagull framework basically fall into the following groups:

  • Controllers - workflow
  • Core - general
  • Tasks - mostly used to do setup tasks
  • Filters - modify the request and response objects as they pass through the filter chain
  • PEAR libs - general

Developing with Seagull involves building modules that include one or more manager classes to implement business logic. Building managers is eased by using the module creator wizard and above-listed library resources. For a typical project you will probably only ever use the Controllers, Core and PEAR libs.

The following sections explain the library groupings and describe the basically functionality of each class. This will be of more interest to advanced devs, beginners need not worry as default task and filters are all you'll need for basic web apps.

Controller Classes

The controller classes manage application workflow, several examples are provided but it's very easy to write your own.

Class name Availability Methods Description
SGL_FrontController default * run The FrontController is used to organise workflow for particular application types. You will probably use similar controllers for each application you build, although workflow can be easily customised. See the unit test controller versus the Seagull one for ideas on how to customise.
SGL_Manager default * validate
* process
* display
* maintainState
The Manager class is an app controller, it sets out generic validate/process/display workflow.
SGL_Wizard default * validate
* process
* display
* maintainState
The Wizard class is a specialisation of the Manager class, use it to create wizard workflows in your applications.

Core Classes

The core classes are what you use in your managers to manipulate system, application and user resources. Availability refers to whether you need to include the class or not, anything labelled as 'default' is available within the application scope, like default classes in, eg, java.lang. 'Requirable' libs need to be included.

Class name Availability Methods Description
SGL default Provides a set of static utility methods used by most modules
SGL_Request default Wraps all $_GET $_POST $_FILES arrays into a Request object, provides a number of filtering methods
SGL_Output default The SGL_Ouput class is known as a TemplateHelper in other contexts, it wraps methods used by the template engine to transform the data into, eg, html.
SGL_Config default Config file parsing and handling, acts as a registry for config data
SGL_Registry default Generic data storage object, referred to as $input. Holds references to Url, Request and Config singletons
SGL_DB default Mostly used as a DB resource singleton, also provides dsn building method
SGL_ServiceLocator default Facilitates switching resources at runtime, eg, so a test database resource can be swapped in for the dev one
SGL_Url default Provides URI related functionality, derived from Net_URL and uses a parser strategy
SGL_HTTP default Provides HTTP functionality including redirects
SGL_Session default Handles session management, most methods are static
SGL_String default Various string helper methods
SGL_Array default Provides array manipulation methods
SGL_Date default Provides various date formatting methods
SGL_Inflector default Performs transformations on resource names, ie, URIs, classes, methods, variables
SGL_Delegator default PHP 4/5 compatible class for aggregating objects
SGL_Util default Various utility methods
SGL_Category requirable Wrapper to SGL_NestedSet, used to manipulate Categories
SGL_Emailer requirable Utility class that wraps PEAR::Mail, provides convenience methods for sending HTML emails
SGL_TaskRunner requirable Used for building and running a task list
SGL_NestedSet requirable A lightweight wrapper to PEAR DB_NestedSet that bypasses DB_NestedSet for most methods
SGL_Download requirable Wrapper around PEAR HTTP/Download class to workaround some limits of that class
SGL_Item requirable Acts as a wrapped for content objects
SGL_Sql requirable Provides SQL schema and data parsing/executing methods
SGL_Install requirable Provides various static methods required for install routine

Filters

All filters are optional, configurable, and can be ordered according to need.

The process tasks below implement the Intercepting Filter pattern, each filter must extend SGL_DecorateProcess and acts as a filter pass on the Request object.

Class name Availability Group Description
SGL_Process_Init default pre-process
SGL_Process_AuthenticateRequest default pre-process
SGL_Process_BuildHeaders default pre-process
SGL_Process_CreateSession default pre-process
SGL_Process_DetectBlackListing default pre-process
SGL_Process_DetectDebug default pre-process
SGL_Process_DiscoverClientOs default pre-process
SGL_Process_ResolveManager default pre-process
SGL_Process_SetupLangSupport default pre-process
SGL_Process_SetupLocale default pre-process
SGL_Process_SetupPerms default pre-process
SGL_MainProcess default main process
SGL_PostProcess default post-process
SGL_Process_SetupNavigation default post-process
SGL_Process_SetupBlocks default post-process
SGL_Process_SetupWysiwyg default post-process
SGL_Process_GetPerformanceInfo default post-process

The install tasks below are simple units of work that can optionally take an argument, ie $data. Each must extend SGL_Task or a specialisation of it.

Tasks

Class name Availability Group Description
SGL_EnvSummaryTask default install
SGL_Task_GetFilesystemInfo default install
SGL_Task_GetLoadedModules default install
SGL_Task_GetPearInfo default install
SGL_Task_GetPhpEnv default install
SGL_Task_GetPhpIniValues default install
SGL_Task_SetupPaths default install
SGL_Task_SetupConstants default install
SGL_Task_SetBaseUrl default install
SGL_Task_CreateConfig default install
SGL_UpdateHtmlTask default install
SGL_Task_CreateTables default install
SGL_Task_LoadDefaultData default install
SGL_Task_CreateConstraints default install
SGL_Task_VerifyDbSetup default install
SGL_Task_CreateFileSystem default install
SGL_Task_CreateDataObjectEntities default install
SGL_Task_SyncSequences default install
SGL_Task_CreateAdminUser default install
SGL_Task_InstallerCleanup default install

Interfaces and Abstract Classes

  • SGL_Manager
  • SGL_Observer
  • SGL_Observable
  • SGL_View
  • SGL_Task
  • SGL_OutputRendererStrategy
  • SGL_ProcessRequest
  • SGL_DecorateProcess