Neue Wege mit Contao 4



Ähnliche Dokumente
Contao 4 Extension, from scratch!

APEX OOS TOOLS & HELFER

Build Management Tool

Einführung in Ansible

Build Management Tool?

Build Management Tool?

Weblogic Server: Administration für Umsteiger

Erweiterungen Eine geführte Wanderung durch die Strukturen von Contao

Con guration as Code Über Ansible Ansible Grundlagen Live Demo Weitere Informationen

Composing Shops. Modulinstallation und andere coole Composer Features. (auch) für den OXID eshop... und ein bisschen Shopware ;)

Continuous Delivery. für Java Anwendungen. Axel Fontaine Software Development Expert

PayPalPlus Magento 2 Benutzerhandbuch

Mojolicious. Ich zeige dir jetzt, wie du mit Mojolicious eine Vorlage. Das Mojolicious-Gerüst

Deploy von PHP-Applikationen

DOTS - reloaded. EntwicklerCamp René Winkelmeyer midpoints GmbH

Ansible für Entwickler

DevOps with AWS. Software Development und IT Operation Hand in Hand. Matthias Imsand CTO Amanox Solutions AG

Continuous Delivery in der Realität eines Großunternehmens

Frühling für iphone-apps

IT Solutions. AnyConnect unter Linux (Ubuntu 14.04) Gültige VPN Accounts:

Platform as a Service (PaaS) & Containerization

Mobile Development in.net mit Xamarin

O X I D ( 6 ) C L I O X R U N!1

Vom lokalen Build zum Deployment

Mit degov Webseiten betreiben und weiterentwickeln. von Dr. Christoph Breidert 1xINTERNET GmbH

Continuous Integration mit GitLab CI. Christine Koppelt Philipp Haußleiter GUUG-Frühjahrsfachgespräch 1. März 2018

Abhängigkeiten in PHP Projekten mit Composer verwalten. Nils Private Packagist

Wie ich lernte die API zu lieben. 19. März sic[!]sec GmbH Industriestraße Gröbenzell

How To: Wie entwickle ich mit SharpDevelop Anwendungen für die PocketPC-Platform

Persönliche Build-Höllen für Jedermann Andreas Hartmann & Dr. Halil-Cem Gürsoy

ITIL. Incident- und Problem- Management in der Anwendung. Uli Manschke Technical Consultant HP OpenView

Ralf M. Schnell. Technical Evangelist Microsoft Deutschland GmbH

Installations- und Konfigurationsanleitung für Magento 1 ecommerce Plattform

Um asynchrone Aufrufe zwischen Browser und Web Anwendung zu ermöglichen, die Ajax Hilfsmittel DWR ist gebraucht.

<Insert Picture Here> Aufbau einer hochverfgbaren SOA Service Infrastruktur mit der SOA Suite 11g

Mit OSGi Webanwendungen entwickeln Was geht, was nicht?

TFS 2013 Upgrade. Thomas Trotzki - artiso AG

Ansible Grundlagen / 26

Spring Dynamic Modules for OSGi Service Platforms

End-to-End Automatisierung Mehr als Continuous Integration & Continuous Delivery

Portal for ArcGIS Konzepte und Deployment

TYPO Die Änderungen im Überblick. Peter Kraume. 03. November 2009 Munich TYPO3 Usergroup. Inspiring people to share

REST-Services mit Dropwizard ruck-zuck erstellt, dokumentiert und getestet

Multisite Setup. mit Nutzung von Subversion. Drupal Voice Chat

Puppet, Salt oder Ansible

Dockerbank II. Block 2: Komplexbeispiel. Benjamin Baum 1, Christian Bauer 1

Rapid Deployment mit JomaSoft VDCF

Automatisierte Serververwaltung mit Hilfe von Puppet

The Foreman. Felix Massem und Jan-Frederic Markert

IDL Workplace Server Extensions for SSIS

Wordpress Administration


Mindbreeze InSpire. Management Center ... Support : Tel.:

Application Frameworks

Entwicklungswerkzeuge & - methoden

Platform as a Service (PaaS) Prof. Dr. Ch. Reich

Das generierte Data Warehouse

Bootstrapping Ansible. Bengt Giger Informatikdienste ETH Zürich Client Delivery

Automatisieren mit Ansible Ernst Leber NRW Regio Day Ratingen

Composer für Contao Entwickler

Inhaltsverzeichnis. Vorwort 13

Brownbag Zieht den Helm auf

Oracle9i Designer. Rainer Willems. Page 1. Leitender Systemberater Server Technology Competence Center Frankfurt Oracle Deutschland GmbH

Projektgruppe. Thomas Kühne. Komponentenbasiertes Software Engineering mit OSGi

Anforderungsgetriebene Webentwicklung mit Grails:

DEPLOYMENTS MIT DOCKER. Created by Wojciech Pietrzak

Office 365 On Premise oder Cloud? Stephan Krüger

Entwicklungs- Qualitätssicherung- & Live-Server

SSL-Inspection mit Content-Filter. ZyXEL USG Firewall-Serie ab Firmware Version Knowledge Base KB-3506 Juni 2014.

Agile Apex - Life Cycle Management. Life Cycle Management für Apex Applikationen im agilen Projektumfeld

Automatisierter Java EE Entwicklungs-Lifecycle mit WebLogic Server 12c. Robin Müller-Bady Systemberater, Oracle Deutschland

OSGi-basierte Webapplikationen Ein Erfahrungsbericht

Michael C. Feathers. Legacy Code. Effektives Arbeiten mit. Refactoring und Testen bestehender Software

Symfony2 Framework Ein kleiner Überblick. Marc Aschmann

Contao in a box. Entwicklungsumgebung für Contao mit Vagrant. von Claudio De Facci exploreimpact.de

Das Symfony Framework Enterprise-Anwendungen mit PHP

Plugin Challenges. von der Idee zur Umsetzung. Slides: Arthur Kaiser

MOBILE ON POWER MACHEN SIE IHRE ANWENDUNGEN MOBIL?!

Versionierung und Dateistruktur

WildFly Application Server Administration

Mambo - mit Joomla! Das Open Source-CMS einsetzen und erweitern. von Tobias Hauser, Christian Wenz. 1. Auflage. Hanser München 2005

Continuous Everything

Kompendium der Web-Programmierung

Administration und Konfiguration für JBoss 7

Nutzung von Log4J und Commons Logging

Vollautomatisierte e-learning Plattform am Beispiel eines Universitätspraktikums

WEBAPPLIKATIONEN MIT PHP. Wo gibt es Hilfe? Wie fang ich an?

AG PORTAL / 5. JULI 2016 HDS II. Neuerungen - Änderungen - Anpassungen. Sebastian Böttger. HeBIS-Verbundzentrale Vermittlungs- und Recherchelösungen

07. November, Zürich-Oerlikon

Rapid Deployment von OS, Virtualisierung und Applikation

1. Download der benötigten Software Version 2. Speichern Sie das easytouch Update auf einem leeren USB-Sick (FAT) (max 2 GB) P3 / Mini.

Virtual Unified Environments Infrastructure Service Installation und Lifecycle im Oracle Produktumfeld

Order Ansicht Inhalt

Hybride Cloud-Infrastrukturen Bereitstellung & Verwaltung mit System Center 2012

Vom Web ins IoT: Schnelleinstieg in Tooling und Entwicklung

ERWEITERUNG CONTAO INDEXIERUNG - SUCHE AUF OFFICE- UND PDF-DATEIEN

Domain Creation. DOAG 2013 Andreas Chatziantoniou - Foxglove-IT BV Thorsten Wussow Slix GmbH

Andreas Hartmann, Stephan Müller adesso AG. JSF Testing: Tools und Technics

Transkript:

Neue Wege mit Contao 4 Schöne neue PHP-Welt Contao Konferenz 2016

Über mich Andreas Schempp / terminal42 gmbh Schweiz Contao Core Entwickler Vorstand (Schatzmeister) Contao Association Hauptentwickler von Isotope ecommerce

Karl Heinz Görmar / myheimat.de

www.ziegelhaus-johanni.de

benik.at / Shutterstock

Composer Statistik Totals Packages registered: 95 284 Versions available: 502 313 Packages installed: 2 019 225 476 (since 2012-04-13) https://packagist.org/statistics

&

Symfony Verzeichnisstruktur app/ src/ config/ web/ logs/ app.php AppKernel.php app_dev.php console composer.json

Symfony Verzeichnisstruktur app/ src/ config/ web/ logs/ app.php AppKernel.php app_dev.php console composer.json

Symfony Verzeichnisstruktur app/ src/ config/ web/ logs/ app.php AppKernel.php app_dev.php console composer.json

Symfony Verzeichnisstruktur app/ src/ config/ web/ logs/ app.php AppKernel.php app_dev.php console composer.json

Symfony Verzeichnisstruktur app/ src/ config/ web/ logs/ app.php AppKernel.php app_dev.php console composer.json

Symfony Verzeichnisstruktur app/ src/ config/ web/ logs/ app.php AppKernel.php app_dev.php console composer.json

Symfony Verzeichnisstruktur app/ src/ config/ web/ logs/ app.php AppKernel.php app_dev.php console composer.json

Symfony Verzeichnisstruktur app/ src/ config/ web/ logs/ app.php AppKernel.php app_dev.php console composer.json

Symfony Verzeichnisstruktur app/ src/ config/ web/ logs/ app.php AppKernel.php app_dev.php console composer.json

Contao Verzeichnisstruktur system/ config/ modules/ templates/ files/ vendor/contao/ initialize.php

Service Container wie $GLOBALS, aber Objekt-Orientiert Application Configuration Services Dependency Injection

Dependency Injection Static: Input::get() Singleton: Database::getInstance() Fetch: System::import() & System::importStatic() Constructor Injection: construct(database $db) Setter Injection: $obj->setdatabase(database $db)

Service Configuration

Contao Framework

Dependency Injection System::import() & System::importStatic() Bisher method_exists('getinstance', $class) /* */ new $class();

Hooks

Callback

Callbacks

UrlGenerator $urlgenerator = System::getContainer() ->get('contao.routing.url_generator'); $urlgenerator->generate( 'foo/{article}', ['article' => 'bar', 'auto_item' => 'article'] ); => /foo/bar.html https://github.com/contao/core-bundle/pull/480

UrlGenerator $urlgenerator = System::getContainer() ->get('contao.routing.url_generator'); $urlgenerator->generate( 'foo/{article}', ['article' => 'bar', 'example' => 'test'] ); => /foo/article/bar.html?example=test https://github.com/contao/core-bundle/pull/480

UrlGenerator $page = PageModel::findWithDetails(/* */); $urlgenerator->generate( ($page->alias?: $page->id). '/{items}', [ ); 'items' => 'example', '_domain' => $page->domain, '_ssl' => (bool) $page->rootusessl ], UrlGeneratorInterface::ABSOLUTE_URL

contao.cache System::getContainer()->get('contao.cache') $cache->save('vendor_bundle.foobar', 'test'); $cache->fetch('vendor_bundle.foobar'); https://github.com/contao/core-bundle/pull/468

PaletteManipulator https://github.com/contao/core-bundle/pull/474

Monolog => tl_log $logger = System::getContainer()->get('logger'); $logger->info( 'Allgemeine Meldung', [ 'contao' => new ContaoContext( METHOD ) ); ] https://github.com/contao/core-bundle/pull/449

Monolog => tl_log $logger = System::getContainer()->get('logger'); $logger->error( 'Fehlermeldung', [ 'contao' => new ContaoContext( METHOD ) ); ]

Monolog => tl_log $logger = System::getContainer()->get('logger'); $logger->debug( 'E-Mail sent to example@example.org', [ 'contao' => new ContaoContext( METHOD, ContaoContext::NEWSLETTER ) ); ]

Monolog => E-Mail # Monolog configuration monolog: handlers: email: type: swift_mailer from_email: 'error@example.com' to_email: 'error@example.com' subject: 'An Error Occurred! level: 'error' http://symfony.com/doc/current/cookbook/logging/monolog_email.html

Web Profiler

app_dev.php Ersetzt Contao Debug Console Zusätzlicher Entry Point, immer verfügbar Freier Zugriff auf Localhost Passwortschutz auf Server

VarDumper Component Ersatz für var_dump() Ersetzt dump() aus Contao 3 Ausgabe im Web Profiler statt mitten in der Seite Standardmässig nur in app_dev.php! http://symfony.com/doc/current/components/var_dumper/introduction.html

dump()

Unit Tests

Unit Tests in Contao 3 Schwierig wegen Inheritance (Parent-Klassen) class MyModule extends Module extends Frontend extends Controller extends System Schwierig wegen statischen Methoden Input::get('foobar')

Unit Tests in Contao 4 Getestete Libraries nutzen dank Composer Services mit Dependency Injection Contao Framework?

Unit Tests in Contao 4

ContaoFramework Adapter System::getContainer()->get('contao.framework') $input = $f->getadapter('contao\input'); $foo = $input->get(' ');

ContaoFramework Adapter function testsomething() { $container = $this->getmock(/* */); $framework = $this->getmock('contaoframework'); $input = $this->getmock('contao\input'); $framework ->method('getadapter') ->willreturn($input); $container->method('get')->willreturn($framework) } System::setContainer($container);

Deployment

Deployment Prinzip Code-Anpassungen immer an Kopie der Installation ggf. mehrere Installation (Dev, Staging, Production) Automatisierter Upload auf Live-Server Automatisches ausführen benötiger Befehle

Deployment Releases /var/www --releases --20150513120631 --shared --app/config/parameters.yml --app/logs --files --... --current -> /var/www/releases/20160519120631

Deployment Tools Capistrano (Ruby) Fabric (Python) Deployer (PHP) Magallanes (PHP) http://symfony.com/doc/current/cookbook/deployment/tools.html

Magallanes Mehrere Environments & Hosts Releases Konfiguration über YAML Eigene Tasks als PHP-Objekte www.magephp.com

Magallanes vendor/bin/mage deploy to:production