SlideShare ist ein Scribd-Unternehmen logo
1 von 50
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

Weitere ähnliche Inhalte

Andere mochten auch

Paraccel/Database Architechs Press Release
Paraccel/Database Architechs Press ReleaseParaccel/Database Architechs Press Release
Paraccel/Database Architechs Press ReleaseDatabase Architechs
 
Dealing with Continuous Data Processing, ConFoo 2012
Dealing with Continuous Data Processing, ConFoo 2012Dealing with Continuous Data Processing, ConFoo 2012
Dealing with Continuous Data Processing, ConFoo 2012Michael Peacock
 
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
 
Trouvez la faille! - Confoo 2012
Trouvez la faille! - Confoo 2012Trouvez la faille! - Confoo 2012
Trouvez la faille! - Confoo 2012Antonio Fontes
 
Time Table Management System
Time Table Management SystemTime Table Management System
Time Table Management SystemMuhammad Zeeshan
 

Andere mochten auch (6)

Paraccel/Database Architechs Press Release
Paraccel/Database Architechs Press ReleaseParaccel/Database Architechs Press Release
Paraccel/Database Architechs Press Release
 
Running on Amazon EC2
Running on Amazon EC2Running on Amazon EC2
Running on Amazon EC2
 
Dealing with Continuous Data Processing, ConFoo 2012
Dealing with Continuous Data Processing, ConFoo 2012Dealing with Continuous Data Processing, ConFoo 2012
Dealing with Continuous Data Processing, ConFoo 2012
 
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
 
Trouvez la faille! - Confoo 2012
Trouvez la faille! - Confoo 2012Trouvez la faille! - Confoo 2012
Trouvez la faille! - Confoo 2012
 
Time Table Management System
Time Table Management SystemTime Table Management System
Time Table Management System
 

Ähnlich wie 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
 
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
 
2013 - Dustin whittle - Escalando PHP en la vida real
2013 - Dustin whittle - Escalando PHP en la vida real2013 - Dustin whittle - Escalando PHP en la vida real
2013 - Dustin whittle - Escalando PHP en la vida realPHP Conference Argentina
 

Ähnlich wie 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
 
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
 
2013 - Dustin whittle - Escalando PHP en la vida real
2013 - Dustin whittle - Escalando PHP en la vida real2013 - Dustin whittle - Escalando PHP en la vida real
2013 - Dustin whittle - Escalando PHP en la vida real
 

Mehr von Michele Orselli

Tackling Tech Debt with Rector
Tackling Tech Debt with RectorTackling Tech Debt with Rector
Tackling Tech Debt with RectorMichele Orselli
 
Comunicare, condividere e mantenere decisioni architetturali nei team di svil...
Comunicare, condividere e mantenere decisioni architetturali nei team di svil...Comunicare, condividere e mantenere decisioni architetturali nei team di svil...
Comunicare, condividere e mantenere decisioni architetturali nei team di svil...Michele Orselli
 
A recommendation engine for your applications codemotion ams
A recommendation engine for your applications codemotion amsA recommendation engine for your applications codemotion ams
A recommendation engine for your applications codemotion amsMichele Orselli
 
A recommendation engine for your applications phpday
A recommendation engine for your applications phpdayA recommendation engine for your applications phpday
A recommendation engine for your applications phpdayMichele Orselli
 
Hopping in clouds - phpuk 17
Hopping in clouds - phpuk 17Hopping in clouds - phpuk 17
Hopping in clouds - phpuk 17Michele Orselli
 
A recommendation engine for your php application
A recommendation engine for your php applicationA recommendation engine for your php application
A recommendation engine for your php applicationMichele Orselli
 
Symfony e micro (non così tanto) services
Symfony e micro (non così tanto) servicesSymfony e micro (non così tanto) services
Symfony e micro (non così tanto) servicesMichele Orselli
 
Hopping in clouds: a tale of migration from one cloud provider to another
Hopping in clouds: a tale of migration from one cloud provider to anotherHopping in clouds: a tale of migration from one cloud provider to another
Hopping in clouds: a tale of migration from one cloud provider to anotherMichele Orselli
 
Vagrant for real (codemotion rome 2016)
Vagrant for real (codemotion rome 2016)Vagrant for real (codemotion rome 2016)
Vagrant for real (codemotion rome 2016)Michele Orselli
 
Vagrant for real codemotion (moar tips! ;-))
Vagrant for real codemotion (moar tips! ;-))Vagrant for real codemotion (moar tips! ;-))
Vagrant for real codemotion (moar tips! ;-))Michele Orselli
 
Implementing data sync apis for mibile apps @cloudconf
Implementing data sync apis for mibile apps @cloudconfImplementing data sync apis for mibile apps @cloudconf
Implementing data sync apis for mibile apps @cloudconfMichele Orselli
 
Server side data sync for mobile apps with silex
Server side data sync for mobile apps with silexServer side data sync for mobile apps with silex
Server side data sync for mobile apps with silexMichele Orselli
 
Continuous, continuous, continuous
Continuous, continuous, continuousContinuous, continuous, continuous
Continuous, continuous, continuousMichele Orselli
 
Deploy a PHP App on Google App Engine
Deploy a PHP App on Google App EngineDeploy a PHP App on Google App Engine
Deploy a PHP App on Google App EngineMichele Orselli
 
Implementing Server Side Data Synchronization for Mobile Apps
Implementing Server Side Data Synchronization for Mobile AppsImplementing Server Side Data Synchronization for Mobile Apps
Implementing Server Side Data Synchronization for Mobile AppsMichele Orselli
 
Deploy a php app on Google App Engine
Deploy a php app on Google App EngineDeploy a php app on Google App Engine
Deploy a php app on Google App EngineMichele Orselli
 

Mehr von Michele Orselli (20)

Tackling Tech Debt with Rector
Tackling Tech Debt with RectorTackling Tech Debt with Rector
Tackling Tech Debt with Rector
 
Comunicare, condividere e mantenere decisioni architetturali nei team di svil...
Comunicare, condividere e mantenere decisioni architetturali nei team di svil...Comunicare, condividere e mantenere decisioni architetturali nei team di svil...
Comunicare, condividere e mantenere decisioni architetturali nei team di svil...
 
A dive into Symfony 4
A dive into Symfony 4A dive into Symfony 4
A dive into Symfony 4
 
A recommendation engine for your applications codemotion ams
A recommendation engine for your applications codemotion amsA recommendation engine for your applications codemotion ams
A recommendation engine for your applications codemotion ams
 
A recommendation engine for your applications phpday
A recommendation engine for your applications phpdayA recommendation engine for your applications phpday
A recommendation engine for your applications phpday
 
Hopping in clouds - phpuk 17
Hopping in clouds - phpuk 17Hopping in clouds - phpuk 17
Hopping in clouds - phpuk 17
 
A recommendation engine for your php application
A recommendation engine for your php applicationA recommendation engine for your php application
A recommendation engine for your php application
 
Symfony e micro (non così tanto) services
Symfony e micro (non così tanto) servicesSymfony e micro (non così tanto) services
Symfony e micro (non così tanto) services
 
Hopping in clouds: a tale of migration from one cloud provider to another
Hopping in clouds: a tale of migration from one cloud provider to anotherHopping in clouds: a tale of migration from one cloud provider to another
Hopping in clouds: a tale of migration from one cloud provider to another
 
Vagrant for real (codemotion rome 2016)
Vagrant for real (codemotion rome 2016)Vagrant for real (codemotion rome 2016)
Vagrant for real (codemotion rome 2016)
 
Vagrant for real codemotion (moar tips! ;-))
Vagrant for real codemotion (moar tips! ;-))Vagrant for real codemotion (moar tips! ;-))
Vagrant for real codemotion (moar tips! ;-))
 
Migrare a Symfony 3
Migrare a Symfony 3Migrare a Symfony 3
Migrare a Symfony 3
 
Vagrant for real
Vagrant for realVagrant for real
Vagrant for real
 
Implementing data sync apis for mibile apps @cloudconf
Implementing data sync apis for mibile apps @cloudconfImplementing data sync apis for mibile apps @cloudconf
Implementing data sync apis for mibile apps @cloudconf
 
Server side data sync for mobile apps with silex
Server side data sync for mobile apps with silexServer side data sync for mobile apps with silex
Server side data sync for mobile apps with silex
 
Continuous, continuous, continuous
Continuous, continuous, continuousContinuous, continuous, continuous
Continuous, continuous, continuous
 
Deploy a PHP App on Google App Engine
Deploy a PHP App on Google App EngineDeploy a PHP App on Google App Engine
Deploy a PHP App on Google App Engine
 
Implementing Server Side Data Synchronization for Mobile Apps
Implementing Server Side Data Synchronization for Mobile AppsImplementing Server Side Data Synchronization for Mobile Apps
Implementing Server Side Data Synchronization for Mobile Apps
 
Deploy a php app on Google App Engine
Deploy a php app on Google App EngineDeploy a php app on Google App Engine
Deploy a php app on Google App Engine
 
Sf2 wtf
Sf2 wtfSf2 wtf
Sf2 wtf
 

Kürzlich hochgeladen

GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusZilliz
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 

Kürzlich hochgeladen (20)

GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 

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

Hinweis der Redaktion

  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