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

Tablice zostawmy Mojżeszowi

Konrad Alfaro
June 25, 2022
200

Tablice zostawmy Mojżeszowi

Czy dobrze jest używać tablic? To nie jest tak, że dobrze, albo nie dobrze. Gdybym miał, powiedzieć co cenię w tablicach najbardziej, to… No właśnie. W mojej prezentacji pochylę się nad tym, gdzie warto jeszcze używać tablic, gdzie już ich lepiej nie używać i co stosować w zamian. Omówimy sobie pomocne biblioteki oraz metody eksterminacji tablic z miejsc w których, inne struktury danych poradzą sobie o wiele lepiej.

Konrad Alfaro

June 25, 2022
Tweet

Transcript

  1. Konrad Alfaro @ PHPers Summit 2022
    Tablice zostawmy Mojżeszowi
    Czyli jak pozbyć się zbędnych array z naszego kodu

    View Slide

  2. Konrad Alfaro
    8 lat doświadczenia z Backendem
    Programista PHP
    🐘
    Konsultant / Architekt
    Software House 8lines

    View Slide

  3. ~ Nauczyciele & początkujący z PHPem
    “Tablice są super”

    View Slide

  4. View Slide

  5. View Slide

  6. View Slide

  7. View Slide

  8. 80+
    Funkcji

    View Slide

  9. Ale z ważniejszych rzeczy
    • Tablice są niespójną strukturą danych

    • Brak Type-safety

    • Brak error-handlingu

    • Słaby performance

    View Slide

  10. Problem 1
    Wykorzystywanie jako kolekcje/listy/mapy

    View Slide

  11. Disclaimer!

    View Slide

  12. View Slide

  13. Home i Work mają ewidentnie
    coś ze sobą wspólnego

    View Slide

  14. Nie wiemy czy to wszystkie
    parametry tej struktury

    View Slide

  15. Float? A może string? “lat”? A
    może “latitude”

    View Slide

  16. Elementy “visits” są bez
    kluczy?

    View Slide

  17. “usr”? Typo? Obiekt? ID?

    View Slide

  18. Czas to timestamp? A może
    Dateime?

    View Slide

  19. Co z takim tworem zrobić?

    View Slide

  20. View Slide

  21. Obiekty na ratunek

    View Slide

  22. To zależy
    ~ każdy konsultant

    View Slide

  23. View Slide

  24. View Slide

  25. View Slide

  26. Variadic parameters to the
    rescue 👨🚒

    View Slide

  27. View Slide

  28. View Slide

  29. View Slide

  30. View Slide

  31. View Slide

  32. View Slide

  33. View Slide

  34. View Slide

  35. View Slide

  36. View Slide

  37. Generatory, iteratory,

    taka sytuacja

    View Slide

  38. IteratorAggregate

    View Slide

  39. Prędkość

    View Slide

  40. View Slide

  41. View Slide

  42. View Slide

  43. View Slide

  44. View Slide

  45. View Slide

  46. View Slide

  47. View Slide

  48. 3x
    Mniejsze zużycie pamięci

    View Slide

  49. View Slide

  50. Łatwiejsze operacje

    View Slide

  51. Co jeśli chcielibyśmy


    zliczyć wybrane obiekty?

    View Slide

  52. View Slide

  53. View Slide

  54. View Slide

  55. View Slide

  56. View Slide

  57. View Slide

  58. Co z innymi funkcjami?

    View Slide

  59. View Slide

  60. View Slide

  61. View Slide

  62. Logika biznesowa?

    View Slide

  63. View Slide

  64. View Slide

  65. Czyli takie trochę kolekcje
    Doctrine?

    View Slide

  66. No nie

    View Slide

  67. Lek na całe zło?

    View Slide

  68. Nie!

    View Slide

  69. ✅ Silne typowanie

    ✅ Tablice jako szczegół implementacyjny

    ✅ Czytelniejszy kod

    ✅ Łatwiejsza implementacja np. logiki biznesowej

    View Slide

  70. Problem 2
    Wykorzystywanie do struktur danych

    View Slide

  71. View Slide

  72. Tak
    To kod z produkcyjnego repozytorium

    View Slide

  73. View Slide

  74. View Slide

  75. View Slide

  76. View Slide

  77. View Slide

  78. View Slide

  79. View Slide

  80. Problem 3
    Wykorzystywanie do transportu danych

    View Slide

  81. View Slide

  82. View Slide

  83. Nie!

    View Slide

  84. View Slide

  85. View Slide

  86. Ale najpierw… obiekty 🥰

    View Slide

  87. View Slide

  88. Posłuchajmy teraz Symfonii ♪

    View Slide

  89. View Slide

  90. View Slide

  91. Voilà!

    View Slide

  92. View Slide

  93. One more thing…

    View Slide

  94. View Slide

  95. View Slide

  96. View Slide

  97. View Slide

  98. ✅ Obiekty na wczesnym etapie interakcji z danymi

    ✅ Walidacja danych

    View Slide

  99. Problem 3
    Wykorzystanie przy przetwarzaniu danych

    View Slide

  100. ETL
    Extract - Transform - Load

    View Slide

  101. View Slide

  102. 73Mb CSV

    View Slide

  103. ETL

    View Slide

  104. fgetcsv

    View Slide

  105. View Slide

  106. Dzięki! 🎉
    twitter.com/RadnoK_
    8lines.io
    linkedin.com/alfaro.konrad

    View Slide