<----
- Henrik Akselsen
- Jobber i Frontkom
- Jobbet med Drupal i 1,5 år
- Drupal.org: 410273
PHP
- Brukes av 78% av alle websider der serverspråket er kjent
- Kanskje det mest utskjelte av alle programmeringsspråk
- (Bortsett fra C++)
The great crime of PHP is its utter banality. Its continued propularity (sic) is living proof that quality is irrelevant; cheap and popular and everywhere always wins. PHP is the Nickelback of programming languages.
- Jeff Atwood
As it has evolved into an increasingly powerful system, Drupal has gotten increasingly complex and is not as easy to start developing with as it once was. Many developers are nervous about continuing that trend.
- Dries, 16 feb 2012
It has not always been the case, but the last 5 years have been an amazing journey for PHP.
Fabien Potencier, Symfony2 hovedutvikler
Drupal 8
Core initiatives
- Configuration Management
- HTML5
- Layouts
- Mobile
- Multilingual
- Views in Core
- Web Services
-
Hjelp til
Drupal 8
Core initiatives
- Lar Dries Skalere
- Slipper 10000 pågående samtaler selv
- Dries koordinerer initiativeierne, eierne koordinere initiativene
MVC
- Ansvarsdeling
- Kodere kan holde på med modeller + kontrollere
- Designere kan holde på med Views
- Ruby on Rails, Express, Django
Drupal 7 som "MVC"
Model: Database (MySQL)
Views: Templates (tpl.php)
Controller: "Alt annet"
Drupal 8 som 'MVC'
- Model: ingen store endringer
- Views: Twig
- Controller: Mange elementer fra Symfony
Er ikke phptemplate bra nok lizm?
- Templatesystem: Separere Presentasjon fra logikk
- PHP som templatespråk gir for mye kraft til presentasjonslaget
- Resultat: Messy og usikker kode
We hand themers a loaded gun and tell them to hammer in a nail with it. Oh, and be careful
John Albin (Drupalcon, Denver)
< ?php
echo htmlspecialchars($var, ENT_QUOTES, 'UTF-8')
?>
Symfony
- En mengde moduler for PHP som gjør mange oppgaver lettere og sikrere
- Sammen utgjør alle modulene et komplett rammeverk for å utvikle sider i PHP
- Drupal 8 adopsjon er en stor seier for Symfony
- Sunshine PHP vil ha et eget spor med kun symfony
- Første stabile release tidlig 2013
Symfony
- Request/Response, snarere enn MVC
- Objektorientert
- Request-objekt
- Response-objekt
- Vil håndtere svært mye av lav-nivå funksjonalitet i Drupal 8
- Inkludert og integrert - ikke egen installasjon
HttpFoundation
- Definerer et objekt-orienter lag over HTTP specification.
- request/response
- prepare() - sørger for at responsen følger http spec
- session management
- 'Erstatter' Globale variabler
- clientIP = $_SERVER['REMOTE_ADDR']
- Mer her
Routing
- Skille utseendet på en URL fra håndteringen
- Mapper en HTTP request til et sett med konfigurasjonsvariabler.
- Mer her
EventDispatcher
- Symfonys hook system
- Observer Pattern
- Vil ikke erstatte hooksystemet fullstendig i denne omgang
- vs hooks:
- objektorientert
- testbart
- selvforklarende
- mulig å kjøre flere
- Listeners i motsetning til function_exists
- Mer her
DependcyInjector
- The Dependency Injection component allows you to standardize and centralize the way objects are constructed in your application.
- Array av objekter (på steroider)
- Mer her
HttpKernel
- Den dynamiske delen av HTTTP spesifikasjonen
- En tynn wrapper over request/response
- Har som 'mål' å konvertere et requestobjekt til Responseobjekt
- handle() tar en Request returnerer en Response.
- Mer her
HTTP Testing
- Integrer med PHPUnit
- Unit tester og funksjonelle tester
- $crawler = $client->request('GET', '/demo/hello/world');
- $this->assertEquals(42, $result);
- Mer her
Caching
- Ikke caching på applikasjonsnivå, forholder seg til http-spesifikasjonen
- Cache-Control Expires ($response->setClientTtl)
- Validation
- Expiration + validation
- Mål: Aldri lage den samme responsen 2 ganger
- ESI - Edge Side includes
- Mer her
- Færre drupalismer
- Unngå NIH
- Lettere å samarbeide med andre siter