$30 off During Our Annual Pro Sale. View Details »

Slim PHP when you don't need the kitchen sink

Joe Ferguson
February 10, 2018

Slim PHP when you don't need the kitchen sink

Full stack frameworks can often be too much for an application. What if you have a one off project that doesn't need "everything and the kitchen sink"? What if you have a large project you want to build yourself to be as lean as possible?

Join us for an introduction into the Slim framework. We'll cover getting started, building a small application, and using components from bigger frameworks and other extraordinary sources.

Joe Ferguson

February 10, 2018
Tweet

More Decks by Joe Ferguson

Other Decks in Programming

Transcript

  1. SlimPHP
    When you don't need
    the kitchen sink
    Joe Ferguson

    View Slide

  2. Who Am I?
    Joe Ferguson
    PHP Developer
    PHP Architect @ Ministry Brands
    Twitter: @JoePFerguson
    Organizer of @MemphisPHP
    OSMI Board Member
    Certified Laravel Developer
    Drone Racing Pilot

    View Slide

  3. “everything but the kitchen sink”

    View Slide

  4. Router
    Dispatcher
    Views (Twig/etc)
    Database
    ORM (Models)
    Authentication
    Scaffolding
    API basics
    Validation/Sanitization
    CLI Components
    Job/Task system
    Mail Handling

    View Slide

  5. Full Stack Frameworks are fine

    View Slide

  6. Micro Frameworks are fine

    View Slide

  7. Component Based Frameworks

    View Slide

  8. Which way do you want to go?
    Component
    Full Stack

    View Slide

  9. How do I choose what to use?

    View Slide

  10. How do I choose what to use?
    It Depends™
    Size
    Scale
    Existing knowledge
    Long term Maintenance

    View Slide

  11. How I choose what to use
    Project needed quickly?

    View Slide

  12. How I choose what to use
    Project needed quickly?
    Aren’t they all?

    View Slide

  13. How I choose what to use
    Project needed quickly?
    Aren’t they all?
    Am I going to maintain it?
    Yes/No

    View Slide

  14. How I choose what to use
    Project needed quickly? No
    Do I have time to learn a new
    framework or component?

    View Slide

  15. How I choose what to use
    Project needed quickly? No
    Do I have time to learn a new
    framework or component?
    Yes

    View Slide

  16. How I choose what to use
    Project needed quickly? No
    Do I have time to learn a new
    framework or component?
    Yes
    No

    View Slide

  17. How I choose what to use
    Project needed quickly?
    Aren’t they all?
    No
    Am I going to maintain it?
    Yes/No
    Do I have time to learn a new
    framework or component?
    Yes
    No

    View Slide

  18. SlimPHP

    View Slide

  19. Getting Started

    View Slide

  20. New to SlimPHP?
    composer create-project slim/slim-skeleton slimphp

    View Slide

  21. Creating The Project

    View Slide

  22. Running the Project

    View Slide

  23. Running the Project

    View Slide

  24. Mission Accomplished!

    View Slide

  25. What is included?

    View Slide

  26. Under the Hood

    View Slide

  27. Settings

    View Slide

  28. Dependencies

    View Slide

  29. Middleware

    View Slide

  30. Routing

    View Slide

  31. Views

    View Slide

  32. Tests

    View Slide

  33. Tests

    View Slide

  34. Container Ready

    View Slide

  35. Container Ready

    View Slide

  36. Virtual Machine Friendly

    View Slide

  37. ./vendor/bin/homestead make

    View Slide

  38. Vagrant up

    View Slide

  39. http://slim.test

    View Slide

  40. Vagrant ssh

    View Slide

  41. Building a Small Application

    View Slide

  42. Add a Database Settings

    View Slide

  43. Add a Database Dependency

    View Slide

  44. Using Components From
    Bigger Frameworks

    View Slide

  45. Update Database Dependency

    View Slide

  46. Update Composer.json

    View Slide

  47. App\Migration\Migration.php

    View Slide

  48. Our First Migration

    View Slide

  49. Running our Migration

    View Slide

  50. Viewing our Database

    View Slide

  51. Viewing our Database

    View Slide

  52. Creating a new widget

    View Slide

  53. Creating a new widget

    View Slide

  54. Viewing our Widget in the DB

    View Slide

  55. Add Widgets Index Route

    View Slide

  56. Add our Widgets Index View

    View Slide

  57. Add our Widgets Index View

    View Slide

  58. Viewing our Widgets

    View Slide

  59. Adding a Widget

    View Slide

  60. Adding a Widget

    View Slide

  61. Adding a Widget

    View Slide

  62. Post Route & Form Handling

    View Slide

  63. composer require slim/csrf

    View Slide

  64. Add CSRF to our Container

    View Slide

  65. Update our Add Route

    View Slide

  66. Update our Add View

    View Slide

  67. Update our POST route

    View Slide

  68. What about input filtering?

    View Slide

  69. composer require zendframework/
    zend-filter

    View Slide

  70. Filtering our Input

    View Slide

  71. composer require
    zendframework/zend-escaper

    View Slide

  72. Escape our Output

    View Slide

  73. Safely storing and displaying data

    View Slide

  74. Safely storing and displaying data

    View Slide

  75. View Slide

  76. composer require guzzlehttp/guzzle

    View Slide

  77. Sending a Guzzle Request

    View Slide

  78. Parse Response Object

    View Slide

  79. Add BTC prices for Widgets

    View Slide

  80. Add BTC prices for Widgets

    View Slide

  81. composer require symfony/console

    View Slide

  82. Create our CLI Application

    View Slide

  83. Configure Method

    View Slide

  84. Execute Method

    View Slide

  85. Create our Command

    View Slide

  86. Running the Bitcoin Command

    View Slide

  87. Update our Widgets GET Request

    View Slide

  88. Questions?

    View Slide

  89. Joe Ferguson
    Twitter: @JoePFerguson
    Email: [email protected]
    Freenode: joepferguson
    Contact Info:
    https://joind.in/talk/a89e0

    View Slide