Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Laravel Vietnam Meetup 2022: Your code is simplify or complexity?

Laravel Vietnam Meetup 2022: Your code is simplify or complexity?

Laravel Vietnam Meetup (August 2022) at Ho Chi Minh City, Vietnam

Dinh Quoc Han

March 25, 2023
Tweet

More Decks by Dinh Quoc Han

Other Decks in Technology

Transcript

  1. Your Code Is
    SIMPLIFY Or COMPLEXITY?
    with Dinh Quoc Han

    View Slide

  2. Code Của Bạn
    ĐƠN GIẢN Hay PHỨC TẠP?
    với Đinh Quốc Hân

    View Slide

  3. Who Am I?
    PHP Lover, Artisan
    6 years experience
    Currently working at SHIFT ASIA
    Admin at Laravel Viet Nam

    View Slide

  4. Overview
    1. Problems
    2. Coding Standards
    3. CRUD
    4. Complexity?
    5. Q&A

    View Slide

  5. 1. Problems!

    View Slide

  6. 2. Coding Standards

    View Slide

  7. PSR-12

    View Slide

  8. View Slide

  9. View Slide

  10. How to follow PSR-12?

    View Slide

  11. View Slide

  12. PSR-12

    View Slide

  13. composer require --dev laravel/pint

    View Slide

  14. 3. CRUD
    Create - Read - Update - Delete 😎

    View Slide

  15. How Many?

    View Slide

  16. M-V-C

    View Slide

  17. M-V-C but by Packages

    View Slide

  18. Domain Oriented Design
    Not ‘DDD’ - Domain Driven Design 🤣

    View Slide


  19. View Slide

  20. Basic Example

    View Slide

  21. routes/web.php

    View Slide

  22. app/Http/Controllers/UserController.php

    View Slide

  23. app/Http/Controllers/UserController.php

    View Slide

  24. Write all business logic in controller?

    View Slide

  25. View Slide

  26. Why?

    View Slide

  27. Controller should hold ZERO logic!

    View Slide

  28. Controller only bring logic together!

    View Slide

  29. Easy apply design patterns, structures!

    View Slide

  30. Easy to reuse, maintenance, testing

    View Slide

  31. 1. Fat Model - Thin Controller

    View Slide

  32. View Slide

  33. View Slide

  34. View Slide

  35. 2. Repository Class or Service Class

    View Slide

  36. View Slide

  37. View Slide

  38. 3. Actions/Commands Class (CQRS)

    View Slide

  39. View Slide

  40. View Slide

  41. 4. Together

    View Slide

  42. Example From Laravel

    View Slide

  43. View Slide

  44. View Slide

  45. Next: Controller!

    View Slide

  46. Cruddy by Design
    Adam Wathan

    View Slide

  47. "More controllers doing less
    work obviates need for many
    other fancy patterns!"
    David Heinemeier Hansson - Creator of RoR

    View Slide

  48. 7 Standard Actions in Laravel

    View Slide

  49. 1. Index
    2. Create
    3. Store
    4. Show
    5. Edit
    6. Update
    7. Destroy

    View Slide

  50. NEVER write CUSTOM ACTION

    View Slide

  51. View Slide

  52. View Slide

  53. View Slide

  54. Tip #1: Nested Resource?
    Create New Controller

    View Slide

  55. View Slide

  56. View Slide

  57. Tip #2: Edited Dependently?
    Create New Controller

    View Slide

  58. View Slide

  59. View Slide

  60. Tip #3: Touches Pivot Records?
    Create New Controller

    View Slide

  61. View Slide

  62. View Slide

  63. Tip #4: Transitions State?
    Create New Controller

    View Slide

  64. Example From Laravel

    View Slide

  65. View Slide

  66. View Slide

  67. Or Single Action Controller?
    Invokable Controller

    View Slide

  68. View Slide

  69. View Slide

  70. 4. Complexity?

    View Slide

  71. YAGNI
    "You aren't gonna need it"

    View Slide

  72. Back To The BASIC

    View Slide

  73. app/Http/Controllers/UserController.php

    View Slide

  74. 1 Phút Quảng Cáo!

    View Slide

  75. View Slide

  76. Thank You
    Q&A

    View Slide