TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX
-
Upload
typo3-nederland -
Category
Documents
-
view
282 -
download
1
Transcript of TYPO3 Congres 2011 - Rens Admiraal - FLOW3 en TYPO3 PHOENIX
Rens Admiraale-mail: [email protected] 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: [email protected] twitter: @renst3
FLOW3 & TYPO3 Phoenix
???Vragen
???
vrijdag 18 november 11