SlideShare a Scribd company logo
Symfony CMF
un nuovo paradigma per la gestione dei contenuti
Symfony CMF
   buon
un nuovo paradigma per la gestione dei contenuti
Symfony CMF
   buon
un nuovo paradigma per la gestione dei contenuti
         approccio
?
http://phpday.it       #phpday
CMS are awesome!


http://phpday.it                  #phpday
No REALLY!
            CMSes are awesome!


http://phpday.it                 #phpday
CMSes are awesome if
           you are an end user!
                Click click

http://phpday.it              #phpday
CMSes are awesome if
           you are a sales guy!
                 Brand

http://phpday.it              #phpday
CMSes sucks if you are a
                developer!
        CMS first, framework second


http://phpday.it                #phpday
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

http://phpday.it                                           #phpday
Do we also suffer from
                 NIH?
          •   Based ourselves as much on standard tools and specs

          •   Deliver value within a reasonable time




http://phpday.it                                                    #phpday
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


http://phpday.it                                        #phpday
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


http://phpday.it                                        #phpday
Contents




http://phpday.it              #phpday
Contents




http://phpday.it              #phpday
i18n




http://phpday.it          #phpday
Versioning




http://phpday.it                #phpday
Relational DB




http://phpday.it                   #phpday
Architecture




                   content repository | Jackrabbit



http://phpday.it                                     #phpday
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

http://phpday.it                                     #phpday
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




http://phpday.it                                       #phpday
Workspaces

          • Multiple workspaces, each with its own
              name and root node
          • Is similar to a Unix file system structure
          • Each workspace is independent

http://phpday.it                                        #phpday
Nodes

          • Are identified by the path where are stored
           • ex. id: “/my/path/under/water/fish”
          • Can be created, deleted, modified, copied...

http://phpday.it                                    #phpday
Properties

          • Typed attribute:
             •     STRING, URI, BOOLEAN, LONG, DOUBLE,
                   DECIMAL, BINARY, DATE, NAME, PATH,
                   WEAKREFERENCE REFERENCE

             •     jcr:created, jcr:mimeType




http://phpday.it                                         #phpday
Nodes

          • Are typed using namespaced names
           • nt:file, nt:folder...
           • nt:unstructured

http://phpday.it                               #phpday
Node Mixins

                   • A mixin node type can be assigned to a
                     node during that node's lifetime


                   • mix:referenceable
                    • jcr:uuid

http://phpday.it                                         #phpday
Node Mixins
             • mix:versionable
              • jcr:versionHistory
              • jcr:predecessors
              • jcr:baseVersion
              • jcr:isCheckedOut
              • jcr:mergeFailed
http://phpday.it                     #phpday
Content repository
              Java implementation




http://phpday.it                    #phpday
Architecture



                         phpcr | Jackalope

                   content repository | Jackrabbit



http://phpday.it                                     #phpday
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

http://phpday.it                                     #phpday
PHPCR


          • PHPCR has been submitted to JCR
          • http://phpcr.github.com/


http://phpday.it                              #phpday
http://phpday.it   #phpday
Architecture

                       doctrine | phpcr-odm

                         phpcr | Jackalope

                   content repository | Jackrabbit



http://phpday.it                                     #phpday
PHPCR-ODM

          • Sits on top of jackalope
          • Works like MongoDB or CouchDB ODM,
              but also includes a tree/graph, versioning
              and ACL API



http://phpday.it                                           #phpday
PHPCR-ODM




http://phpday.it               #phpday
Document Class




http://phpday.it                    #phpday
Repository Class




http://phpday.it                      #phpday
CRUD




http://phpday.it          #phpday
Traversal




http://phpday.it               #phpday
Versioning




http://phpday.it                #phpday
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




http://phpday.it                                              #phpday
Architecture
                    Sf2 | doctrinePHPCRBundle

                       doctrine | phpcr-odm

                         phpcr | Jackalope

                   content repository | Jackrabbit



http://phpday.it                                     #phpday
DoctrinePHPCRBundle




          • Document Manager available in the DIC


http://phpday.it                                    #phpday
DEMO


http://phpday.it          #phpday
Roadmap

          •   PHPCR-ODM: @Child, @Children, @Parent,
              @ReferenceOne, @ReferenceMany, ...

          •   Make AdminBundle compatible

          •   Create frontend Bundles




http://phpday.it                                       #phpday
Eating your own dog food




          • Ideato is rebuilding its site on top of CMF


http://phpday.it                                      #phpday
Many companies are
                   committed to the effort




http://phpday.it                             #phpday
Symfony CMF Camp
                    Cesena, 29-30 of July
                     http://www.unsito.com/c4




http://phpday.it                                #phpday
Resources

          •   irc://freenode/#symfony-cmf

          •   http://cmf.symfony.com/

          •   https://github.com/symfony-cmf/symfony-cmf/wiki

          •   http://jcp.org/en/jsr/detail?id=283

          •   http://jcp.org/en/jsr/detail?id=333



http://phpday.it                                            #phpday
Thanks!

                           http://joind.in/3023


                   Michele Orselli   Manuel Baldassarri
                     mo@ideato.it       mb@ideato.it



http://phpday.it                                          #phpday

More Related Content

Viewers also liked (17)

Dada hareketi
Dada hareketiDada hareketi
Dada hareketi
 
Biology unit 1 cell (reparado)
Biology unit 1 cell (reparado)Biology unit 1 cell (reparado)
Biology unit 1 cell (reparado)
 
Automazione quotidiana in php
Automazione quotidiana in phpAutomazione quotidiana in php
Automazione quotidiana in php
 
Lymphatic system mine
Lymphatic system mineLymphatic system mine
Lymphatic system mine
 
From * to Symfony2
From * to Symfony2From * to Symfony2
From * to Symfony2
 
4to 4 excretion
4to 4 excretion4to 4 excretion
4to 4 excretion
 
Symfony2 security layer
Symfony2 security layerSymfony2 security layer
Symfony2 security layer
 
Transport in cells 3rd
Transport in cells 3rdTransport in cells 3rd
Transport in cells 3rd
 
Heredity
HeredityHeredity
Heredity
 
Dada hareketi
Dada hareketiDada hareketi
Dada hareketi
 
Un CMS in 25min con Symfony CMF
Un CMS in 25min con Symfony CMFUn CMS in 25min con Symfony CMF
Un CMS in 25min con Symfony CMF
 
Nervous system and coordination brian & friends para 4to
Nervous system and coordination brian & friends para 4toNervous system and coordination brian & friends para 4to
Nervous system and coordination brian & friends para 4to
 
Umutsecondlife
UmutsecondlifeUmutsecondlife
Umutsecondlife
 
Ant vs Phing
Ant vs PhingAnt vs Phing
Ant vs Phing
 
Skin homeostasis
Skin homeostasisSkin homeostasis
Skin homeostasis
 
Endocrine system mine for 4th
Endocrine system mine for 4thEndocrine system mine for 4th
Endocrine system mine for 4th
 
Daftar kata tahun 1 kvkv
Daftar kata tahun 1 kvkvDaftar kata tahun 1 kvkv
Daftar kata tahun 1 kvkv
 

Similar to Symfony CMF: un nuovo paradigma per la gestione dei contenuti

Organinzing Your PHP Projects (2010 Memphis PHP)
Organinzing Your PHP Projects (2010 Memphis PHP)Organinzing Your PHP Projects (2010 Memphis PHP)
Organinzing Your PHP Projects (2010 Memphis PHP)Paul Jones
 
Organizing Your PHP Projects (2010 ConFoo)
Organizing Your PHP Projects (2010 ConFoo)Organizing Your PHP Projects (2010 ConFoo)
Organizing Your PHP Projects (2010 ConFoo)Paul Jones
 
Decoupling Content Management with Create.js and PHPCR
Decoupling Content Management with Create.js and PHPCRDecoupling Content Management with Create.js and PHPCR
Decoupling Content Management with Create.js and PHPCRHenri Bergius
 
Howtobuildyourownframework
HowtobuildyourownframeworkHowtobuildyourownframework
Howtobuildyourownframeworkhazzaz
 
Decoupling Content Management
Decoupling Content ManagementDecoupling Content Management
Decoupling Content ManagementHenri Bergius
 
Unleashing Creative Freedom with MODX (2015-07-21 @ PHP FRL)
Unleashing Creative Freedom with MODX (2015-07-21 @ PHP FRL)Unleashing Creative Freedom with MODX (2015-07-21 @ PHP FRL)
Unleashing Creative Freedom with MODX (2015-07-21 @ PHP FRL)Mark Hamstra
 
Making the Most of Modern PHP in Drupal 7
Making the Most of Modern PHP in Drupal 7Making the Most of Modern PHP in Drupal 7
Making the Most of Modern PHP in Drupal 7Ryan Szrama
 
PHPCR e API Platform: cosa significa davvero sviluppare un CMF con Symfony
PHPCR e API Platform: cosa significa davvero sviluppare un CMF con SymfonyPHPCR e API Platform: cosa significa davvero sviluppare un CMF con Symfony
PHPCR e API Platform: cosa significa davvero sviluppare un CMF con SymfonyInnoteam Srl
 
Advanced php code igniter framework
Advanced php code igniter frameworkAdvanced php code igniter framework
Advanced php code igniter frameworkFahim Faysal Kabir
 
WCM-9 WCM Solutions with Drupal and Alfresco
WCM-9 WCM Solutions with Drupal and AlfrescoWCM-9 WCM Solutions with Drupal and Alfresco
WCM-9 WCM Solutions with Drupal and AlfrescoAlfresco Software
 
Industrialise PHP ~ ZendCon Europe 2013
Industrialise PHP ~ ZendCon Europe 2013Industrialise PHP ~ ZendCon Europe 2013
Industrialise PHP ~ ZendCon Europe 2013ekino
 
Northeast PHP - High Performance PHP
Northeast PHP - High Performance PHPNortheast PHP - High Performance PHP
Northeast PHP - High Performance PHPJonathan Klein
 
They why behind php frameworks
They why behind php frameworksThey why behind php frameworks
They why behind php frameworksKirk Madera
 
Scaling with Symfony - PHP UK
Scaling with Symfony - PHP UKScaling with Symfony - PHP UK
Scaling with Symfony - PHP UKRicard Clau
 
MongoDB quickstart for Java, PHP, and Python developers
MongoDB quickstart for Java, PHP, and Python developersMongoDB quickstart for Java, PHP, and Python developers
MongoDB quickstart for Java, PHP, and Python developersRick Hightower
 
Php through the eyes of a hoster confoo
Php through the eyes of a hoster confooPhp through the eyes of a hoster confoo
Php through the eyes of a hoster confooCombell NV
 
Mongo DB for Java, Python and PHP Developers
Mongo DB for Java, Python and PHP DevelopersMongo DB for Java, Python and PHP Developers
Mongo DB for Java, Python and PHP DevelopersRick Hightower
 

Similar to Symfony CMF: un nuovo paradigma per la gestione dei contenuti (20)

Organinzing Your PHP Projects (2010 Memphis PHP)
Organinzing Your PHP Projects (2010 Memphis PHP)Organinzing Your PHP Projects (2010 Memphis PHP)
Organinzing Your PHP Projects (2010 Memphis PHP)
 
Organizing Your PHP Projects (2010 ConFoo)
Organizing Your PHP Projects (2010 ConFoo)Organizing Your PHP Projects (2010 ConFoo)
Organizing Your PHP Projects (2010 ConFoo)
 
Decoupling Content Management with Create.js and PHPCR
Decoupling Content Management with Create.js and PHPCRDecoupling Content Management with Create.js and PHPCR
Decoupling Content Management with Create.js and PHPCR
 
Howtobuildyourownframework
HowtobuildyourownframeworkHowtobuildyourownframework
Howtobuildyourownframework
 
Decoupling Content Management
Decoupling Content ManagementDecoupling Content Management
Decoupling Content Management
 
Unleashing Creative Freedom with MODX (2015-07-21 @ PHP FRL)
Unleashing Creative Freedom with MODX (2015-07-21 @ PHP FRL)Unleashing Creative Freedom with MODX (2015-07-21 @ PHP FRL)
Unleashing Creative Freedom with MODX (2015-07-21 @ PHP FRL)
 
Making the Most of Modern PHP in Drupal 7
Making the Most of Modern PHP in Drupal 7Making the Most of Modern PHP in Drupal 7
Making the Most of Modern PHP in Drupal 7
 
PHPCR e API Platform: cosa significa davvero sviluppare un CMF con Symfony
PHPCR e API Platform: cosa significa davvero sviluppare un CMF con SymfonyPHPCR e API Platform: cosa significa davvero sviluppare un CMF con Symfony
PHPCR e API Platform: cosa significa davvero sviluppare un CMF con Symfony
 
Advanced php code igniter framework
Advanced php code igniter frameworkAdvanced php code igniter framework
Advanced php code igniter framework
 
WCM-9 WCM Solutions with Drupal and Alfresco
WCM-9 WCM Solutions with Drupal and AlfrescoWCM-9 WCM Solutions with Drupal and Alfresco
WCM-9 WCM Solutions with Drupal and Alfresco
 
Industrialise PHP ~ ZendCon Europe 2013
Industrialise PHP ~ ZendCon Europe 2013Industrialise PHP ~ ZendCon Europe 2013
Industrialise PHP ~ ZendCon Europe 2013
 
Northeast PHP - High Performance PHP
Northeast PHP - High Performance PHPNortheast PHP - High Performance PHP
Northeast PHP - High Performance PHP
 
PHP at Yahoo!
PHP at Yahoo!PHP at Yahoo!
PHP at Yahoo!
 
They why behind php frameworks
They why behind php frameworksThey why behind php frameworks
They why behind php frameworks
 
Scaling with Symfony - PHP UK
Scaling with Symfony - PHP UKScaling with Symfony - PHP UK
Scaling with Symfony - PHP UK
 
Php
PhpPhp
Php
 
MongoDB quickstart for Java, PHP, and Python developers
MongoDB quickstart for Java, PHP, and Python developersMongoDB quickstart for Java, PHP, and Python developers
MongoDB quickstart for Java, PHP, and Python developers
 
Php through the eyes of a hoster confoo
Php through the eyes of a hoster confooPhp through the eyes of a hoster confoo
Php through the eyes of a hoster confoo
 
Mongo DB for Java, Python and PHP Developers
Mongo DB for Java, Python and PHP DevelopersMongo DB for Java, Python and PHP Developers
Mongo DB for Java, Python and PHP Developers
 
Zend Framework MVC driven ExtJS
Zend Framework MVC driven ExtJSZend Framework MVC driven ExtJS
Zend Framework MVC driven ExtJS
 

Recently uploaded

Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlPeter Udo Diehl
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Product School
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesThousandEyes
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoTAnalytics
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutesconfluent
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
 
In-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsIn-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsExpeed Software
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyJohn Staveley
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Product School
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsVlad Stirbu
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...Product School
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
 
UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1DianaGray10
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Product School
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance
 

Recently uploaded (20)

Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutes
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
In-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsIn-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT Professionals
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John Staveley
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIs
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 

Symfony CMF: un nuovo paradigma per la gestione dei contenuti

  • 1. Symfony CMF un nuovo paradigma per la gestione dei contenuti
  • 2. Symfony CMF buon un nuovo paradigma per la gestione dei contenuti
  • 3. Symfony CMF buon un nuovo paradigma per la gestione dei contenuti approccio
  • 6. No REALLY! CMSes are awesome! http://phpday.it #phpday
  • 7. CMSes are awesome if you are an end user! Click click http://phpday.it #phpday
  • 8. CMSes are awesome if you are a sales guy! Brand http://phpday.it #phpday
  • 9. CMSes sucks if you are a developer! CMS first, framework second http://phpday.it #phpday
  • 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 http://phpday.it #phpday
  • 11. Do we also suffer from NIH? • Based ourselves as much on standard tools and specs • Deliver value within a reasonable time http://phpday.it #phpday
  • 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 http://phpday.it #phpday
  • 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 http://phpday.it #phpday
  • 19. Architecture content repository | Jackrabbit http://phpday.it #phpday
  • 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 http://phpday.it #phpday
  • 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 http://phpday.it #phpday
  • 22. Workspaces • Multiple workspaces, each with its own name and root node • Is similar to a Unix file system structure • Each workspace is independent http://phpday.it #phpday
  • 23. Nodes • Are identified by the path where are stored • ex. id: “/my/path/under/water/fish” • Can be created, deleted, modified, copied... http://phpday.it #phpday
  • 24. Properties • Typed attribute: • STRING, URI, BOOLEAN, LONG, DOUBLE, DECIMAL, BINARY, DATE, NAME, PATH, WEAKREFERENCE REFERENCE • jcr:created, jcr:mimeType http://phpday.it #phpday
  • 25. Nodes • Are typed using namespaced names • nt:file, nt:folder... • nt:unstructured http://phpday.it #phpday
  • 26. Node Mixins • A mixin node type can be assigned to a node during that node's lifetime • mix:referenceable • jcr:uuid http://phpday.it #phpday
  • 27. Node Mixins • mix:versionable • jcr:versionHistory • jcr:predecessors • jcr:baseVersion • jcr:isCheckedOut • jcr:mergeFailed http://phpday.it #phpday
  • 28. Content repository Java implementation http://phpday.it #phpday
  • 29. Architecture phpcr | Jackalope content repository | Jackrabbit http://phpday.it #phpday
  • 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 http://phpday.it #phpday
  • 31. PHPCR • PHPCR has been submitted to JCR • http://phpcr.github.com/ http://phpday.it #phpday
  • 32. http://phpday.it #phpday
  • 33. Architecture doctrine | phpcr-odm phpcr | Jackalope content repository | Jackrabbit http://phpday.it #phpday
  • 34. PHPCR-ODM • Sits on top of jackalope • Works like MongoDB or CouchDB ODM, but also includes a tree/graph, versioning and ACL API http://phpday.it #phpday
  • 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 http://phpday.it #phpday
  • 42. Architecture Sf2 | doctrinePHPCRBundle doctrine | phpcr-odm phpcr | Jackalope content repository | Jackrabbit http://phpday.it #phpday
  • 43. DoctrinePHPCRBundle • Document Manager available in the DIC http://phpday.it #phpday
  • 45. Roadmap • PHPCR-ODM: @Child, @Children, @Parent, @ReferenceOne, @ReferenceMany, ... • Make AdminBundle compatible • Create frontend Bundles http://phpday.it #phpday
  • 46. Eating your own dog food • Ideato is rebuilding its site on top of CMF http://phpday.it #phpday
  • 47. Many companies are committed to the effort http://phpday.it #phpday
  • 48. Symfony CMF Camp Cesena, 29-30 of July http://www.unsito.com/c4 http://phpday.it #phpday
  • 49. Resources • irc://freenode/#symfony-cmf • http://cmf.symfony.com/ • https://github.com/symfony-cmf/symfony-cmf/wiki • http://jcp.org/en/jsr/detail?id=283 • http://jcp.org/en/jsr/detail?id=333 http://phpday.it #phpday
  • 50. Thanks! http://joind.in/3023 Michele Orselli Manuel Baldassarri mo@ideato.it mb@ideato.it http://phpday.it #phpday

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. Chi sa cos’è Sf2/Doctrine2?\nChi ha usato Sf2/Doctrine2?\nChi ha “visto” SfCMF?\n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. 9999 conf per rendere il prodotto a misura di 10000 casi\ndeploy upgrade, conf su db difficili da replicare (velocemente) o esportare\ncache oggetti, viste, conf, diversi layer difficili da trattare quando qualcosa non va\nstrumenti vecchi codice vecchio\nlibrerie esterne ex. layer db, templating\n
  11. non stiamo ricadendo nella sindrome poichè invece di concentrarci su sviluppare un prodotto, cerchiamo di guardare agli standard e specifiche consolidate per assemblare una cassetta degli attrezzi necessari per creare valore in tempo ragionevole\n
  12. non un unico prodotto che va bene per tutti ma strumenti che permettano di “creare” un cms adhoc per ogni situazione. Strumenti piccoli che posso assemblare assieme per le esigenze specifiche.\n
  13. \n
  14. I contenuti su web sono rappresentabili come un grafo.\nNella maggior parte dei casi posso semplificare con un albero.\n
  15. Uno dei problemi che si hanno nella progettazione è che i contenuti sono organizzati in un albero, DB relazionali sono stretti\n
  16. \n
  17. Tutte queste richieste non sono facilmente realizzabili con DB relazionali, non sono nati per fare questo. Per questo si è pensato ad un database documentale a grafo\n
  18. Tutte queste richieste non sono facilmente realizzabili con DB relazionali, non sono nati per fare questo. Per questo si è pensato ad un database documentale a grafo\n
  19. \n
  20. Managing users and access control lists\n
  21. Content Repository API for Java Technology\nE’ una specifica Java per cercare di standardizzare l’interfaccia del content repository e come questo permetta di indentificare le informazioni e la loro struttura\nL1 read-only: inizializzazione sessione, lettura dei nodi e proprietà, esportazione xml, query xpath\nL2: scrittura dei contenuti, importazione da altre fonti, modifica dei datatipi\nJava Specification Requests\n\n
  22. Il cuore della specifica è l’organizzazione e il trattamento dei dati che viene chiamato Content Model\n
  23. \n
  24. single value, multivalue\n
  25. tipi di nodo: definiscono una struttura di base\ni nodi tipizzati definiscono vincoli sulla struttura dell’albero\n
  26. I mixin sono dei behaviour\n
  27. \n
  28. esistono diverse implementazioni CR noi utilizzato questo, ci sono diverse versioni tra cui versioni embedded (es in Tomcat) oppure versioni stand-alone che noi utilizziamo\n\n
  29. \n
  30. porting in PHP delle API definite nelle specifiche\ninsieme di interfacce e non l’implementazione\ndefinisce quali interfacce deve soddisfare un client per poter colloquiare con generico CR\n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n