Date post: | 29-Jan-2018 |
Category: |
Technology |
Upload: | manuel-baldassarri |
View: | 1,497 times |
Download: | 0 times |
Symfony CMFun nuovo paradigma per la gestione dei contenuti
Symfony CMFun nuovo paradigma per la gestione dei contenuti
buon
Symfony CMFun nuovo paradigma per la gestione dei contenuti
buon
approccio
http://phpday.it #phpday
?
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 JCR1JSR283 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 repositoryJava implementation
http://phpday.it #phpday
Architecture
content repository | Jackrabbit
phpcr | Jackalope
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
content repository | Jackrabbit
phpcr | Jackalope
doctrine | phpcr-odm
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
content repository | Jackrabbit
phpcr | Jackalope
doctrine | phpcr-odm
Sf2 | doctrinePHPCRBundle
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 CampCesena, 29-30 of Julyhttp://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