TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX

Post on 19-May-2015

277 views 1 download

Transcript of TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX

Rens Admiraale-mail: rens.admiraal@typo3.org twitter: @renst3

FLOW3 & TYPO3 Phoenix

vrijdag 18 november 11

• FLOW3 / TYPO3 5.0 “Phoenix” Core Developer

• Senior Software Architect @ Drecomm

• Code stijl / kwaliteit fanaat

• 3 wonder kids

• Zeiler / Volleyballer / ‘Basgitarist’

Rens Admiraal

vrijdag 18 november 11

FLOW3 ???

• PHP programmeren op een hoger niveau

• Web Application Framework

• PHP 5.3+

• Gratis!

vrijdag 18 november 11

TYPO3 Phoenix ???

• TYPO3 v 5.0

• Op basis van FLOW3

• Vernieuwend en baanbrekend

• Volop in ontwikkeling

vrijdag 18 november 11

FLOW3

• Stimuleer kwalitatief hoogwaardige code

• Focus op het nodige

• Domain Driven Design!

• Testbaar

vrijdag 18 november 11

Ain’t Rocket Science

Eenvoudige installatieQuickstartTutorial

Kickstart command

QuickstartTutorial

FLOW3 Core TeamIRC channel

Gemak voorde developer

is groot

@FLOW3\magic

vrijdag 18 november 11

Rocket Science

Routing

vrijdag 18 november 11

pi_base Flexform Settings

function init() { $this->pi_initPIflexForm(); $this->lConf = array(); $this->piFlexform = $this->cObj->data['pi_flexform']; foreach ($this->piFlexform['data'] as $sheet => $data) { foreach ($data as $lang => $value) { foreach ($value as $key => $val) { $this->lConf[$key] = $this->pi_getFFvalue(

$this->piFlexform, $key, $sheet );

} } }}

vrijdag 18 november 11

Extbase flexform settings

public function indexAction() { debug($this->settings);}

vrijdag 18 november 11

FLOW3 Package Settings

YAMLVendor:

Package:setting: valuesetting2: value

PHPpublic function indexAction() { \TYPO3\FLOW3\var_dump($this->settings);}

vrijdag 18 november 11

FLOW3 Package Settings

class Test {

/** * @var array */ protected $settings;

/** * @param array $settings */ public function injectSettings(array $settings) { $this->settings = $settings; }

public function dump() { \TYPO3\FLOW3\var_dump($this->settings); }}

vrijdag 18 november 11

Voorbeeld dependency injection

use TYPO3\FLOW3\Annotations as FLOW3;

/** * @FLOW3\Scope("singleton") */class StandardController extends \TYPO3\FLOW3\MVC\Controller\ActionController {

/** * @var FLOW3\Demo\Test * @FLOW3\Inject */ protected $testObject;

/** * @return void */ public function indexAction() {

\TYPO3\FLOW3\var_dump($this->testObject); }}vrijdag 18 november 11

Voorbeeld validation

/** * @var string * @FLOW3\Validate(type="NotEmpty") * @FLOW3\Validate(type="StringLength", options={ "maximum"=100 }) */protected $name;

vrijdag 18 november 11

AOP

• Wikipedia:Aspectgeoriënteerd programmeren (AOP, of Aspect Oriented Development, AOD) is een uitbreiding op de bekende manieren van programmeren, waarbij het mogelijk wordt om een stuk code A "in te lassen" in een ander stuk code B zonder dat B een zichtbare verwijzing heeft naar A.

• Kortom: mogelijkheid gedrag code aan te passen zonder de code zelf aan te passen.

vrijdag 18 november 11

AOP: Advices

• Before adviceWordt aangeroepen voor de methode. Heeft geen invloed op het uitvoeren van de methode.

• After returning adviceWordt aangeroepen na de methode. Return value methode is beschikbaar in advice, maar kan niet aangepast worden. Wordt niet uitgevoerd als er een exceptie optreedt in de methode.

• After throwing adviceWordt alleen uitgevoerd (na de methode) als er een exceptie in de methode optreedt.

vrijdag 18 november 11

AOP: Advices

• After adviceWordt uitgevoerd na de methode, niet afhankelijk van excepties.

• Around adviceVoert code uit voor en na de methode, en kan voorkomen dat de oorspronkelijke methode aangeroepen wordt.

• Advice chainEr kunnen meerdere advices ingesteld worden op dezelfde methode. Deze worden dan na elkaar uitgevoerd.

vrijdag 18 november 11

AOP

• Method introduction

• Property introduction

vrijdag 18 november 11

AOP Voorbeeld

/** * Log a message if a post is deleted * * @param \TYPO3\FLOW3\AOP\JoinPointInterface $joinPoint * @FLOW3\Before("method(Examples\Forum\Domain\Model\Forum->deletePost())") * @return void */public function logDeletePost(\TYPO3\FLOW3\AOP\JoinPointInterface $joinPoint) { $post = $joinPoint->getMethodArgument('post'); $this->applicationLogger->log( 'Removing post ' . $post->getTitle(), LOG_INFO );}

vrijdag 18 november 11

Voorbeeld Security Framework

- security: authentication: providers: MyLDAPProvider: providerClass: TYPO3\MyCoolPackage\Security\Authentication\MyLDAPProvider options: 'Some LDAP configuration options' DefaultProvider: providerClass: PersistedUsernamePasswordProvider

vrijdag 18 november 11

Voorbeeld Security Framework

filters: - patternType: URL patternValue: /some/url/.* interceptor: AccessGrant - patternType: URL patternValue: /some/url/blocked.* interceptor: AccessDeny - patternType: MyCompany\MyPackage\Security\MyOwnRequestPattern patternValue: some pattern value interceptor: MyCompany\MyPackage\Security\MyOwnSecurityInterceptor

vrijdag 18 november 11

FLOW3 Released!

• Versie 1.0 release: 20 oktober 2011

• API nu ‘stabiel’

• Klaar voor gebruik in commerciële projecten

vrijdag 18 november 11

Business

• Al in gebruik in meerdere live projecten

• Textiel print service in Duitsland, T3CON11, flow3.org, grote duitse retailer, Planet FLOW3, ...., uw site?

• Kwalitatief betere, onderhoudbare, veilige, uitbreidbare en testbare code

• Klaar voor de toekomst

vrijdag 18 november 11

TYPO3 Phoenix

• Volop in ontwikkeling

• Intuïtief

• Vernieuwend

vrijdag 18 november 11

TYPO3 Phoenix begin 2011

vrijdag 18 november 11

TYPO3 Phoenix nu

vrijdag 18 november 11

TYPO3 Phoenix Demo

Demo

vrijdag 18 november 11

TYPO3 Phoenix in de toekomst

• http://forge.typo3.org/projects/typo3-v5

• 1e Release in 2012?

vrijdag 18 november 11

TYPO3 v4 => TYPO3 Phoenix

• Extbase & Fluid

• verlaagde learning curve

• begin ‘stijl transformatie’

• Extension Builder

vrijdag 18 november 11

Rens Admiraale-mail: rens.admiraal@typo3.org twitter: @renst3

FLOW3 & TYPO3 Phoenix

???Vragen

???

vrijdag 18 november 11