Ich habe mich in letzter Zeit etwas nach Frameworks für die Applikationsentwicklung in PHP umgesehen. Hintergrund ist die anstehende Entwicklung einer etwas grösseren Anwendung. Das Framework sollte den MVC-Pattern umsetzen, eventuell Hilfestellungen bei Routine-Tasks geben, aktuell sein (weiterentwickelt werden) und vor allem sollte die verfügbare Dokumentation umfangreich sein.

Nach kurzer Zeit musste ich feststellen, dass die Auswahl sehr gross und unübersichtlich ist. Bisher habe ich mich nicht entschieden. Vielleicht hat der eine odere andere Leser Erfahrungen mit einem dieser Frameworks und möchte sie mit mir teilen? Ausserdem mag ich mit diesem Überblick die Leute unterstützen, die vor einer Ähnlichen Entscheidung stehen.

Es handelt sich hierbei wirklich nur um einen Überblick und keine Bewertung. Es werden die mir bekannten Frameworks mit der Beschreibung von ihrer Webseite verlinkt.

Prado (Das mit dem lustigen Pilz 😉)

PRADO is a component-based and event-driven framework for rapid Web programming in PHP 5. PRADO reconceptualizes Web application development in terms of components, events and properties instead of procedures, URLs and query parameters.

A PRADO component is a combination of a specification file (in XML), an HTML template and a PHP class. PRADO components are combined together to form larger components or complete PRADO pages.

Developing PRADO Web applications mainly involves instantiating prebuilt and application-specific component types, configuring them by setting their properties, responding to their events by writing handler functions, and composing them into application tasks.

binarycloud is a web application framework for the PHP language. It provides a set of services that are frequently used when writing web applications and helps to improve reuseability by providing a modular application infrastructure.

The centerpiece of this framework is the presentation system (Node Tree), which enforces a strict separation of your business logic from your presentation logic. The Node tree uses a unique, hierarchical scale free object design that is extremely powerful because applications can be arbitrarily infinitely nested. The Smarty template engine is the default rendering layer and is tightly integrated into binarycloud.

Just another framework? – there aren’t many frameworks that have millions of dollars running through them, installations at fortune 500 companies and brutal production runs in load balanced installations. If you need serious tools, this is the place.

Mojavi is an open-source MVC (model-view-controller) php framework, licensed under the LGPL. Developing with Mojavi php framework enables you to easily divide your web application into tiers, allowing for independent custom web application development.

Features
Modular Design
Filter Chains
Action Chains
Customizable User Containers
Parameter Validation
Validator Library
Built-in Authentication

What is Cake?
Cake is a rapid development framework for PHP which uses commonly known design patterns like ActiveRecord, Association Data Mapping, Front Controller and MVC. Our primary goal is to provide a structured framework that enables PHP users at all levels to rapidly develop robust web applications, without any loss to flexibility.

Why use Cake?
Cake takes the monotony out of the development process, allowing you to get on with what really matters: creating a secure, stable application quickly with code that can be maintained easily.

Regardless of your application’s goals, many developers end up re-coding a number of foundational elements: database objects, connecting database objects to the database (and each other), forms, form validation, and more. If you are tired of maintaining old applications because the code has turned into spaghetti, then try Cake. It is a lot sweeter.

Using Cake allows you to get started with your application right now. It handles database interactions, associations, debugging, templating, and even does some handy dandy things like pretty URLs and access control lists.

Tired of repeating yourself? Ever copied and pasted your code? Want to get your applications into production quicker? Cake is for you!

Key Features
compatibile with PHP4 and PHP5
supplies integrated CRUD for database and simplified querying
request dispatcher with good looking, custom URLs
fast, flexible templating (PHP syntax with helper methods)
works from any website subdirectory, with little to no Apache configuration involved

BlueShoes is a comprehensive application framework and content management system. It is written in the widely used web-scripting language PHP.

BlueShoes offers excellent support for the popular MySQL database as well as support for Oracle and MSSQL.

BlueShoes provides developers with real-world solutions for common system components such as User Management, Session Handling, Closed User Groups, Exception Handling and Logging, Object Persisting as well as Form Building and Handling.

BlueShoes‘ extensive feature set can also simplify or eliminate many common, and often tedious, programming tasks.

Welcome to the Seagull Framework project, created and maintained by Demian Turner and the Seagull community. Seagull is an object oriented framework written in PHP that focuses on best practices, clean code and reusable components. The core libraries are free for you to use in your own projects and a number of modules developed by the community are also available. The design goals of the project play an important role in the code’s direction as does Open Source philosophy. Since it’s the code that sells a framework, please take a look at some code examples to see what’s on offer.

php.MVC

php.MVC implements the Model-View-Controller (MVC) design pattern, and encourages application design based on the Model 2 paradigm. This design model allows the Web page or other contents (View) to be mostly separated from the internal application code (Controller/Model), making it easier for designers and programmers to focus on their respective areas of expertise.

The framework provides a single entry point Controller. The Controller is responsible for allocating HTTP requests to the appropriate Action handler (Model) based on configuration mappings.

The Model contains the business logic for the application. The Controller then forwards the request to the appropriate View component, which is usually implemented using a combination of HTML with PHP tags in the form of templates. The resulting contents are returned to the client browser, or via another protocol such as SMTP.

php.MVC is a PHP port of Jakarta Struts. It currently supports many features of Struts, including declarative application configuration via the XML digester. For example, mappings from the various Action business logic components to appropriate results pages can be specified declaratively in the XML configuration file.

Solar is a „simple object library and application repository“ for PHP5. That is, Solar is a combined class library, component suite, and application development framework.

Solar provides simple, easy-to-comprehend classes and components for the common aspects of web-based rapid application development, all under the LGPL.

Solar is designed for developers who intend to distribute their applications to the whole world. This means the database driver functions work exactly the same way for each supported database. It also means that localization support is built in from the start. Additionally, Solar comes with convenience functions that help you to secure your application against common expoits (such as cross-site scripting from URL tampering).

Phrame is a web development platform for PHP based on the design of Jakarta Struts. Phrame provides your basic Model-View-Controller architecture, and also takes a step further adding standard components such as HashMap, ArrayList?, Stack, ListIterator?, Object and more… All of this functionality was designed to be as easy as possible to use by developers and designers.

Phrame encourages application architectures based on the „Model2“ approach, a variation of the classic Model-View-Controller (MVC) design paradigm. Phrame provides its own Controller component and integrates with other technologies to provide the Model and the View. For the Model, Phrame can interact with any standard data access technology, including Pear DB/DataObjects?, and ADODB. For the View, Phrame works well with PHP, Smarty Templates, XSLT, Flash MX, and other presentation systems.

Phrame provides an extensible development environment for your application, based on published standards and proven design patterns. Phrame was originally sponsored by the Software Development department of Texas Tech University and is released under the LGPL.

WASP

What is WASP?
WASP is a powerful web application framework built on PHP 5. WASP strives to allow web developers to make great applications with more fun and less code, but in the familiar playground of PHP.

Why use WASP?
WASP was written from the ground up in pure Object Oriented PHP5. WASP fully utilizes all of the enhancements made to PHP in version 5.

This means you use less code to create enterprise class applications.
This isn’t your hacker’s PHP.

Medusa is a PHP implementation of an MVC framework based on different good concepts of the Model View Controller design pattern. Taking most of the patterns that may perfectly be suited for web applications, Medusa is aimed at being the framework implementing the main core for small to medium web applications.

With Medusa, it will be very convenient to hard code your application’s business logic (Models) and keep them separate from your main template files (Views). The best thing about Medusa is when you need to reuse Models, all you have to do is just drop the Model file into your new application code repository and add it to medusa through the bootstrap file, only bringing about the least changes like DB connections or globally used variables.

Biscuit :: PHP MVC Framework
This is the webpage for Biscuit. Biscuit was originally written by Ben Nolan – but is mostly maintained by the friendly folks on the PHP Biscuit Google Group.

Support
If you are new to biscuit – you should work through the tutorial. Biscuit is based on Ruby on Rails, so you might find the documentation at that site helpful.

The Qcodo Development Framework is an open-source PHP 5 framework that focuses on freeing developers from unnecessary tedious, mundane coding.

The result is that developers can do what they do best: focus on implementing functionality and usability, improving performance and ensuring security.

It is a completely object-oriented framework that takes the best of PHP and provides a truly rapid application development platform. Initial prototypes roll out in minutes instead of hours. Iterations come around in hours instead of days (or even weeks). As projects iterate into more cohesive solutions, the framework allows developers to take prototypes to the next level by providing the capability of bringing the application maturity.

The framework consists of two main components: the Code Generator and Qforms (see below for more). While the framework was designed to support the complexities of large projects, it is an incredibly lightweight framework which can be utilized by small and large web applications alike.

Based on the best practices of web development, thoroughly tried on several active websites, symfony aims to speed up the creation and maintenance of web applications, and to replace the repetitive coding tasks by power, control and pleasure.

If you have been looking for a Rails/Django-like framework for PHP projects with features such as:

simple templating and helpers
cache management
multiple environments support
deployment management
scaffolding
smart URLs
multilingual and I18N support
object model and MVC separation
Ajax support
…where all elements work seamlessly together, then symfony is made for you.

Studs MVC Framework+

Studs began simply as a port of Apache’s Jakarta Struts MVC Framework to PHP, though it has turned out to be decidedly more. I started this project to study the internals of J2EE web applications and then to bring these design concepts into the PHP environment. Now it is time the see if the code lives up to this challenge.

The primary goal of this project, apart from being a road tested implementation of the MVC pattern for PHP, is to provide a learning platform for developers looking to give J2EE a try, while at the same time providing a comfortable PHP environment for those people familiar with Java Servlet technology. One way Studs manages this neutral ground is by relying on many of the standard deployment descriptors used in Java Servlets and Struts, including such files as web.xml, struts-config.xml and taglib.tld. By achiving this level of compatibility, existing tools can be leveraged to help develop applications in this environment.

If you are web developer and are fed up with the spaghetti code you have come to the right place. Php On Trax(formerly Php On Rails) is a web-application and persistance framework that is based on Ruby on Rails and includes everything needed to create database-backed web-applications according to the Model-View-Control pattern of separation. This pattern splits the view (also called the presentation) into „dumb“ templates that are primarily responsible for inserting pre-build data in between HTML tags. The model contains the „smart“ domain objects (such as Account, Product, Person, Post) that holds all the business logic and knows how to persist themselves to a database. The controller handles the incoming requests (such as Save New Account, Update Product, Show Post) by manipulating the model and directing data to the view.

In Trax, the model is handled by what’s called a object-relational mapping layer entitled Active Record. This layer allows you to present the data from database rows as objects and embellish these data objects with business logic methods.

SMART3 is a modular designed PHP5 framework that helps developers to organize their code in a clean, well structured and scalable way. The framework package size without any module is small (~70kb).

It wasn’t the goal to build a framework, which follows the MVC pattern. Nevertheless you can identify this pattern in SMART3. The ModelViewController outline is there. Futhermore SMART3 make use of a ORM (Object Relational Mapping) like structure when communicating to action classes.

The base framework has no build in high level functionalities. An application based on this framework becomes alive through modules. Smart3 is delivered with a couple of default modules through which it is possible to build web projects and to learn how it works. This webpage is entierly build up on SMART3. The modules require mysql 4.1.

In SMART3 a request is related to a view, which holds the contact to as many different module action classes as needed to proceed. There is a loose coupling between the view and the actions (model). The benefit of this mechanism is that it is easier to build a view, that interacts with many different module items. In some MVC frameworks, solving such problems isn’t evident.

In SMART3 you have the choice between 2 template engines for your projects. 1. PHP (default) and 2. Smarty. If your are not convenient with the build in template engines you can use your prefered engine. This also counts for a database layer. SMART3 isn’t fixed to a specific DB layer. This is the choice of the module designer to include the required layer.

The SMART3 core framework is released under the GNU LESSER GENERAL PUBLIC LICENSE.

What is rwfPHP?
The rwfPHP framework is a set of Object Oriented classes that allows development of Object Oriented Event driven web applications.

The main goals of rwfPHP is to speed development through the use of a simple event driven model, reuse of code through web controls, and separation of presentation and logic layers through the use of templates.

In terms of MVC, rwfPHP has a FrontController, Model level is provide by using Web Controls and the View is completed by use of Smarty Templates or PHP.

Model – Code Reuse with Web Controls
With major frameworks today the classes you create will inherit from a particular framework class. The most important inherited class in the rwfPHP framework, which all classes are inherited from at some point, is the Control. The WebControl class inherits from the Control class. Controls made from the Control class are the building blocks of the rwfPHP framework. The interaction and implementation of controls is the rwfPHP model in which web applications are built. The control is the basic structure for creating abstraction. Coupling controls together will build more complex abstract controls. The reuse of the controls is directly related to the level and simplicity of your abstraction.

Events are the communication that welds the controls together. Events are caught within each control. The event does not need to know of any specific instance of another control except that it is the kind of class that it expects.

View – Use of Templates
We have abstraction of the communication level and the code through the event model and the building blocks of controls. All that is left is the abstraction of the presentation level. Templates are built into the rwfPHP framework. With templates we can separate the code and the presentation levels. Each control added to any other objects controls collection will be automatically set to show up in the template. All the template needs to do is put in a line to display the control. Each handles its own template and display functionality. This gives each control the power to make sure it will look a certain way no matter where it is reused. The template engine that rwfPHP framework uses is Smarty (smarty.php.net).

Controller – Simple Event Driven Model
The simple event driven model is to help speed the learning curve of window’s application developers. People with a background in the basic concepts of the window’s event driven model will see the similarities between the two. To explain in further detail we need to touch on code reuse with web controls.

Von admin

40 Gedanke zu “Auf der Suche nach dem perfekten PHP Application Framework”
  1. Die Auswahl ist fast unendlich und so ist es schwierig, das richtige Framework für den eigenen Bedarf zu finden Auf MasterBootRecord.de findet sich eine Liste, die bei der Entscheidung weiterhelfen dürfte!

  2. Since web applications are growing up to be an equal solution compared with classic desktop software programmers have to be more and more openminded for frameworks to support their development. Me – I didn’t really finish selecting the “ri…

  3. Michael posted a very interesting link at Sascha Goebels Blog. He found a page with an overview to some frameworks.
    Auf der Suche nach dem perfekten PHP Application Framework [German only]
    I just noticed some strange thing some weeks ago. In my dail…

  4. Beautiful Soup ist ein Python-Modul für HTML/XML Parsing. Man wirft ihm (auch defektes) HTML hin und kann direkt auf die entsprechenden Teile zugreifen.TrueCrypt 4.1 ist erschienen. Verschlüsselt in Echtzeit ein virtuelles Laufwerk.Auf der Suche nach dem

  5. RoR ist heute erstmals als Stable-Realease erhältlich. Meine ersten Gehversuche damit – in erster Linie das nachprogrammieren der verfügbaren Tutorials – waren sehr vielversprechend. Mein großes Problem damit ist aber die fehlende Unterstützung be…

  6. You know I’m a real PHP geek, but I experienced Ruby today and I was blown away. I only testet Ruby on Rails, which is a greate web development framework based on the Model-View-Control (MVC) pattern and written in Ruby. With the help of the framework you

  7. Da ich mich lange nicht wirklich intensiv mit PHP auseinandergesetzt hab, war ich jetzt schon überrascht, welche Anzahl an Frameworks es mittlerweile für PHP gibt die einem die Arbeit mit dem MVC-Pattern erleichtern. Für neue Projekte w…

  8. Hallo !

    Der Eintrag ist spannend. Aber ich habe dazu eine zusätzliche Frage.
    Kennt jemand ein gutes Framework mit einem deutschsprachigen Manual.
    Leider sind meine englischen Sprachkenntnisse miserabel.

    Gruß

    Stephan

  9. Herzlichen Dank für die tolle Übersicht.

    welches Framework entspricht nun am ehesten meinen Anforderungen:
    – php
    – mvc
    – ajax
    – saubere trennung code css content
    – open source
    – mit demo um zu testen auf der homepage
    – als wunsch deutsches manual

    kennt jemand die Applikationen so gut und kann mir ein wenig durch den Dschungel helfen.

    Herzlichen Dank
    roger

  10. Meiner Meinung nach fehlt in dieser Liste CodeIgniter ( http://codeigniter.com/ )
    CI ist ein OpenSource Ableger eines kommerziellen Produkts (ExpressionEngine) und daher gut durchdacht und einfach zu benutzen. Ich schreibe inzwischen meine 3. Webanwendung damit.

  11. Das ist ja eine ganz beachtliche Lsite geworden mittlerweile.
    Also ich muss dazu sagen, dass ich lange Zeit Prado benutzt und auch für Wei mitentwickelt habe. Prado ist ausgezeichnet, wenn es darum geht schnell eine Anwendung aufzuziehen, die eventbasiert reagieren soll. Dabei sind die ActiveControls eine absolut geniale Geschichte. Durch einfache Parametrisierung lassen sich die einzelnen Controls wie in Delphi oder ähnlichen Sprachen steuern und einstellen.
    Wenn Du aber zukunftsträchtiger und mehr den „Industrial Way“ gehen willst kann ich Dir nur das Zend Framework empfehlen. Ich habe es noch nie geschafft einen voll funktionsfähigen Prototypen in unter 30min mit I18N, Templating und Ajax zu implementieren. Da Zend das Framework zum quasi-Standard erheben will kannst du von einer rosigen Zukunft ausgehen. Auch die bisherigen Entwicklungen zeigen die Genialität des Frameworks auf. Es gibt nahezu alles, was das Herz begehrt bereits fertig oder als „Beta“ im Incubator.

    Zu Beginn meiner Diplomarbeit hab ich mich mal mit dem Studs auseinandergesetzt, da ich bereits mit dem Java Struts Framework zuvor arbeitete. Aber bei einer größeren Applikation dauert die XML-Verarbeitung so lange, dass die Antwortzeiten des Servers unter Last extrems in die Knie geht. Ohne Cache geht da gar nix mehr.

    Ein absolutes Leichtgewicht ist das Smart. Mit dem experimentierte ich auch kurzzeitig – gut dabei war der persönliche Kontakt zu dem Hauptentwickler dieses Frameworks.

    Die Entscheidung ist wahrlich nicht einfach, aber ich setze derzeit bei Webapplikationen, wo es im Wesentlichen um einen schnellen Prototypen geht nur noch auf Zend. Soll es dagegen um eine schnelle hübsche Oberfläche gehen benutze ich Prado. Die Einarbeitung in mehr Frameworks ist meiner Meinung nach sehr schwierig und es unterscheiden sich alle Frameworks sicherlich nur in geringen Dingen.

    MfG
    Robert

  12. Hi,

    ich bin gerade dabei ein paar PHP Framworks zu evaluieren. Aus einer Liste, ähnlich wie diese, habe ich erstmal drei ausgewählt und werde diese anhand von Testkriterien und einer Beispielanwendung evaluieren.
    Mehr Infos sind in meinem Blog zu finden:
    http://my.center-of.info/

    Gruß

    H.

    1. Ah… schön dass ich nicht allein wie der Ochs vor’m Berge stehe. Brauche nach langer Zeit auch mal wieder ein PHP Framework. Mein letztes Projekt war ja noch mit PHPLib realisiert. Aber das ist ja wohl endgültig eingestellt worden.
      Ich bin gespannt, was auf mehr Erfahrungsberichte und werde nun wohl erst einmal Zend antesten…

      Gruß
      Sascha

      1. Hi Sascha,

        also ich bin auch gerade dabei das Zend-Framework zu testen, und bin eigentlich zufrieden. Nicht perfekt, aber gut 😉

        Wenn ich die Beispielanwendung fertig habe, werde ich mehr dazu schreiben.

        Gruß

        Haf

  13. Vielen Dank für die Bereitstellung der Liste der PHP-Frameworks.

    Ich habe als Neuling ein paar weiterführende Links gelesen und danach beschlossen dass ganze mal für 5 Frameworks ‚auszugooglen‘. Also man nehme die Stichworte „PHP Framework“ + Name (Spalte 1) und kombiniere das in weiteren Aufrufen mit „problem“ oder „bug“. Als Wertung nehme ich Treffer – „problem“- „bug“. Heraus kommt (Stand 6.8.2007) :
    Framework Treffer problem bug Wertung
    Cake 920000 787000 1560000 -427000
    Zend 2630000 1150000 2070000 -590000
    Symphony 2580000 343000 422000 1815000
    Prado 1210000 202000 222000 786000
    Solar 1920000 1580000 1870000 -1530000

    Also sind im Web Symphony und Prado die besten PHP-Frameworks… Wer mag kann das ganze noch positiv versuchen also Kombination mit „super“ usw…

  14. sehr interessanteAuflistung. phpOntrax habe ich installiert und sieht gut aus, jedoch ist die Doku der Horror und die COmmunity nicht besonders aktiv, qCodo finde ich ziemlich interessant…?

    ich habe mit codeigniter in den vergangenen wochen 2 projekte sehr rasch umgesetzt und dank der super doku, konnte ich sofort loslegen und nach einigen wochen arbeit damit weiß ich den „light footprint “ wirklich zu schätzen, eigene core patches sind zwar nötig aber einfach zu bewerkstelligen… (z.B. deutsche Umlaute in der Form Validation). Die Projax Lib für CI ist absolut spitze! die CI community ist immer hilfsbereit und man trifft dort spitzen Coder.

    1. Hehe, das geht doch runter wie Öl. 🙂
      Wenn man neben den Anleitungen zur Verwendung von CodeIgniter noch ein großes Beispiel sucht, ist http://www.bambooinvoice.org das Richtige.
      Dort geht es um die Verwaltung von Rechnungen/Aufträgen für kleine Firmen und Selbstständige. Es ist auf CodeIgniter aufgebaut und ist OpenSource.

  15. Ein kurzes Statement zu PRADO:

    Nach 1,5 Jahren PRADO-Erfahrung kann ich das Framework wärmstens empfehlen. Am Anfang braucht man seine Zeit, das Prinzip ist zunächst sehr ungewohnt und die ersten Projekte sind daher sicher auch noch nicht perfekt.

    Aber die Art und Weise, wie man hier „eventbasiert“ Arbeitet führt fast zwangsläufig zu saubererem und übersichtlicherem Code. Mit der Zeit erstellt man dann seine eigenen Komponenten und dann fängt das System an richtig zu rocken 🙂

  16. Habe gestern die neue Seite von AKELOS durchstöbert, das schuat super aus –

    http://www.akelos.org/

    Auf Linux gelang die Installation sofort, jedoch muß man – das steht nicht im Tutorial – vor dem ./script/setup -d HOMEDIR/booklink unbedingt per mkdir den booklink ordner leer angelegt haben.

  17. Ich arbeite in Java mit portlets und JSF. Ist ähnliches mit den genannten frameworks in PHP auch möglich? Wichtig ist mir, das ich mehrere portlets unabhängig entwickeln und zusammen auf einer Seite darstellen kann, ohne das sie sich in die quere kommen. Dabei sollen die portlets selber componenten-basierte templates benutzen, bei denen eigene kompenenten (z.B. datePicker etc.) bei bedarf entwickelt werden können.

  18. hallo!

    ich bin zufällig über diese liste gestolpert und kann nur sagen es ist ein wahnsinn wieviele php-frameworks es mitlerweile gibt…

    aber du hast warscheinlich eines der genialsten frameworks vergessen, das zend framework das ich mitlerweile ausschließlich verwende, da es einfach genial ist!

    http://framework.zend.com

    mfg

  19. Die Gefahr wenn man sich auf Frameworks einlaesst besteht doch immer darin dass sich in der nachfolgenden Framework version alles aendern kann und man dann sein Projekt von der Basis her komplett daran anpassen muss.

  20. crGUI PHP Framework (kurz crGUI) ist ein Open Source Framework für PHP unter der Mozilla Public License (MPL). Ziel des Projektes ist es, die Entwicklung mit PHP zu vereinfachen und zu beschleunigen. crGUI bietet Klassen und Funktionen für die schnelle und einfache Entwicklung komplexer Webseiten und Web-Applikationen mit graphischen Elementen. Mit crGUI hat der Entwickler die Möglichkeit schnell komplexe Programmiertechniken wie seitenübergreifende Daten zu steuern, GUI Elemente zu verwenden die ähnliche funktionalität wie aus der Windows und Linux Welt bieten, AJAX sehr einfach zu implementieren und vieles mehr.

    http://sourceforge.net/projects/crgui/
    http://www.cr-solutions.net
    http://de.wikipedia.org/wiki/CrGUI

  21. Ist zwar mittlerweile schon ziemlich lange her, aber ich würde das Zend-Framework empfehlen. Die Dokumentation ist sehr ausführlich, außerdem gibt es zur einführung zahlreiche screencasts und webinars. Und das beste, es wird immer weiter entwickelt und bietet jetzt schon eine wirklich unglaublich große zahl helper und integrierte tools.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert