Anzeige
Anzeige
UX & Design

Ein Framework für alle Fälle: Seagull

Das Sprichwort „das Rad nicht neu erfinden“ wird gern in Verbindung mit Frameworks bemüht, bieten sie doch zugleich Unterstützung für’s RAD (Rapid Development). Gemischt mit Flexibilität und hoher Qualität der verwendeten Komponenten entstehen so in kürzester Zeit mit wenig Aufwand anspruchsvolle Webapplikationen.

4 Min.
Artikel merken
Anzeige
Anzeige

Das seit 2001 von Demian Turner und einer internationalen Community entwickelte Seagull PHP-Framework ist eines dieser Baukästen. Es eignet sich zwar auch dafür, kleine Webseiten mit dem mitgelieferten CMS abzubilden, sein ganzes Können spielt es aber erst bei größeren Projekten aus.

Aufbau

Anzeige
Anzeige

Seagull ist ein objektorientiertes Framework, das verschiedene Patterns wie MVC oder Validate/Process/Display geschickt miteinander verbindet. Es läuft sowohl unter PHP4 als auch unter PHP5 und kann mit verschiedenen Datenbanken wie MySQL, PostgresSQL und Oracle zusammenarbeiten.

Das Framework basiert auf bekannten und hochqualitativen Komponenten von PEAR. Einzelne PEAR-Module können per Weboberfläche von PEAR oder pearified [1] nachinstalliert werden.

Anzeige
Anzeige

Ständig benötigte Funktionen werden in eigenen Klassen mit dem Präfix „SGL_“ gekapselt. So kümmert sich die Klasse „SGL_DB“ um die Datenbankverbindung und stellt auch Funktionen für den komfortablen Aufruf der Klasse „PEAR::Pager“ zur Verfügung.

Anzeige
Anzeige

Teile der Applikation werden wiederum in Modulen geordnet. Diese bestehen aus Managerklassen, Datenbankschematas, Templates und Sprachdateien für die Übersetzung der Benutzerschnittstelle. Bei der einfachen Erstellung des Gerüsts für ein neues Modul oder einer Klasse hilft der integrierte Modulgenerator. Als Templatesystem kommt Flexy [2] zum Einsatz. Bei Bedarf ist es auch möglich, andere Templateengines wie Smarty oder Savant problemlos einzubinden. Je nach Modul kann dabei HTML, XML und jedes andere Format ausgegeben werden.

Alles klar?

Ein Framework soll den Entwickler bei der Arbeit unterstützen. Deshalb wird bei Seagull großer Wert auf die klare und saubere Struktur des Codes gelegt. Der komplette Quelltext entspricht den PEAR Coding Standards [3].

Anzeige
Anzeige

Durch intelligente Verwendung verschiedener Programmierpatterns wie Strategy oder Observer sind die mitgelieferten Module ohne Änderungen im Code schon sehr flexibel. So können frisch registrierte Benutzer bei Bedarf auch automatisch bei einer FUDforum- oder Gallery2-Installation angemeldet werden.

Wer auf Testdriven Development nicht verzichten will, kann den Modulen auch Tests hinzufügen und nach Änderungen im Code vom TestRunner anzeigen lassen, ob noch alles wie geplant funktioniert.

Bereit für große Aufgaben

Das Seagull PHP-Framework bringt alle wichtigen Bausteine für anspruchsvolle Anwendungen mit. Für schnell geladene Webseiten sorgt das integrierte Caching auf Basis von „PEAR::Cache_Lite“.

Anzeige
Anzeige

Natürlich ist man nicht nur auf die HTML-Ausgabe beschränkt, auch andere Schnittstellen wie SOAP lassen sich leicht integrieren. Und mit dem Framework programmierte Wartungsjobs können über die Kommandozeile bequem und automatisch per cron erledigt werden.

Web 2.0 ist in aller Munde, und so ist es auch wichtig, dass AJAX ohne großen Aufwand integriert werden kann. Das Seagull-Framework liefert zum Beispiel Scriptaculous und die bekannte Prototype-Bibliothek standardmäßig mit, aber es kann jede beliebige AJAX-Bibliothek wie dojo oder PEAR::HTML_AJAX eingebunden werden. Um die Bibliothek des Vertrauens zu benutzen, muss man lediglich in der Display-Methode des Managers mit folgendem Aufruf dem Output-Objekt den Pfad und den Dateinamen zur Bibliothek übergeben:

PHP
$output->addJavascriptFile('js/scriptaculous/lib/prototype.js');

Listing 1

Das Modul, das AJAX nutzen soll, erhält eine AjaxProvider-Klasse, die für den Datenaustausch zuständig ist:

Anzeige
Anzeige
PHP
require_once SGL_CORE_DIR . '/AjaxProvider.php';
class FooAjaxProvider extends SGL_AjaxProvider
{
	/**
		* Constructor
		*/
		function FooAjaxProvider()
		{
			SGL::logMessage(null, PEAR_LOG_DEBUG);
			parent::SGL_AjaxProvider();
		}
}

Listing 2

In dieser Klasse muss jetzt noch die Funktionalität implementiert werden:

PHP
function fooBar()
{
	$this->responseFormat = SGL_RESPONSEFORMAT_HTML;
	return 'foo';
}

Listing 3

Hier wird als erstes das Rückgabeformat definiert. Bei der Verarbeitung der AJAX-Antwort wird der passende Header gesendet und die JSON-Antwort automatisch kodiert.

Um jetzt eine AJAX-Funktion asynchron auszuführen, muss der folgende JavaScript-Aufruf im Template erfolgen:

Anzeige
Anzeige
JAVASCRIPT
new Ajax.Request( 
	makeUrl({module: "foo", action: "fooBar"}), 
	{options}
);

Listing 4

Mehr Informationen gibt es in der Onlinedokumentation [4].

Fazit

Wie jede Software ist auch Seagull nicht perfekt. So sind manche Module noch nicht für mehrsprachige Seiten geeignet und die Dokumentation ist nur auf Englisch verfügbar. Die Liste der verfügbaren Module und Erweiterungen ist auch noch relativ kurz. Wer jedoch mit diesen Einschränkungen leben kann, bekommt dafür ein stabiles und vor allem flexibles Framework für alle Lebenslagen an die Hand – von der einfachen Kundenwebsite bis hin zur großen Applikation.

Technische Anforderungen
  • PHP 4 > 4.3 oder PHP5
  • Apache oder IIS Webserver
  • MySQL, PostgresSQL oder Oracle
Showcases
  • Tourismusplattform über den Weltkulturerbeort Hallstatt: www.hallstatt.net
  • Auktionsplattform für Immobilien: www.home-trader.de
Mehr zu diesem Thema
Fast fertig!

Bitte klicke auf den Link in der Bestätigungsmail, um deine Anmeldung abzuschließen.

Du willst noch weitere Infos zum Newsletter? Jetzt mehr erfahren

Anzeige
Anzeige
Schreib den ersten Kommentar!
Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!
Hallo und herzlich willkommen bei t3n!

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team von mehr als 75 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Schon jetzt und im Namen der gesamten t3n-Crew: vielen Dank für deine Unterstützung! 🙌

Deine t3n-Crew

Anleitung zur Deaktivierung
Artikel merken

Bitte melde dich an, um diesen Artikel in deiner persönlichen Merkliste auf t3n zu speichern.

Jetzt registrieren und merken

Du hast schon einen t3n-Account? Hier anmelden

oder
Auf Mastodon teilen

Gib die URL deiner Mastodon-Instanz ein, um den Artikel zu teilen.

Anzeige
Anzeige