Symfony2
Upcoming SlideShare
Loading in...5
×
 

Symfony2

on

  • 3,183 views

- Eckdaten des Frameworks ...

- Eckdaten des Frameworks
- Architektur & Internals
- Mikrokernel und Architektur des Frameworks
- Architektur des Frameworks mit eigenen Bundles
- Überblick Kernel-Komponenten
- Der EventDispatcher
- Der DependencyInjectionContainer
- Beispiel-Konfigurationdes des DICs
- Der HttpKernel
- Projektstruktur - apps-, web-, src- und vendor-Verzeichnis
- Beispiel-FrontController
- Beispiel-AppKernel
- Beispiel-Controller-Klasse
- Die Templating-Engine Twig
- Beispiel Layout/Templates
- Demo

Statistics

Views

Total Views
3,183
Views on SlideShare
2,526
Embed Views
657

Actions

Likes
0
Downloads
23
Comments
0

7 Embeds 657

http://www.mrboolean.com 563
http://blog.mayflower.de 88
http://www.sfexception.com 2
http://static.slidesharecdn.com 1
http://twitter.com 1
http://www.netvibes.com 1
http://www.thewebhatesme.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Symfony2 Symfony2 Presentation Transcript

    • Symfony2Paul Seiffert I 03.03.2011 © Mayflower GmbH 2010
    • EckdatenAusgewachsenes PHP-FrameworkKomplette Neuentwicklung~ 755 PHP-Klassen in 975 .php-Dateien Mayflower GmbH I 2
    • Architektur und Internals12.03.11 Mayflower GmbH 3 Bild: http://www.flickr.com/photos/army_arch/3343321507/sizes/z/in/photostream/
    • Architektur (I)I Basis: Überschaubarer Microkernel (Symfony Components)I „Everything else is a bundle“ MVC Doctrine Twig Security Kernel Mayflower GmbH I 4
    • Architektur (II)Application Third-Party Bundles Shop Blog User Bundles MVC Doctrine Twig Security Kernel Mayflower GmbH I 5
    • Architektur (III) – Der KernelSammlung von Komponenten: I Abstraktion über PHP-Funktionen / System Calls Finder Serializer Process Validator I Objekt-Orientierte Schnittstelle zu HTTP HttpFoundation BrowserKit I Schlüsselfunktionalitäten im Zusammenspiel des Frameworks EventDispatcher HttpKernel DependencyInjection Mayflower GmbH I 6
    • Internals (I) – Der EventDispatcherEin „globales Observer-Pattern“: connect(XY, array($this, callback)) Listener 1) Please tell me if XY happens! 3) Subject XYed with Z EventDispatcher callback($event) 2) Hey, I just XYed with Z! Subject notify(new EventXY(Z)) Mayflower GmbH I 7
    • Internals (II) – Der DependencyInjectionContainerI Ziel: Keine konkreten Abhängigkeiten, d.h. keine direkte Instanziierung von Services mehr! $myDependency = new Services(); $container->getService(); Zur Compile-Zeit: Dependency-Graph Zur Laufzeit: Service-Pool Mayflower GmbH I 8
    • Beispiel-Konfiguration von Doctrine doctrine: dbal: dbname: xxxxxxxx user: xxxxxxxx password: ~ logging: %kernel.debug% orm: auto_generate_proxy_classes: %kernel.debug% mappings: HelloBundle: ~ Mayflower GmbH I 9
    • Internals (III) – Der HttpKernelI Aufgabe des HttpKernels: Transformation von Requests in ResponsesI Zwei Abhängigkeiten: ControllerResolver und EventDispatcherI Erweiterung des Transformationsprozesses mittels Event-Listener möglich Request HTTP-Kernel Response Mayflower GmbH I 10
    • Praxis12.03.11 Mayflower GmbH 11 Bild: http://www.flickr.com/photos/reway2007/2927363741/lightbox/
    • Projektstruktur (I) Application- Configuration und Logs/Cache FrontController und Ressources Eigene BundlesThird-Party Bundles Mayflower GmbH I 12
    • Projektstruktur (II) <?php require_once __DIR__./../app/bootstrap_cache.php; require_once __DIR__./../app/AppCache.php; use SymfonyComponentHttpFoundationRequest; $kernel = new AppKernel(prod, false); $kernel­>handle(Request::createFromGlobals())­>send(); Mayflower GmbH I 13
    • Projektstruktur (II) <?php use SymfonyComponentHttpKernelKernel; use SymfonyComponentConfigLoaderLoaderInterface; class AppKernel extends Kernel {     public function registerBundles()     {         $bundles = array(             new SymfonyBundleFrameworkBundleFrameworkBundle(),             new SymfonyBundleTwigBundleTwigBundle(),             new SymfonyBundleZendBundleZendBundle(),             new SymfonyBundleDoctrineBundleDoctrineBundle(),             new PaulHelloBundleHelloBundle(),         );         if (in_array($this­>getEnvironment(), array(dev, test))) {             $bundles[] = new SymfonyBundleWebProfilerBundleWebProfilerBundle();         }         return $bundles;     }     public function registerRootDir()     {         return __DIR__;     }     public function registerContainerConfiguration(LoaderInterface $loader)     {         $loader­>load(__DIR__./config/config_.$this­>getEnvironment()..yml);     } } Mayflower GmbH I 14
    • Projektstruktur (II) <?php namespace PaulHelloBundleController; use SymfonyBundleFrameworkBundleControllerController; class HelloController extends Controller {     public function indexAction($name)     {         return $this­>render(                 HelloBundle:Hello:index.html.twig,                 array(name => $name));     } } Mayflower GmbH I 15
    • Twig (Templating Engine)I Sowohl als Standalone-Engine als auch als Bestandteil des Symfony-Frameworks verwendbar (http://www.twig-project.org/)I First-Class citizens: Templates und Blöcke · Base-Template: „Layout“ · Bundle-Templates erweitern das Layout · Action-Templates erweitern Bundle-Templates · … Mayflower GmbH I 16
    • app/views/base.html.twigLayout: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>{% block title %}Hello Application{% endblock %}</title> </head> <body> {% block body %}{% endblock %} </body> </html>Bundle- src/Paul/HelloBundle/Resources/views/layout.html.twig {% extends "::base.html.twig" %}Template: {% block body %} <h1>Hello Bundle</h1> {% block content %}{% endblock %} {% endblock %}Action- src/Paul/HelloBundle/Resources/views/Hello/index.html.twig {% extends "HelloBundle::layout.html.twig" %}Template: {% block content %} Hello {{ name }}!<br /><br /> <img src="{{ asset(images/katzenbank.png) }}" /><br /> <a href="{{ path(hello, { name: Thomas }) }}">Greet Thomas! </a> {% endblock %} Mayflower GmbH I 17
    • ? Mayflower GmbH I 18
    • Demo Mayflower GmbH I 19
    • Vielen Dank für Ihre Aufmerksamkeit! Kontakt Paul Seiffert Paul.Seiffert@mayflower.de +49 89 242054 1172 Mayflower GmbH Mannhardtstrasse 6 80538 München12.03.11 Mayflower GmbH 20