SlideShare ist ein Scribd-Unternehmen logo
1 von 54
Downloaden Sie, um offline zu lesen
KristiansandPHP
Dusk, Advantek og PHPce
Agenda
PHP news
Dusk
Advantek
PHPcd
News
Profundo leier inn Sverre, nok en gang :-)
PHP UK Conference er like om hjørnet…
PHP 7.2 RC6 ble lagt ut på torsdag 

(GA 30. nov)

Så nå kan dere planlegge oppgradering i 2018 :-)
Symfony 4 slippes senere i november

Gledelig å se at det er fokus på forenkling og
utvikler-vennlighet. Silex utgår, fordi Symfony 4
har så få mandatory dependencies :-)
.env blir stadig omtalt
Environment variables
.env fil for konfigurasjon er best practice
Brukes til databaseinnstillinger, API
keys, osv - alt som kan variere mellom
test og prod miljø.
Introdusert i Symfony 3.2, og Laravel
har “alltid” hatt det…
Heder og ære
til en trofast
sjel
Nå som 2017 nærmere seg
slutt, så har vi sett litt på
statistikken. Vi har en som
har deltatt på 19 av 21
events i KristiansandPHP!
Dusk
by Marius
Advantek
by Sverre
PHPce
by Morten
Unhappy path
What can possible go wrong?
Anbefalinger
Kast exception, istedet for å returnere
null
Spesial case (dummy object), kan
returneres - istedet for null
Anbefaler global aller middleware
håndtering av errors, ikke inline (det er
vanskelig å vedlikeholde…)
Errorhandling - client
Errorhandling bør ta hensyn til client
web
api
cli
Do not mess with null
don`t accept null
don`t return null
Nullable parameters force us to check for
null :-(
Custom exception
Caller kan velge å håndtere enkelt
exceptions, og kaste resten videre
Custom excepiton klasser kan ha
attributter for bedre oppfølging
Kan gjerne implementere interface som
tilsier en 404 side
Tips
Named Constructors techniques
Dette er god måte å skrive gode på
En klasse kan bare en konstruktor,
men vi kan instansiere en klasse via
forskjellige static methods som
returnerer new self
Laravel intro - Freek
Spatie har lagt ut over 150 pakker nå…
Laravel debug, er en debug bar som likner
ganske mye på den vi har i Symfony.
Freek anbefaler den.
Han snakket mye om jobs - veldig kjekt
for å kjøre kode regelmessig
Testing
Tidligere så var det mange foredrag om
rammeverk på konferanser, men nå er
det på plass, alle bruker rammeverk
Nå er det testing som er interessant,
dessverre. Målet er nå å gjøre testing til
en uinteressant selvfølgelighet…
Cost of fixing bugs
Test trender
Det er en generell dragning vekk fra unit-
tester (med intensiv mocking av alt),
over til function/acceptance testing
Vi tester mer kode i samme test
Gjerne med db kall
TDD osv er fortsatt anbefalt
What to test
Critical business scenarios
Security cases
Kompleks algoritme
Ting som er vanskelig/tidkrevende å
teste manuelt
Krav til tester
Readable
Lett å forstå, lett å oppdatere
Stable
Takle endring i kode, fokus på resultat
Fast
Mocking
Ascyn services
3rd party services
Remote services
Not your own normal code!
Coding standard
Tools (velg, eller bruk begge - de
overlapper litt…)
PHP codesniffer
PHP CS fixer
Microservices
Microservices
En webservice skal ha bare en oppgave (men
den trenger ikke være liten)
Kalles via (REST) API
Kan ha egen db
Independent
Takle failure og nedetid
Pitfall: distributed
monolith
Common lib (bruk heller små lib`s)
Avoid nano services
Interdepent deployments
Løsning: API versions, feature flag
Temporal coupling
Avhengigheter gir dårlig performance
Misc tips
RabbitMQ, f.eks. sende epost
Innstillinger via .env file
Ramsey UUID - f.eks til PURL sider
(istedet for å bruke id)
Events ble stadig nevnt, det gjør koden
enklere
Symphony
Symphony 4.0 og 3.4 er samme kode, og blir lagt
ut i slutten av november
500+ nye features
4.0 krever PHP 7.1 og har fjernet endel deprecated
3.4 er LTS (3 år)
4.4 om 2 år blir neste LTS
Om Symfony koden
15 personer i core team
1.500 contributes
Bruker pull request på alle commits
Symfony Flex
Flex er en composer plugin som forenkler
installering av Symfony
Filestructor er oppdatert
Det meste i app-folder er flyttet ut
Bundle er ikke lengre for egen kode, det er
bare for Symfony core, og 3.parts kode
.yml har blitt til .yaml (offisiell extention)
Alt er mindre, lettere og
raskere
Services opprettes on demand (i dag så
har containeren de liggende…)
Silex utgår, fordi en basic install er så lett
nå
Controller 5-10-20 rule
Rule of thumb:
Only define 5 variables or less
Contain 10 actions or less
20 lines of code or less in each action
Feit controller?
Dersom du har mye kode i kontrolleren, så
flytt noe av koden til en service :-)
No comments!
Dropp vanlige kommentarer, og bruk
heller typehint på argumenter og return
Fransk presidentvalg med Symfony
KristiansandPHP 2017 - Nov
KristiansandPHP 2017 - Nov

Weitere ähnliche Inhalte

Ähnlich wie KristiansandPHP 2017 - Nov

Laravel Spark, and Twig
Laravel Spark, and TwigLaravel Spark, and Twig
Laravel Spark, and TwigMorten Bergset
 
Medlemsmøte i PHP Norge: Oppstartsmøte
Medlemsmøte i PHP Norge: OppstartsmøteMedlemsmøte i PHP Norge: Oppstartsmøte
Medlemsmøte i PHP Norge: OppstartsmøteKnut Urdalen
 
Jacky 原创我用linux 实现你的梦想之rtc服务系列
Jacky 原创我用linux 实现你的梦想之rtc服务系列Jacky 原创我用linux 实现你的梦想之rtc服务系列
Jacky 原创我用linux 实现你的梦想之rtc服务系列yoyojacky
 
Kryssplatform mobilutvikling
Kryssplatform mobilutviklingKryssplatform mobilutvikling
Kryssplatform mobilutviklingRunegri
 
Meetup #7, Laravel intro, og design/GUI
Meetup #7, Laravel intro, og design/GUIMeetup #7, Laravel intro, og design/GUI
Meetup #7, Laravel intro, og design/GUIMorten Bergset
 
Vet du hva DNX innebærer for deg som .NET-utvikler?
Vet du hva DNX innebærer for deg som .NET-utvikler?Vet du hva DNX innebærer for deg som .NET-utvikler?
Vet du hva DNX innebærer for deg som .NET-utvikler?Joar Øyen
 
Iktmooc-oppsummering uke40
Iktmooc-oppsummering uke40Iktmooc-oppsummering uke40
Iktmooc-oppsummering uke40Magnus Nohr
 
Ikke test Puppet-koden din
Ikke test Puppet-koden dinIkke test Puppet-koden din
Ikke test Puppet-koden dinJan Ivar Beddari
 
Hva er fri programvare? (2011)
Hva er fri programvare? (2011)Hva er fri programvare? (2011)
Hva er fri programvare? (2011)Libriotech
 
Rules engine vs. domain logic - JavaZone 2009
Rules engine vs. domain logic - JavaZone 2009Rules engine vs. domain logic - JavaZone 2009
Rules engine vs. domain logic - JavaZone 2009Anders Sveen
 
eCampus: NTNU IT-Kontaktforum 4 mai 2011
eCampus: NTNU IT-Kontaktforum 4 mai 2011eCampus: NTNU IT-Kontaktforum 4 mai 2011
eCampus: NTNU IT-Kontaktforum 4 mai 2011Jan Meijer
 
Frokostseminar mai 2010 solr open source cominvent as
Frokostseminar mai 2010 solr open source cominvent asFrokostseminar mai 2010 solr open source cominvent as
Frokostseminar mai 2010 solr open source cominvent asCominvent AS
 
Hva er fri programvare
Hva er fri programvareHva er fri programvare
Hva er fri programvareLibriotech
 
Java 推荐读物与源代码阅读
Java 推荐读物与源代码阅读Java 推荐读物与源代码阅读
Java 推荐读物与源代码阅读yiditushe
 
Driftbarhet - Steg mot smidig drift, JavaZone 2010
Driftbarhet - Steg mot smidig drift, JavaZone 2010Driftbarhet - Steg mot smidig drift, JavaZone 2010
Driftbarhet - Steg mot smidig drift, JavaZone 2010ilmyggo
 

Ähnlich wie KristiansandPHP 2017 - Nov (17)

Laravel Spark, and Twig
Laravel Spark, and TwigLaravel Spark, and Twig
Laravel Spark, and Twig
 
Medlemsmøte i PHP Norge: Oppstartsmøte
Medlemsmøte i PHP Norge: OppstartsmøteMedlemsmøte i PHP Norge: Oppstartsmøte
Medlemsmøte i PHP Norge: Oppstartsmøte
 
Jacky 原创我用linux 实现你的梦想之rtc服务系列
Jacky 原创我用linux 实现你的梦想之rtc服务系列Jacky 原创我用linux 实现你的梦想之rtc服务系列
Jacky 原创我用linux 实现你的梦想之rtc服务系列
 
Kryssplatform mobilutvikling
Kryssplatform mobilutviklingKryssplatform mobilutvikling
Kryssplatform mobilutvikling
 
Meetup #7, Laravel intro, og design/GUI
Meetup #7, Laravel intro, og design/GUIMeetup #7, Laravel intro, og design/GUI
Meetup #7, Laravel intro, og design/GUI
 
Vet du hva DNX innebærer for deg som .NET-utvikler?
Vet du hva DNX innebærer for deg som .NET-utvikler?Vet du hva DNX innebærer for deg som .NET-utvikler?
Vet du hva DNX innebærer for deg som .NET-utvikler?
 
Iktmooc-oppsummering uke40
Iktmooc-oppsummering uke40Iktmooc-oppsummering uke40
Iktmooc-oppsummering uke40
 
Ikke test Puppet-koden din
Ikke test Puppet-koden dinIkke test Puppet-koden din
Ikke test Puppet-koden din
 
Hva er fri programvare? (2011)
Hva er fri programvare? (2011)Hva er fri programvare? (2011)
Hva er fri programvare? (2011)
 
Rules engine vs. domain logic - JavaZone 2009
Rules engine vs. domain logic - JavaZone 2009Rules engine vs. domain logic - JavaZone 2009
Rules engine vs. domain logic - JavaZone 2009
 
eCampus: NTNU IT-Kontaktforum 4 mai 2011
eCampus: NTNU IT-Kontaktforum 4 mai 2011eCampus: NTNU IT-Kontaktforum 4 mai 2011
eCampus: NTNU IT-Kontaktforum 4 mai 2011
 
Frokostseminar mai 2010 solr open source cominvent as
Frokostseminar mai 2010 solr open source cominvent asFrokostseminar mai 2010 solr open source cominvent as
Frokostseminar mai 2010 solr open source cominvent as
 
Hva er fri programvare
Hva er fri programvareHva er fri programvare
Hva er fri programvare
 
AWS på kartet
AWS på kartetAWS på kartet
AWS på kartet
 
Java 推荐读物与源代码阅读
Java 推荐读物与源代码阅读Java 推荐读物与源代码阅读
Java 推荐读物与源代码阅读
 
Meetup16
Meetup16Meetup16
Meetup16
 
Driftbarhet - Steg mot smidig drift, JavaZone 2010
Driftbarhet - Steg mot smidig drift, JavaZone 2010Driftbarhet - Steg mot smidig drift, JavaZone 2010
Driftbarhet - Steg mot smidig drift, JavaZone 2010
 

Mehr von Morten Bergset

Mehr von Morten Bergset (6)

Laravel tips
Laravel tipsLaravel tips
Laravel tips
 
htaccess
htaccesshtaccess
htaccess
 
KristiansandPHP meetup 6
KristiansandPHP meetup 6KristiansandPHP meetup 6
KristiansandPHP meetup 6
 
KristiansandPHP meetup 5
KristiansandPHP meetup 5KristiansandPHP meetup 5
KristiansandPHP meetup 5
 
Kristiansand php meeting #1
Kristiansand php meeting #1Kristiansand php meeting #1
Kristiansand php meeting #1
 
Responsiv design og Bootstrap 3
Responsiv design og Bootstrap 3Responsiv design og Bootstrap 3
Responsiv design og Bootstrap 3
 

KristiansandPHP 2017 - Nov

  • 3. News Profundo leier inn Sverre, nok en gang :-) PHP UK Conference er like om hjørnet… PHP 7.2 RC6 ble lagt ut på torsdag 
 (GA 30. nov)
 Så nå kan dere planlegge oppgradering i 2018 :-) Symfony 4 slippes senere i november
 Gledelig å se at det er fokus på forenkling og utvikler-vennlighet. Silex utgår, fordi Symfony 4 har så få mandatory dependencies :-) .env blir stadig omtalt
  • 4. Environment variables .env fil for konfigurasjon er best practice Brukes til databaseinnstillinger, API keys, osv - alt som kan variere mellom test og prod miljø. Introdusert i Symfony 3.2, og Laravel har “alltid” hatt det…
  • 5. Heder og ære til en trofast sjel Nå som 2017 nærmere seg slutt, så har vi sett litt på statistikken. Vi har en som har deltatt på 19 av 21 events i KristiansandPHP!
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20. Unhappy path What can possible go wrong?
  • 21. Anbefalinger Kast exception, istedet for å returnere null Spesial case (dummy object), kan returneres - istedet for null Anbefaler global aller middleware håndtering av errors, ikke inline (det er vanskelig å vedlikeholde…)
  • 22. Errorhandling - client Errorhandling bør ta hensyn til client web api cli
  • 23. Do not mess with null don`t accept null don`t return null Nullable parameters force us to check for null :-(
  • 24. Custom exception Caller kan velge å håndtere enkelt exceptions, og kaste resten videre Custom excepiton klasser kan ha attributter for bedre oppfølging Kan gjerne implementere interface som tilsier en 404 side
  • 25. Tips Named Constructors techniques Dette er god måte å skrive gode på En klasse kan bare en konstruktor, men vi kan instansiere en klasse via forskjellige static methods som returnerer new self
  • 26.
  • 27. Laravel intro - Freek Spatie har lagt ut over 150 pakker nå… Laravel debug, er en debug bar som likner ganske mye på den vi har i Symfony. Freek anbefaler den. Han snakket mye om jobs - veldig kjekt for å kjøre kode regelmessig
  • 28.
  • 29.
  • 30. Testing Tidligere så var det mange foredrag om rammeverk på konferanser, men nå er det på plass, alle bruker rammeverk Nå er det testing som er interessant, dessverre. Målet er nå å gjøre testing til en uinteressant selvfølgelighet…
  • 32.
  • 33. Test trender Det er en generell dragning vekk fra unit- tester (med intensiv mocking av alt), over til function/acceptance testing Vi tester mer kode i samme test Gjerne med db kall TDD osv er fortsatt anbefalt
  • 34. What to test Critical business scenarios Security cases Kompleks algoritme Ting som er vanskelig/tidkrevende å teste manuelt
  • 35. Krav til tester Readable Lett å forstå, lett å oppdatere Stable Takle endring i kode, fokus på resultat Fast
  • 36. Mocking Ascyn services 3rd party services Remote services Not your own normal code!
  • 37.
  • 38.
  • 39. Coding standard Tools (velg, eller bruk begge - de overlapper litt…) PHP codesniffer PHP CS fixer
  • 41. Microservices En webservice skal ha bare en oppgave (men den trenger ikke være liten) Kalles via (REST) API Kan ha egen db Independent Takle failure og nedetid
  • 42. Pitfall: distributed monolith Common lib (bruk heller små lib`s) Avoid nano services Interdepent deployments Løsning: API versions, feature flag Temporal coupling Avhengigheter gir dårlig performance
  • 43. Misc tips RabbitMQ, f.eks. sende epost Innstillinger via .env file Ramsey UUID - f.eks til PURL sider (istedet for å bruke id) Events ble stadig nevnt, det gjør koden enklere
  • 44. Symphony Symphony 4.0 og 3.4 er samme kode, og blir lagt ut i slutten av november 500+ nye features 4.0 krever PHP 7.1 og har fjernet endel deprecated 3.4 er LTS (3 år) 4.4 om 2 år blir neste LTS
  • 45. Om Symfony koden 15 personer i core team 1.500 contributes Bruker pull request på alle commits
  • 46. Symfony Flex Flex er en composer plugin som forenkler installering av Symfony
  • 47. Filestructor er oppdatert Det meste i app-folder er flyttet ut Bundle er ikke lengre for egen kode, det er bare for Symfony core, og 3.parts kode .yml har blitt til .yaml (offisiell extention)
  • 48. Alt er mindre, lettere og raskere Services opprettes on demand (i dag så har containeren de liggende…) Silex utgår, fordi en basic install er så lett nå
  • 49. Controller 5-10-20 rule Rule of thumb: Only define 5 variables or less Contain 10 actions or less 20 lines of code or less in each action
  • 50. Feit controller? Dersom du har mye kode i kontrolleren, så flytt noe av koden til en service :-)
  • 51. No comments! Dropp vanlige kommentarer, og bruk heller typehint på argumenter og return