@weaverryan
PHP Tutorial Screencasts
Drupal 8: Huge wins, a Bigger Community, & why you (and I) will
love it
PHP Tutorial Screencasts
knplabs.com github.com/weaverryan
• Lead contributor to the Symfony documentation !• KnpLabs US - Symfony consulting, training, Kumbaya !• Writer for KnpUniversity.com
screencasts
Buenos Dias!
!
!
!
!
!!• Husband of the much more talented @leannapelham
PHP Tutorial Screencasts
knplabs.com github.com/weaverryan
• Lead contributor to the Symfony documentation !• KnpLabs US - Symfony consulting, training, Kumbaya !• Writer for KnpUniversity.com
screencasts
Buenos Dias!
PHP Tutorial Screencasts
knplabs.com github.com/weaverryan
• Viví en Querétaro in 2003 for 4 months
• I spoke about 5 words of Spanish. These 5 words did not include hermano nor amigo
• Learned of the custom of kissing a women when greeting her… when a woman kissed me on the street
Querétaro
Intro !
PHP Before Now (The Desert of the Real)
(1) !
Sharing and working together was impossible
https://www.flickr.com/photos/rossap/8059476135
Every PHP Framework, CMS and Project builds everything from scratch
Sharing was nearly impossible
http://garfieldtech.com/presentations/sunshinephp2014-php-pie
(2) !
If PHP is big, we’ll thrive If PHP is small, we’ll die
@weaverryan
Communities
PHP is HUGE! Right?
http://www.flickr.com/photos/kitty-kat/
@weaverryan
PHP > Ruby
@weaverryan http://www.flickr.com/photos/slpunk99/7329609744
Fragmentation:It makes us tiny, isolated,
and misguided trend-setters
https://www.flickr.com/photos/horiavarlan/4273913228
@weaverryan
PHP projects vs Rails
@weaverryan
CakePHP
I don’t want a damned CakePHP Plugin!
@weaverryan
CakePHP
CodeIgniter
I want a PHP library I can use in any project
@weaverryan
Fragmentation
• More information we have to know !
• Difficult to hire !
• Disjointed forums, StackOverflow !
• Interoperability? What’s that?
Chapter 1 !
Drupal is PHP PHP is Drupal
PHP is in the middle of a Renaissance
https://www.flickr.com/photos/kafkapie/3761271639
http://knowyourmeme.com/photos/5713-copypastahttp://garfieldtech.com/presentations/sunshinephp2014-php-pie
• Shares code !
• works together !
• uses consistent standards !
• projects are interoperable
Now: The Community
@weaverryan
Drupal has missed all of the progress… until now
@weaverryan
Drupal 8 embraces the new tools and standards…
… and has joined the PHP community as a member and leader
@weaverryan
@weaverryan
Chapter 2 !
Drupal 8: New Libraries
https://www.flickr.com/photos/spam/5086168739
Drupal 7: !
drupal_http_request()
“Drupal's current outgoing-HTTP capability is, to be polite,
minimal. We have one small function with a lousy API that
can do basic requests, but that's it. If we want to be serious about
web services we need strong bidirectional HTTP support.”
https://drupal.org/node/1447736
Drupal 8’s HTTP client is *incredible*
It has been developed for over 3 years
@weaverryan
Has 2000+ commits
@weaverryan
Was entirely sponsored by Amazon
@weaverryan
And Drupal developersdidn’t need to waste any
time making it!
@weaverryan
Meet Guzzle!
An independent PHP library that’s great at making
HTTP requests
drupal_http_request Guzzle
Available Documentation comments above the function 9 chapter book
Commits ~40 ~2000
Contributors ~20 131
Used by Drupal All PHP devs
Features Some Many!
Compare & Contrast
@weaverryan
Drupal 8:
What fantastic libraries do you get for no effort?
PHPUnit• Unit-testing library that’s used
across all of PHP
• Some cool German guy spent years building this for you!
• Core has ~5000 unit tests that run in 18 seconds
• Easily use unit tests (finally) in your project
@weaverryan
Assetic
• JavaScript and CSS processing,minifying and compiling library
• Used in the Symfony Frameworkand other places
http://www.cameronhillphotography.com/@weaverryan
• Templating engine used forDrupal 8 theming
• Built by 163 contributors, with 2000 commits over 5 years and 63 releases
Twig
Loved by:
• High-Quality library for reading andwriting RSS and ATOM feeds
• Written by someone else (score!)
• A large chapter of already-written documentation
Zend Feed
@weaverryan
And Finally…
Symfony Components
Symfony is just a collection of decoupled
PHP libraries
Symfony libraries in Drupal
• ClassLoader • Debug • DependencyInjection • EventDispatcher • HttpFoundation • HttpKernel
• Process • PropertyAccess • Routing • Serializer • Translation • Validator • Yaml
These are just tools that Drupal uses, instead of writing
everything from scratch
Drupal 7 !
“There’s a module for that”
… and if there’s not, the Drupal community must write one
@weaverryan
PHP
Drupal 7
@weaverryan
Drupal 8 !
“There’s a PHP library for that”
… and if there’s not, the entire PHP community can work on it together
@weaverryan
Drupal 8
Drupal 7
@weaverryan
Chapter 3 !
Drupal 8: Hard to Learn?
https://www.flickr.com/photos/83633410@N07/7658254172
Drupal 8 is much more object-oriented
Difficult to Learn?
Drupal 7 Deep Arrays
Drupal 8 Objectsvs.
@weaverryan
@weaverryan
Drupal 7
@weaverryan
Drupal 8
@weaverryan
Drupal 7
Drupal 8
Drupal 7
Drupal 8
• Learn Drupalisms (Drupal-specific practices) • Non-Drupal developers have a learning curve • New devs will copy and paste functions and arrays
• Learn practices used across almost all languages • Non-Drupal developers feel at home • New devs will copy and paste functions and YAML
@weaverryan
Drupal 8: good for you
Learn these new, highly-needed skills all at once as one big community
https://www.flickr.com/photos/aussiegall/309391023
Bonus
Knowing Drupal 8 means !
Knowing Silex
Use the same skills to build a CMS or a custom application
If you know Drupal !
you understand Symfony
or Drufony@weaverryan
If you know Symfony !
you understand Drupal
or Symfal@weaverryan
Hundreds of pages of documentation exist, thanks to
Symfony, Guzzle and other libraries
Drupal has a lot of work to do, but has a head-start!
Learning Drupal 8
@weaverryan
Chapter 4 !
New Paradigms mean New Possibilities
https://www.flickr.com/photos/nasamarshall/6731872025
New Paradigms
• Object-Oriented Code
• Interfaces
• Dependency Injection
• Composer
• Namespaces
@weaverryan
Possible in Drupal 8
Completely replace any part of core. That’s supported natively
Possible in Drupal 8
Easier Future Upgrades
Possible in Drupal 8
Add/Remove entire systems and create
distributions
Drupal for Blogging?
Include Entity/Field, Views
Remove Most admin features
Focus Node Posting System
No blocks CMS
Remove Blocks
Focus Use only Twig for theming/layout
Syndication CMS
Include Atom/RSS syndication
Remove All concepts of content beyond feeds
Focus Process and serve feeds
One Drupal cannot work perfectly for everyone
https://www.flickr.com/photos/generalnoir/391009102
But many Drupals is now possible
https://www.flickr.com/photos/hjmediastudios/7883634326
One Technology used for many
platforms?
A Proven Model
Best!Use-Case Uses Symfony?
Silex Small sites yes
Laravel Quicker medium/large sites yes
Symfony Framework
Enterprise medium/large sites yes
Drupal CMS yes
Drupal 8?
Best!Use-Case Uses Drupal?
Drupal Small Small sites yes
Drupal Medium Quicker medium/large sites yes
Drupal Enterprise Enterprise medium/large sites yes
Will this happen? !
It’s up to the community, but finally
possible
Chapter 5 !
New Features/Goodies
My 9 Favorite things!
(9) !
Spark: Inline-editing
(8) !
Nodes available as JSON
(7) !
Mobile Ready: Responsive and with an API
Responsive!
(6) !
Multilingual support out of the box
(5) !
Views in Core (Drupal 8 with views on day 1)
(4) !
CKEditor in Core
(3) !
CMI: Configuration Management
Configuration Management
• Configuration moved from the databaseto YAML files
• Engineered with deployment in mind
• Deploy configuration changes from stagingto production
• Put configuration into version control
@weaverryan
(2) !
HTTP Caching (thanks to Symfony)
(1) !
Symfony’s Web Debug Toolbar
Via a community module
https://drupal.org/project/webprofiler
@weaverryan
@weaverryan
https://drupal.org/project/webprofiler
@weaverryan
https://drupal.org/project/webprofiler
@weaverryan
https://drupal.org/project/webprofiler
@weaverryan
https://drupal.org/project/webprofiler
https://drupal.org/project/webprofiler
Are you excited for Drupal 8 yet?!?
Chapter 6 !
Doing things the Drupal 7 way
The Revolutionary Tape Player
http://en.wikipedia.org/wiki/Cassette_deck
http://www.amazon.ca/MAXELL-MDV-RW1-Cassette-Rewinder/dp/B00006HOEF
Would you start a company in 2014 that sold
Walkman accessories?
PHP 4
Would you write a PHP 4 book
today?
http://www.amazon.co.uk/Beginning-PHP4-Programmer-Wankyu-Choi/dp/0764543644
Would you build a new CMS on
PHP 4?
Drupal 7 is a CMS built on PHP 4 technology
Drupal 7 Drupal 8
Technology PHP 4 (2000-2007) PHP 5.4 (2011-)
Practices Outdated, Drupal-specific Best-Practices, applicable across languages
Non-Drupal devs Code looks unfamiliar Code feels familiar
Developer Experience Arrays and hooks Interfaces, IDE code-
completion, shared code
Drupal 7 is good, but we can’t keep
doing things the Drupal 7 way forever
Drupal 8: !
Innovate away from old technolog, or die with it
Drupal 8 chooses to Innovate
A Stronger Community
Higher Quality Features
New Skills for You
More Tools for You
New Possibilities
PHP Tutorial Screencasts
Ryan Weaver @weaverryan
¡Gracias!
@weaveryan @KnpUniversity