Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Symfony CMF: un nuovo paradigma per la gestione dei contenuti


Published on

Presentation from phpday2011. La modellazione e gestione dei contenuti costituisce un dominio complesso. Soluzioni standard come Drupal, Joomla o Wordpress si adattano con difficoltà sul dominio di uno specifico cliente; d'altro canto soluzioni fatte in casa costano in termini di tempi di sviluppo e riusabilità. Non esiste allora ""one cms to rule them all""?

Nel talk verrà introdotto il progetto Symfony CMF discutendo tra l'altro di:
- standard per la modellazione dei contenuti
- modellazione ed organizzazione dei contenuti
- scelte architetturali
- linee guida per l'utlizzo del cmf

Published in: Technology
  • Login to see the comments

  • Be the first to like this

Symfony CMF: un nuovo paradigma per la gestione dei contenuti

  1. 1. Symfony CMFun nuovo paradigma per la gestione dei contenuti
  2. 2. Symfony CMF buonun nuovo paradigma per la gestione dei contenuti
  3. 3. Symfony CMF buonun nuovo paradigma per la gestione dei contenuti approccio
  4. 4. ? #phpday
  5. 5. CMS are awesome! #phpday
  6. 6. No REALLY! CMSes are awesome! #phpday
  7. 7. CMSes are awesome if you are an end user! Click click #phpday
  8. 8. CMSes are awesome if you are a sales guy! Brand #phpday
  9. 9. CMSes sucks if you are a developer! CMS first, framework second #phpday
  10. 10. CMSes nightmares • no clean separation of configuration, logic and content • no clean deployment and staging concept • inconsistent cache layers • lots of legacy baggage • NIH (not invented here) syndrom #phpday
  11. 11. Do we also suffer from NIH? • Based ourselves as much on standard tools and specs • Deliver value within a reasonable time #phpday
  12. 12. CMF = Content Management Framework • In other words: its a toolbox to create your own custom CMS • Not a one size fits all, but increase code sharing • Imagine Diem, Sympal, Apostrophe all build on the same content foundation #phpday
  13. 13. Mission • The Symfony CMF project makes it easier for developers to add CMS functionality to applications built with the Symfony2 PHP framework. Key development principles for the provided set of bundles are scalability, usability, documentation and testing #phpday
  14. 14. Contents #phpday
  15. 15. Contents #phpday
  16. 16. i18n #phpday
  17. 17. Versioning #phpday
  18. 18. Relational DB #phpday
  19. 19. Architecture content repository | Jackrabbit #phpday
  20. 20. Content Repository • A content repository is a generic application data “super store.” • Can handle both small and large-scale data interactions • Is expected to manipulate and store structured and unstructured content that vary dynamically #phpday
  21. 21. JSR170 aka JCR1 JSR283 aka JCR2 • how data are stored within the repository is identified and structured from the point of view of the client #phpday
  22. 22. Workspaces • Multiple workspaces, each with its own name and root node • Is similar to a Unix file system structure • Each workspace is independent #phpday
  23. 23. Nodes • Are identified by the path where are stored • ex. id: “/my/path/under/water/fish” • Can be created, deleted, modified, copied... #phpday
  24. 24. Properties • Typed attribute: • STRING, URI, BOOLEAN, LONG, DOUBLE, DECIMAL, BINARY, DATE, NAME, PATH, WEAKREFERENCE REFERENCE • jcr:created, jcr:mimeType #phpday
  25. 25. Nodes • Are typed using namespaced names • nt:file, nt:folder... • nt:unstructured #phpday
  26. 26. Node Mixins • A mixin node type can be assigned to a node during that nodes lifetime • mix:referenceable • jcr:uuid #phpday
  27. 27. Node Mixins • mix:versionable • jcr:versionHistory • jcr:predecessors • jcr:baseVersion • jcr:isCheckedOut • jcr:mergeFailed #phpday
  28. 28. Content repository Java implementation #phpday
  29. 29. Architecture phpcr | Jackalope content repository | Jackrabbit #phpday
  30. 30. PHPCR • Aims to provide a standard API that can be used by any PHP content management system to interface with any content repository. • Several Implementations • Jackalope on Jackrabbit • Jackalope on Doctrine DBAL • Midgard2 PHPCR #phpday
  31. 31. PHPCR • PHPCR has been submitted to JCR • #phpday
  32. 32. #phpday
  33. 33. Architecture doctrine | phpcr-odm phpcr | Jackalope content repository | Jackrabbit #phpday
  34. 34. PHPCR-ODM • Sits on top of jackalope • Works like MongoDB or CouchDB ODM, but also includes a tree/graph, versioning and ACL API #phpday
  35. 35. PHPCR-ODM #phpday
  36. 36. Document Class #phpday
  37. 37. Repository Class #phpday
  38. 38. CRUD #phpday
  39. 39. Traversal #phpday
  40. 40. Versioning #phpday
  41. 41. Not all data fits well in PHPCR/JCR • For example aggregation is better done in an RDBMS • Store web store product description in PHPCR/ JCR • Store web store inventory and orders in RDBMS #phpday
  42. 42. Architecture Sf2 | doctrinePHPCRBundle doctrine | phpcr-odm phpcr | Jackalope content repository | Jackrabbit #phpday
  43. 43. DoctrinePHPCRBundle • Document Manager available in the DIC #phpday
  44. 44. DEMO #phpday
  45. 45. Roadmap • PHPCR-ODM: @Child, @Children, @Parent, @ReferenceOne, @ReferenceMany, ... • Make AdminBundle compatible • Create frontend Bundles #phpday
  46. 46. Eating your own dog food • Ideato is rebuilding its site on top of CMF #phpday
  47. 47. Many companies are committed to the effort #phpday
  48. 48. Symfony CMF Camp Cesena, 29-30 of July #phpday
  49. 49. Resources • irc://freenode/#symfony-cmf • • • • #phpday
  50. 50. Thanks! Michele Orselli Manuel Baldassarri mb@ideato.it #phpday