Download - TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX

Transcript
Page 1: TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX

Rens Admiraale-mail: [email protected] twitter: @renst3

FLOW3 & TYPO3 Phoenix

vrijdag 18 november 11

Page 2: TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX

• 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

Page 3: TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX

FLOW3 ???

• PHP programmeren op een hoger niveau

• Web Application Framework

• PHP 5.3+

• Gratis!

vrijdag 18 november 11

Page 4: TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX

TYPO3 Phoenix ???

• TYPO3 v 5.0

• Op basis van FLOW3

• Vernieuwend en baanbrekend

• Volop in ontwikkeling

vrijdag 18 november 11

Page 5: TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX

FLOW3

• Stimuleer kwalitatief hoogwaardige code

• Focus op het nodige

• Domain Driven Design!

• Testbaar

vrijdag 18 november 11

Page 6: TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX

Ain’t Rocket Science

Eenvoudige installatieQuickstartTutorial

Kickstart command

QuickstartTutorial

FLOW3 Core TeamIRC channel

Gemak voorde developer

is groot

@FLOW3\magic

vrijdag 18 november 11

Page 7: TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX

Rocket Science

Routing

vrijdag 18 november 11

Page 8: TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX

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

Page 9: TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX

Extbase flexform settings

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

vrijdag 18 november 11

Page 10: TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX

FLOW3 Package Settings

YAMLVendor:

Package:setting: valuesetting2: value

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

vrijdag 18 november 11

Page 11: TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX

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

Page 12: TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX

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

Page 13: TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX

Voorbeeld validation

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

vrijdag 18 november 11

Page 14: TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX

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

Page 15: TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX

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

Page 16: TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX

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

Page 17: TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX

AOP

• Method introduction

• Property introduction

vrijdag 18 november 11

Page 18: TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX

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

Page 19: TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX

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

Page 20: TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX

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

Page 21: TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX

FLOW3 Released!

• Versie 1.0 release: 20 oktober 2011

• API nu ‘stabiel’

• Klaar voor gebruik in commerciële projecten

vrijdag 18 november 11

Page 22: TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX

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

Page 23: TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX

TYPO3 Phoenix

• Volop in ontwikkeling

• Intuïtief

• Vernieuwend

vrijdag 18 november 11

Page 24: TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX

TYPO3 Phoenix begin 2011

vrijdag 18 november 11

Page 25: TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX

TYPO3 Phoenix nu

vrijdag 18 november 11

Page 26: TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX

TYPO3 Phoenix Demo

Demo

vrijdag 18 november 11

Page 27: TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX

TYPO3 Phoenix in de toekomst

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

• 1e Release in 2012?

vrijdag 18 november 11

Page 28: TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX

TYPO3 v4 => TYPO3 Phoenix

• Extbase & Fluid

• verlaagde learning curve

• begin ‘stijl transformatie’

• Extension Builder

vrijdag 18 november 11

Page 29: TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX

Rens Admiraale-mail: [email protected] twitter: @renst3

FLOW3 & TYPO3 Phoenix

???Vragen

???

vrijdag 18 november 11