TYPO3 Flow - PHP Framework for Developer Happiness

4,835 views

Published on

Published in: Sports
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,835
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
0
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

TYPO3 Flow - PHP Framework for Developer Happiness

  1. 1. PHP Framework For Developer HappinessTYPO3 FlowDienstag, 28. Mai 13
  2. 2. Not Safe ForCode AllergicDienstag, 28. Mai 13
  3. 3. ...but probablyunderstandableDienstag, 28. Mai 13
  4. 4. PHP ApplicationFrameworkDienstag, 28. Mai 13
  5. 5. PHP ApplicationFrameworkWebDienstag, 28. Mai 13
  6. 6. Flow is an optimal state in whichyou feel totally engaged in anactivity.Mihaly CsikszentmihalyiDienstag, 28. Mai 13
  7. 7. Main Concerns‣ Developer Happiness‣ Code Quality‣ Domain Driven Design‣ Convention Over ConfigurationDienstag, 28. Mai 13
  8. 8. LaravelZendFrameworkCodeIgniterSymfony2Dienstag, 28. Mai 13
  9. 9. Why anotherframework?Dienstag, 28. Mai 13
  10. 10. How it beganDienstag, 28. Mai 13
  11. 11. How it began‣ 2005 - Rewrite TYPO3 CMS CoreDienstag, 28. Mai 13
  12. 12. How it began‣ 2005 - Rewrite TYPO3 CMS Core‣ 2006 - Start from scratchNo Framework provided everythingDienstag, 28. Mai 13
  13. 13. How it began‣ 2005 - Rewrite TYPO3 CMS Core‣ 2006 - Start from scratchNo Framework provided everything‣ ... continuous team growthDienstag, 28. Mai 13
  14. 14. How it began‣ 2005 - Rewrite TYPO3 CMS Core‣ 2006 - Start from scratchNo Framework provided everything‣ ... continuous team growth‣ 2011 - Release of Flow 1.0Dienstag, 28. Mai 13
  15. 15. PHP Good PointsDienstag, 28. Mai 13
  16. 16. Most Used WebLanguageDienstag, 28. Mai 13
  17. 17. Easy To LearnDienstag, 28. Mai 13
  18. 18. Available On ManyServersDienstag, 28. Mai 13
  19. 19. PHP DrawbacksDienstag, 28. Mai 13
  20. 20. Bad ReputationMany “spaghetti code” projectsDienstag, 28. Mai 13
  21. 21. Considered UglyDienstag, 28. Mai 13
  22. 22. Language FeaturesDienstag, 28. Mai 13
  23. 23. Dienstag, 28. Mai 13
  24. 24. Patterns &PhilosophyDienstag, 28. Mai 13
  25. 25. We are biased!Dienstag, 28. Mai 13
  26. 26. Domain DrivenDesignas explained by Eric EvansDienstag, 28. Mai 13
  27. 27. DDD in a nutshellDienstag, 28. Mai 13
  28. 28. DDD in a nutshell‣ DomainDienstag, 28. Mai 13
  29. 29. DDD in a nutshell‣ Domain‣ Ubiquitous LanguageDienstag, 28. Mai 13
  30. 30. DDD in a nutshell‣ Domain‣ Ubiquitous Language‣ ModelDienstag, 28. Mai 13
  31. 31. DDD in a nutshell‣ Domain‣ Ubiquitous Language‣ Model‣ Aggregate Root and RepositoriesDienstag, 28. Mai 13
  32. 32. (Web) MVCModel-View-ControllerDienstag, 28. Mai 13
  33. 33. ModelControllerView(HTTP) Request(HTTP) ResponseDienstag, 28. Mai 13
  34. 34. Convention OverConfigurationDienstag, 28. Mai 13
  35. 35. Typical file structureVendor.PackageNameClasses...ControllerDomainModelRepositoryConfigurationDocumentationMigrationsResourcesPrivatePublicTestsDienstag, 28. Mai 13
  36. 36. DependencyInjectionDienstag, 28. Mai 13
  37. 37. DI made simpleclass ActionController extends AbstractController {/*** @FlowInject* @var TYPO3FlowObjectObjectManagerInterface*/protected $objectManager;/*** @FlowInject* @var TYPO3FlowReflectionReflectionService*/protected $reflectionService;Dienstag, 28. Mai 13
  38. 38. Signal / SlotAlso called Observer PatternDienstag, 28. Mai 13
  39. 39. Emit / ConnectDienstag, 28. Mai 13
  40. 40. Aspect OrientedProgrammingDienstag, 28. Mai 13
  41. 41. Separation Of ConcernsDienstag, 28. Mai 13
  42. 42. Proxy ClassesDienstag, 28. Mai 13
  43. 43. Making PHPCode BeautifulDienstag, 28. Mai 13
  44. 44. Property MappingDienstag, 28. Mai 13
  45. 45. Get useful arguments/*** Action for creating a temporary account** @param TYPO3TestDomainModelRegistration $reg* @return void*/public function accountAction( ↵TYPO3TestDomainModelRegistration $reg) {$accountIdentifier = $reg->getUsername();Dienstag, 28. Mai 13
  46. 46. DoctrineDienstag, 28. Mai 13
  47. 47. ORMObject Relational MappingDienstag, 28. Mai 13
  48. 48. Database AbstractionDienstag, 28. Mai 13
  49. 49. MigrationsDienstag, 28. Mai 13
  50. 50. SecurityDienstag, 28. Mai 13
  51. 51. AuthenticationWho are you?Dienstag, 28. Mai 13
  52. 52. AuthorizationWhat are you allowed to do?Dienstag, 28. Mai 13
  53. 53. Content SecurityQuery RewritingDienstag, 28. Mai 13
  54. 54. Touchless Securityresources:methods:BackendController: ↵method(FullNameSpaceBackendController->.*Action())AdminController: ↵method(FullNameSpaceAdminController->.*Action())roles:Editor: [TYPO3.TYPO3CR:Administrator]Administrator: [ Editor ]acls:Administrator:methods:AdminController: GRANTEditor:methods:BackendController: GRANTDienstag, 28. Mai 13
  55. 55. Application FirewallStop RequestsDienstag, 28. Mai 13
  56. 56. Command LineDienstag, 28. Mai 13
  57. 57. Framework commandsDienstag, 28. Mai 13
  58. 58. Add your own commandsDienstag, 28. Mai 13
  59. 59. FluidDienstag, 28. Mai 13
  60. 60. XML ConformTemplatesDienstag, 28. Mai 13
  61. 61. Basic stringspublic function simpleAction() {$name = ‘Christian’;$this->view->assign(‘name’, $name);}Dienstag, 28. Mai 13
  62. 62. Basic strings<html><head></head><body><p>Hello World, I am {name}!</p></body></html>Dienstag, 28. Mai 13
  63. 63. Objectspublic function simpleAction() {$accounts = $this->accountRepository->findAll();$this->view->assign(‘accounts’, $accounts);}Dienstag, 28. Mai 13
  64. 64. Objects / Iteration<html><head></head><body><ul><f:for each=”{accounts}” as=”account”><li>{account.identifier}</li></f:for></ul></body></html>Dienstag, 28. Mai 13
  65. 65. SessionsDienstag, 28. Mai 13
  66. 66. Session Scope/**** @FlowScope("session")*/class Basket {/**** @var array*/protected $items;/*** @return array*/public function getItems() {return $this->items;}Dienstag, 28. Mai 13
  67. 67. Using the Session Objectclass MyController {/**** @FlowInject* @var TYPO3FlowSessionSessionInterface*/protected $sessionpublic function storeDataAction($data) {$this->session->putData(‘myDataKey’, $data);}public function getDataAction() {$data = $this->session->getData(‘myDataKey’);$this->view->assign(‘sessionData’, $data);}}Dienstag, 28. Mai 13
  68. 68. Dienstag, 28. Mai 13
  69. 69. StandardsDienstag, 28. Mai 13
  70. 70. PHP-FIGFramework Interoperability GroupDienstag, 28. Mai 13
  71. 71. PSR-0AutoloadingDienstag, 28. Mai 13
  72. 72. PSR-1Coding StandardsDienstag, 28. Mai 13
  73. 73. ComposerDienstag, 28. Mai 13
  74. 74. Test DrivenDevelopmentDienstag, 28. Mai 13
  75. 75. More To DiscoverDienstag, 28. Mai 13
  76. 76. No time in this talk had...‣ Internationalization‣ Caching‣ Resource Handling‣ Validation‣ Routing‣ ...Dienstag, 28. Mai 13
  77. 77. Existing ProjectsDienstag, 28. Mai 13
  78. 78. Dienstag, 28. Mai 13
  79. 79. Dienstag, 28. Mai 13
  80. 80. Dienstag, 28. Mai 13
  81. 81. Dienstag, 28. Mai 13
  82. 82. And a lot more...Dienstag, 28. Mai 13
  83. 83. @daskitsunet‣ like Books, Music, Tea and more‣ Flow and Neos Community Contact‣ Freelance Trainer / Developer‣ plays the piano‣ christian@kitsunet.deDienstag, 28. Mai 13
  84. 84. Thank you!Dienstag, 28. Mai 13

×