Seagull PHP Framework
Encyclopedia
Seagull PHP Framework (Seagull) is an OOP
PHP
software framework
for building web
, command line and GUI applications. Seagull uses Model-view-controller
design pattern. Many popular PHP applications are integrated within the project, as are various templating engines, PEAR libs, testing tools and managed library code.
design pattern that take care of permissions, authentication, sessions, i/o and database abstraction layer
. Each generalised area of functionality comes in the form of a module.
Most task-specific functionality comes from libraries, quite often from PEAR, that can be independently updated when upgrades/improvements are available
Each object in the application (Member, Group, Property, Document, Article, etc) is represented as an entity, developers are provided with tools to quickly prototype entities so that skeleton classes are created and updated automatically
Seagull works identically whether or not end users have cookies enabled in their browsers.
Any module in the application can be set to require authentication by setting the 'requiresAuth' flag to true on a per-screen basis. Once users are authenticated, fine grained permissions can be controlled by testing for role membership.
A large part of the codebase is covered by unit and web tests.
Object-oriented programming
Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,...
PHP
PHP
PHP is a general-purpose server-side scripting language originally designed for web development to produce dynamic web pages. For this purpose, PHP code is embedded into the HTML source document and interpreted by a web server with a PHP processor module, which generates the web page document...
software framework
Software framework
In computer programming, a software framework is an abstraction in which software providing generic functionality can be selectively changed by user code, thus providing application specific software...
for building web
Web application framework
A web application framework is a software framework that is designed to support the development of dynamic websites, web applications and web services. The framework aims to alleviate the overhead associated with common activities performed in Web development...
, command line and GUI applications. Seagull uses Model-view-controller
Model-view-controller
Model–view–controller is a software architecture, currently considered an architectural pattern used in software engineering. The pattern isolates "domain logic" from the user interface , permitting independent development, testing and maintenance of each .Model View Controller...
design pattern. Many popular PHP applications are integrated within the project, as are various templating engines, PEAR libs, testing tools and managed library code.
Features
Seagull offers the following key features:- PHP 4/5 compatible
- compact core framework with complete modules in package
- Model-view-controllerModel-view-controllerModel–view–controller is a software architecture, currently considered an architectural pattern used in software engineering. The pattern isolates "domain logic" from the user interface , permitting independent development, testing and maintenance of each .Model View Controller...
pattern - performance conscious design
- multiple input and output formats
- integrated object-relational mapper for rapid application developmentRapid application developmentRapid application development is a software development methodology that uses minimal planning in favor of rapid prototyping. The "planning" of software developed using RAD is interleaved with writing the software itself...
- loosely coupled components, use template engine of your choice, output to multiple devices or CLI
- caching
- localization. Translated into more than 21 world languages.
- integrated PEAR libraries
Modularity
Seagull is an OOP application with an emphasis on modularity. The framework itself consists of a set of base classes organised according to the MVCModel-view-controller
Model–view–controller is a software architecture, currently considered an architectural pattern used in software engineering. The pattern isolates "domain logic" from the user interface , permitting independent development, testing and maintenance of each .Model View Controller...
design pattern that take care of permissions, authentication, sessions, i/o and database abstraction layer
Database abstraction layer
A database abstraction layer is an application programming interface which unifies the communication between a computer application and databases such as SQL Server, DB2, MySQL, PostgreSQL, Oracle or SQLite...
. Each generalised area of functionality comes in the form of a module.
Most task-specific functionality comes from libraries, quite often from PEAR, that can be independently updated when upgrades/improvements are available
Each object in the application (Member, Group, Property, Document, Article, etc) is represented as an entity, developers are provided with tools to quickly prototype entities so that skeleton classes are created and updated automatically
Data Validation
All input data to the application is filtered and validated before any processing takes place. Filters appropriate to the input mechanism are invoked before subsequent validation tests are run. In the case of HTTP input, all request data is first stripped of javascript and leading/trailing whitespace.Authentication and Authorisation
Seagull uses standard PHP sessions which propagate persistence of user data using cookies by default. Both database and file-based persistence are supported. The PHP engine automatically detects whether the client returns session cookies, if not the session is propagated in the URL. Anti session-hijacking measures are in place to ensure the user session can not be compromised.Seagull works identically whether or not end users have cookies enabled in their browsers.
Any module in the application can be set to require authentication by setting the 'requiresAuth' flag to true on a per-screen basis. Once users are authenticated, fine grained permissions can be controlled by testing for role membership.
Quality Control
All contributor features and bugfixes are submitted as patches which are subject to peer review and if deemed valid, applied by the project maintainer.A large part of the codebase is covered by unit and web tests.
Coding Standards
All the code in Seagull follows the consistent style set out in the coding standards document included in the root of each distribution. The standard follows PEAR coding standards very closely which is essentially a reiteration of the K & R guidelines from the original C Programming Language (1978)Standards Compliant
Seagull supports XHTML 1.1, CSS 2.0, RSS 1.0, and 2.0, and conditional GET for caching RSS feeds on the client-side.External links
- Official website of Seagull PHP Framework
- Seagull Wiki Documentation
- Taking a look at ten different PHP frameworks Seagull in framework comparison
- PHP frameworks comparison (December 2006)
- Seagull in php|architect
- PHPHacks frameworks comparison includes Seagull