3. FLOW3 ???
• PHP programmeren op een hoger niveau
• Web Application Framework
• PHP 5.3+
• Gratis!
vrijdag 18 november 11
4. TYPO3 Phoenix ???
• TYPO3 v 5.0
• Op basis van FLOW3
• Vernieuwend en baanbrekend
• Volop in ontwikkeling
vrijdag 18 november 11
5. FLOW3
• Stimuleer kwalitatief hoogwaardige code
• Focus op het nodige
• Domain Driven Design!
• Testbaar
vrijdag 18 november 11
6. Ain’t Rocket Science
Quickstart
Eenvoudige installatie
Tutorial
Gemak voor
de developer
Kickstart
is groot
command
@FLOW3magic
FLOW3 Core Team
IRC channel
vrijdag 18 november 11
8. 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
9. Extbase flexform settings
public function indexAction() {
debug($this->settings);
}
vrijdag 18 november 11
10. FLOW3 Package Settings
YAML
Vendor:
Package:
setting: value
setting2: value
PHP
public function indexAction() {
TYPO3FLOW3var_dump($this->settings);
}
vrijdag 18 november 11
11. FLOW3 Package Settings
class Test {
/**
* @var array
*/
protected $settings;
/**
* @param array $settings
*/
public function injectSettings(array $settings) {
$this->settings = $settings;
}
public function dump() {
TYPO3FLOW3var_dump($this->settings);
}
}
vrijdag 18 november 11
12. Voorbeeld dependency injection
use TYPO3FLOW3Annotations as FLOW3;
/**
* @FLOW3Scope("singleton")
*/
class StandardController extends TYPO3FLOW3MVCControllerActionController {
/**
* @var FLOW3DemoTest
* @FLOW3Inject
*/
protected $testObject;
/**
* @return void
*/
public function indexAction() {
TYPO3FLOW3var_dump($this->testObject);
}
}
vrijdag 18 november 11
14. 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
15. AOP: Advices
• Before advice
Wordt aangeroepen voor de methode. Heeft geen invloed op het uitvoeren
van de methode.
• After returning advice
Wordt 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 advice
Wordt alleen uitgevoerd (na de methode) als er een exceptie in de methode
optreedt.
vrijdag 18 november 11
16. AOP: Advices
• After advice
Wordt uitgevoerd na de methode, niet afhankelijk van excepties.
• Around advice
Voert code uit voor en na de methode, en kan voorkomen dat de
oorspronkelijke methode aangeroepen wordt.
• Advice chain
Er kunnen meerdere advices ingesteld worden op dezelfde methode. Deze
worden dan na elkaar uitgevoerd.
vrijdag 18 november 11
18. AOP Voorbeeld
/**
* Log a message if a post is deleted
*
* @param TYPO3FLOW3AOPJoinPointInterface $joinPoint
* @FLOW3Before("method(ExamplesForumDomainModelForum->deletePost())")
* @return void
*/
public function logDeletePost(TYPO3FLOW3AOPJoinPointInterface $joinPoint) {
$post = $joinPoint->getMethodArgument('post');
$this->applicationLogger->log(
'Removing post ' . $post->getTitle(),
LOG_INFO
);
}
vrijdag 18 november 11
21. FLOW3 Released!
• Versie 1.0 release: 20 oktober 2011
• API nu ‘stabiel’
• Klaar voor gebruik in commerciële projecten
vrijdag 18 november 11
22. 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
23. TYPO3 Phoenix
• Volop in ontwikkeling
• Intuïtief
• Vernieuwend
vrijdag 18 november 11