be#abold#coder#php#coding#standards#fixer# hyp://cs.sensiolabs.org# •...

60
Be a Bold Coder Beth Tucker Long

Upload: others

Post on 13-Sep-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Be  a  Bold  Coder  Beth  Tucker  Long  

Page 2: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Who  am  I?  Beth  Tucker  Long      (@e3betht)  

•  PHP  Developer    •  Stay-­‐at-­‐home  mom  •  User  group  leader  •  Mentor  &  ApprenIce    

Page 3: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Audience  ParIcipaIon?  

•  Completely  fine.  Ask  me  quesIons  any  Ime.  

Page 4: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

   

Why?  

Page 5: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

   

Show  of  Hands  

Page 6: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Why?  

• Build  confidence  •  Improve  code  quality  and  security  • Easier  integraIon  

Page 7: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

   What  this  talk  is  not  

Page 8: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

   

A  Bit  of  History  

Page 9: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

   

The  "S"  Word    

Page 10: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Standards!  

•  PHP-­‐FIG  •  Zend  Framework  •  Symfony  

Page 11: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

   

Wait…MulIple  Standards?  

Page 12: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

PHP-­‐FIG  

•  PSR-­‐1  Basic  Coding  Standard  hYp://www.php-­‐fig.org/psr/psr-­‐1/    •  PSR-­‐2  Coding  Style  Standard  hYp://www.php-­‐fig.org/psr/psr-­‐2/    

Page 13: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

PHP  Coding  Standards  Fixer  

hYp://cs.sensiolabs.org  •  Fixes  "most"  issues  •  PSR-­‐1  and  PSR-­‐2  compliant  

Page 14: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

PHP_CodeSniffer  

hYps://github.com/squizlabs/PHP_CodeSniffer  •  Phar,  PEAR,  or  Composer  •  Preset  and  customizable  standards  •  Will  fix  items  for  you  automaIcally  

Page 15: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

PHP_CodeSniffer:  Output  

FILE:  /myDir/myFile.php      -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐      FOUND  3  ERROR(S)  AFFECTING  3  LINE(S)  

-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐    2    |  ERROR  |  [  ]  Missing  file  doc  comment  20  |  ERROR  |  [x]  PHP  keywords  must  be  lowercase;                                  expected  "false"  but  found  "FALSE"  47  |  ERROR  |  [x]  Line  not  indented  correctly;                                  expected  4  spaces  but  found  1  

Page 16: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

PHP_CodeSniffer:  Output  

•  Sublime  Text  hYp://www.sublimetext.com    

•  PhpStorm  hYps://www.jetbrains.com/phpstorm/  

•  Vim  hYp://www.vim.org    

Page 17: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

   

The  "S"  Word  

Page 18: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Security  

•  hYp://php.net/manual/en/security.php  •  hYps://www.owasp.org/index.php/PHP_Security_Cheat_Sheet  •  hYp://websec.io    

 •  Securing  PHP:  Core  Concepts  

hYps://leanpub.com/securingphp-­‐coreconcepts  hYps://speakerdeck.com/ccornuY    hYp://securingphp.com    

Page 19: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Security  

•  hYp://php.net/manual/en/security.php  •  hYps://www.owasp.org/index.php/PHP_Security_Cheat_Sheet  •  hYp://websec.io    

 •  Securing  PHP:  Core  Concepts  

hYps://leanpub.com/securingphp-­‐coreconcepts  hYps://speakerdeck.com/ccornuY    hYp://securingphp.com    

Page 20: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Classes  

•  hYps://www.phparch.com/training/web-­‐security/  •  hYp://www.zend.com/en/services/training/security  •  hYps://www.pluralsight.com/courses/play-­‐by-­‐play-­‐website-­‐

security-­‐review-­‐troy-­‐hunt-­‐lars-­‐klint  •  hYps://nomadphp.com/products/secure-­‐password-­‐hashing/    

•  Check  your  local  user  group  

Page 21: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

   

The  "T"  Word  

Page 22: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

TesIng  

A  liYle  bit  of  extra  work  up  front  saves  lots  and  lots  of  work  later  on.  

Page 23: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Use  a  TesIng  Framework  

Chris  Hartjes    

@grmpyprogrammer  hYp://grumpy-­‐learning.com    

Page 24: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Use  a  TesIng  Framework  

PHPUnit  hYps://phpunit.de    

Page 25: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

   

The  "D"  Word  

Page 26: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

DocumenIng  Your  Code  

•  phpDocumentor:  hYp://www.phpdoc.org/    •  Automates  documentaIon  •  Tutorial:  

hYp://manual.phpdoc.org/HTMLSmartyConverter/HandS/phpDocumentor/tutorial_phpDocumentor.howto.pkg.html    

Page 27: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

/**      *  Put  your  short  description  here.      *        *  Put  your  long  description  here.        *  You  may  use  multiple  lines.      *  You  can  even  use  Markdown.      *      *  @author    Beth  Tucker  Long  <[email protected]>      *      *  @since  1.0      *      *  @param  int  $exampleA    This  is  a  method  parameter  

description.      *  @param  string  $exampleB  This  is  another  example.      */  

Page 28: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant
Page 29: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Know  Your  Language!  

php.net  

Page 30: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

   

Page 31: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

   

Page 32: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

   

Page 33: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

   

Page 34: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Know  Your  Tools!  

hYps://github.com/  

Page 35: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Know  Your  Tools!  

hYps://github.com/  Contribute!  

Page 36: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Sensio  Insight  

hYps://insight.sensiolabs.com/  •  Free  for  open  source,  integrated  with  Git  •  Symfony-­‐focused,  but  works  with  any  PHP  code  •  Checks  PHP,  XML,  YAML,  Twig  templates,  and  Composer  dependencies  

Page 37: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Sensio  Insight  

hYps://insight.sensiolabs.com/  •  Free  for  open  source,  integrated  with  

Git  •  Symfony-­‐focused,  but  works  with  any  

PHP  code  •  Checks  PHP,  XML,  YAML,  Twig  

templates,  and  Composer  dependencies  

Page 38: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

ScruInizer  

hYps://scruInizer-­‐ci.com/  •  Free  for  open  source  •  Integrated  with  Git  •  Integrates  open  source  checking  tools  like  PHP_CodeSniffer  and  PHP  Mess  Detector    

•  Checks  PHP,  Python,  and  Ruby  

Page 39: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Code  Climate  

hYps://codeclimate.com/  •  Free  for  open  source  •  Integrated  with  Git  •  Checks  PHP,  JS,  Ruby,  and  coming  

soon  -­‐  Python  •  Takes  security  seriously:  

codeclimate.com/security    

Page 40: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Never  Stop  Learning  

Page 41: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Learn  by  Reading  

hYp://www.phparch.com/magazine/        

hYp://www.phptherightway.com      

hYp://phpdeveloper.org    

Page 42: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Learn  by  Reading  

hYps://leanpub.com      

Amazon    

Your  local  library  

Page 43: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Learn  by  Reading  

•  Pocket  -­‐  can  pin  arIcles  and  gives  you  more  recommendaIons  for  related  arIcles    

•  Devdocs.io  -­‐  documentaIon  for  libraries  and  languages,  etc.    

•  Libraries.io  -­‐  searches  and  gives  you  libraries  to  use  

Page 44: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Learn  by  Watching  

hYp://nomadphp.com    hYps://www.youtube.com/user/phpukconference  hYps://www.youtube.com/user/phpacademy/  

hYp://www.pluralsight.com/  hYps://www.youtube.com/user/LevelUpTuts  

hYps://github.com/phptodayorg/php-­‐must-­‐watch    

Page 45: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Learn  by  InstrucIon  

hYp://www.phparch.com/training/  hYp://www.zend.com/services/training  

hYp://www.codecademy.com/en/tracks/php  hYp://www.pluralsight.com/  Your  Local  User  Group!!!!!  

Page 46: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Learn  by  Listening  

hYp://devhell.info  hYp://looselycoupled.info  hYp://phptownhall.com  hYp://thatpodcast.io      

hYp://phproundtable.com  hYps://rungeekradio.com    

hYps://voicesojheelephpant.com          

Page 47: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Learn  by  PracIcing  

hYps://laracasts.com/series/code-­‐katas-­‐in-­‐php    

hYp://codingdojo.org/cgi-­‐bin/index.pl?KataCatalogue    

hYp://phpcodepad.com  

Page 48: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Learn  by  Email  

hYp://securingphp.com    

hYp://www.phpweekly.com    

Page 49: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Learn  by  Mentoring  

h"p://phpmentoring.org  hYp://www.slideshare.net  

hYp://www.joind.in  hYp://php.net/conferences/  

hYp://nocapes.net    hYp://voicesojheelephpant.com  

Page 50: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Learn  by  Mentoring  

hYp://phpmentoring.org    IRC  Channels  Stack  Overflow  

Reddit  

Page 51: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Learn  by  Hanging  Out  

Freenode  hYps://webchat.freenode.net    

#phpc  #phpwomen  

#phpmentoring  

Page 52: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Learn  by  AYending  

hYp://php.ug  hYp://php.net/cal.php  

hYp://www.meetup.com  

Page 53: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

User  Groups  

If  there's  not  one  near  you,  start  one!  

 (and  ask  me  to  help)  

Page 54: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Learn  by  Speaking  

hYp://rosstuck.com/Ips-­‐on-­‐speaking/  hYp://maYhewturland.com/2014/07/15/speaking-­‐

resources/  hYp://afilina.com/re-­‐how-­‐to-­‐submit-­‐to-­‐conf/  

hYp://www.aliYleoroth.com/2014/01/how-­‐to-­‐submit-­‐a-­‐talk-­‐to-­‐a-­‐conference/    

Page 55: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Find  a  Place  to  Speak  

hYp://php.net/conferences  hYp://joind.in/event/callforpapers  

hYps://thecfpreport.com    hYps://twiYer.com/callbackwomen    

Page 56: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

   

But,  I'm  SIll  Anxious  

Page 57: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Resources  •  hYp://teamtreehouse.com/library/standards-­‐and-­‐best-­‐pracIces  •  hYp://code.tutsplus.com/tutorials/30-­‐php-­‐best-­‐pracIces-­‐for-­‐beginners-­‐-­‐

net-­‐6194  •  hYps://www.airpair.com/php/posts/best-­‐pracIces-­‐for-­‐modern-­‐php-­‐

development  •  hYps://phpbestpracIces.org/  •  hYps://www.corephp.com/blog/php-­‐best-­‐pracIces-­‐that-­‐you-­‐must-­‐

follow/  •  hYp://www.phpbuilder.com/arIcles/applicaIon-­‐architecture/

opImizaIon/explore-­‐the-­‐top-­‐11-­‐php-­‐best-­‐pracIces.html  •  hYp://pear.php.net/manual/en/standards.bestpracIces.php  •  hYp://www.sitepoint.com/php-­‐Ips-­‐resources-­‐best-­‐pracIces-­‐2015/  

Page 58: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Final  Thoughts  Bold  coding  is,  of  course,  about  knowledge  and  skill,  but  more  

importantly,  it's  about  being  acIve:    

AcIvely  Learning  AcIvely  ParIcipaIng    AcIvely  Improving  

Page 59: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Find  Me  •  TwiYer:  e3betht    

•  Madison  PHP  User  Group  (Meetup)    hYp://www.madisonphp.com    

•  Slides  Available  on:    hYp://www.TreelineDesign.com/slides    

Page 60: Be#aBold#Coder#PHP#Coding#Standards#Fixer# hYp://cs.sensiolabs.org# • Fixes#"most"#issues# • PSR1#and#PSR2#compliant

Feedback  

hYps://joind.in/talk/133b0  E-­‐mail:  

[email protected]