ru
Feedback

НС ΠΏΠΎΠΏΠ°Π΄ΠΈΡ‚Π΅ΡΡŒ Π½Π° ΠΊΠ°Π½Π°Π» Π±ΠΎΡ‚Π°Π²ΠΎΠ΄Π°! Telemetrio Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈ ΠΏΠΎΠΌΠ΅Ρ‡Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°Π½Π°Π»Ρ‹ πŸ‘‰ Π₯ΠΎΡ‚ΠΈΡ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΊΡƒ β€” ΠΎΡ„ΠΎΡ€ΠΌΠΈΡ‚Π΅ подписку

Beer::Code🍺

Beer::Code🍺

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π² Telegram

Π’ΡƒΡ‚ ΠΏΡƒΠ±Π»Ρ–ΠΊΡƒΡŽΡ‚ΡŒΡΡ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΡ– Π·Π°ΠΌΡ–Ρ‚ΠΊΠΈ ΠΏΡ€ΠΎ PHP, Linux, Unit Testing, DB, OOP Ρ‚ΠΎΡ‰ΠΎ, витяги Π·Ρ– статСй, ΠΊΠ½ΠΈΠ³, Π²Ρ–Π΄Π΅ΠΎ, курсів Ρ‚Π° Ρ–Π½ΡˆΠΈΡ… ΠΌΠ°Ρ‚Π΅Ρ€Ρ–Π°Π»Ρ–Π². Π’Π΅ΠΏΠ΅Ρ€ Ρ‚ΠΎΠ±Ρ– Π±Ρ–Π»ΡŒΡˆΠ΅ Π½Π΅ ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π³ΠΎΡ€Ρ‚Π°Ρ‚ΠΈ Ρ‚ΠΎΠ½Π½ΠΈ Ρ–Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†Ρ–Ρ— ;) @genkovich β€” написати Π°Π²Ρ‚ΠΎΡ€Ρƒ ΠΊΠ°Π½Π°Π»Ρƒ.

Π‘ΠΎΠ»ΡŒΡˆΠ΅
Π‘Ρ‚Ρ€Π°Π½Π° Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Π°ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Π°
3 747
ΠŸΠΎΠ΄ΠΏΠΈΡΡ‡ΠΈΠΊΠΈ
-224 часа
+97 Π΄Π½Π΅ΠΉ
+6630 Π΄Π½Π΅ΠΉ
Архив постов
Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск ΠΈ "О-большоС" К соТалСнию, Π² послСднСС врСмя Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽ всё большС людСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ совсСм Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с Ρ‚Π΅ΠΌΠΎΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ². ΠΡ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ это Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ "Π΄Π° Π·Π°Ρ‡Π΅ΠΌ ΠΌΠ½Π΅ это Π½ΡƒΠΆΠ½ΠΎ, Ссли я пилю ΠΊΡ€Π°Π΄ΠΈΠΊΠΈ" ΠΈ ΠΎΠ½ΠΈ ΠΏΡ€Π°Π²Ρ‹. Π Π°Π·Π½ΠΈΡ†Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ с Ρ‚Π°ΠΊΠΈΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΡƒΠ΅Π΄Π΅ΡˆΡŒ ΠΈ Π²Π΅Π»ΠΈΠΊΠ° Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊ ΠΈ ΠΏΠΈΠ»ΠΈΡ‚ΡŒ ΠΊΡ€Π°Π΄ΠΈΠΊΠΈ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° своСй ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Ρ‹. Π›ΠΈΡ‡Π½ΠΎ я ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ стоит сразу слишком Π³Π»ΡƒΠ±ΠΎΠΊΠΎ ΠΊΠΎΠΏΠ°Ρ‚ΡŒ Π² эту Ρ‚Π΅ΠΌΡƒ, Π½ΠΎ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Π·Π½Π°Ρ‚ΡŒ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Как ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ понятия Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΊΠ½ΠΈΠ³Π°Ρ…, ΡΡ‚Π°Ρ‚ΡŒΡΡ… ΠΈ Π²ΠΈΠ΄Π΅ΠΎ. И Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄ΠΎ вас Ρ…ΠΎΡ‡Π΅Ρ‚ донСсти Π°Π²Ρ‚ΠΎΡ€ β€” Π½ΡƒΠΆΠ½ΠΎ Ρ‡ΡƒΡ‚ΡŒ-Ρ‡ΡƒΡ‚ΡŒ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ ваш Π΄Ρ€ΡƒΠ³ Π·Π°Π³Π°Π΄Π°Π» число, ΠΎΡ‚ 1 Π΄ΠΎ 100, Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΅Π³ΠΎ ΠΎΡ‚Π³Π°Π΄Π°Ρ‚ΡŒ. ΠŸΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π΄Ρ€ΡƒΠ³ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π°Π²Π°Ρ‚ΡŒ Π²Π°ΠΌ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ‚Ρ€Ρ‘Ρ… ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² "Мало" , "Много", "Π’ Ρ‚ΠΎΡ‡ΠΊΡƒ!". Если ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ всС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ подряд (1, 2, 3, 4... Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ прямым поиском), Ρ‚ΠΎ Π²Ρ‹ рискуСтС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ 100 ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ, ΠΏΡ€ΠΈ самом ΠΏΠ»ΠΎΡ…ΠΎΠΌ случаС. πŸ‘Œ Но Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ сразу ΡƒΠ΄Π°Ρ€ΠΈΡ‚Π΅ Π² сСрСдину ΠΈ Π½Π°Π·ΠΎΠ²Π΅Ρ‚Π΅ число 50? "Мало", ΠΈ Π²Ρ‹ сразу отсСкли ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ². Π—Π°Ρ‚Π΅ΠΌ "75" β€” "Много", ΠΈ Π΅Ρ‰Π΅ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΡƒΡˆΠ»Π°. ИмСнно Ρ‚Π°ΠΊ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск. ❗️ВаТно, Ρ‡Ρ‚ΠΎ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли список отсортирован. πŸ“Œ ВрСмя выполнСния ΠΈ "О-большоС" πŸ’β€β™‚οΈ Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ Π·Π°Π±Ρ‹Π»ΠΈ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌ, Π½ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ. Π’Π°ΠΊ Π²ΠΎΡ‚, запись log(2) 8 ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Π² ΠΊΠ°ΠΊΡƒΡŽ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ Π½ΡƒΠΆΠ½ΠΎ возвСсти 2, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ 8, ΠΈΡ‚Π°ΠΊ log(2) 8 = 3. "О-большоС" описываСт, насколько быстро Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ. ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ поиск Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт. Для списка ΠΈΠ· 4 ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄ΠΎΠ² (ΠΈΠ»ΠΈ любоС Π΄Ρ€ΡƒΠ³ΠΎΠ΅ n) чисСл потрСбуСтся Π΄ΠΎ 4 ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Β­Π΄ΠΎΠ² ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, максимальноС количСство ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ совпадаСт с Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ списка. Π’Π°ΠΊΠΎΠ΅ врСмя выполнСния называСтся Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΌ ΠΈ обозначаСтся O(n). Π‘ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌ поиском Π΄Π΅Π»ΠΎ обстоит ΠΈΠ½Π°Ρ‡Π΅. Для списка ΠΈΠ· 4 ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄ΠΎΠ² элСмСнтов, потрСбуСтся Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Π±ΠΎΠ»Π΅Π΅ 32 ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ. ВпСчатляСт, Π΄Π°? Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск выполняСтся Π·Π° логарифмичСскоС врСмя ΠΈ Π΅Π³ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ описываСтся ΠΊΠ°ΠΊ O(log n). ❓ Если это врСмя, Ρ‚ΠΎ Π³Π΄Π΅ ΠΆΠ΅ сСкунды? А ΠΈΡ… здСсь Π½Π΅Ρ‚. "О-большоС" Π½Π΅ сообщаСт врСмя Π² сСкундах, Π° позволяСт ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ количС­ство ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Оно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, насколько быстро возрастаСт врСмя выполнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. А врСмя Π² сСкундах ΡƒΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° исходных Π΄Π°Π½Π½Ρ‹Ρ…, Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… мощностСй ΠΈ Ρ‚.Π΄. ❗️ "О-большоС" опрСдСляСт врСмя выполнСния Π² Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ случаС. Π’ΠΎ Π΅ΡΡ‚ΡŒ Ссли ваш Π΄Ρ€ΡƒΠ³, Π·Π°Π³Π°Π΄Π°Π» число "1", Ρ‚ΠΎ ΠΏΡ€ΠΈ прямом поискС Π²Ρ‹ ΡƒΠ³Π°Π΄Π°Π΅Ρ‚Π΅ Π΅Π³ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ стоит Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ мСстС O(1). Но простой поиск всё Ρ€Π°Π²Π½ΠΎ выполняСтся Π·Π° врСмя O(n), фактичСски это ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ случаС придСтся ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ всС числа. πŸ‘ НадСюсь стало Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ понятнСС ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π² Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠ½ΠΈΠ³Π°Ρ… ΠΈΠ»ΠΈ ΡΡ‚Π°Ρ‚ΡŒΡΡ… Π²Ρ‹ встрСтитС записи Ρ‚ΠΈΠΏΠ° O(n), O(n!), O(n log n) Π²Ρ‹ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π²ΠΏΠ°Π΄Π°Ρ‚ΡŒ Π² ступор, Π° Π±ΡƒΠ΄Π΅Ρ‚Π΅ осознанно ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π°Π²Ρ‚ΠΎΡ€ Ρ…ΠΎΡ‡Π΅Ρ‚ Π΄ΠΎ вас донСсти. #junior #algorithm #source

Validation (part 1). Валидация Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ слоя прилоТСния Π£ΠΆΠ΅ нСсколько Ρ€Π°Π· мСня просили Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π·Π°ΠΌΠ΅Ρ‚ΠΊΡƒ ΠΏΠΎ этой Ρ‚Π΅ΠΌΠ΅ ΠΈ Π²ΠΎΡ‚, послС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… постов, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я Π±ΡƒΠ΄Ρƒ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π°ΠΊΠΎΠ½Π΅Ρ† ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ. Π§ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅ ΠΌΡ‹ рассмотрим ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ ΠΈ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΏΡ€ΠΎ ограничСния Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ Π½Π°Ρ‡Π½Π΅ΠΌ ΠΌΡ‹ сразу с Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ слоя нашСго прилоТСния, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ с Ρ‚ΠΎΠΉ самой бизнСс Π»ΠΎΠ³ΠΈΠΊΠΈ. πŸ“Œ Валидация сущности (Entity). Π Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ Π² нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€ΡŒ Entity. Π’ ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… постов, я ΡƒΠΆΠ΅ писал, Ρ‡Ρ‚ΠΎ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ сама Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°Ρ‰ΠΈΡ‰Π°Ρ‚ΡŒ свои ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹, Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² сСбС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π°Π»ΠΈΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΏΡ€ΠΈ этом Π²Π°Π»ΠΈΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ. ❌ НС Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ для Entity сСрвисы Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ. Π’Π°ΠΌ придСтся Π΄Π΅Π»Π°Ρ‚ΡŒ бСсконСчныС ΠΈ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ Π³Π΅Ρ‚Ρ‚Π΅Ρ€Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ Entity, ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° Ρ‚Π΅ΠΌ Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ сСрвис Π² случаС измСнСния самой сущности ΠΈ Π½Π΅ Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ Π΅Ρ‘ создании. πŸ‘ ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ всС ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ для сущСствования сущности ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ Π²Π°Π»ΠΈΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойству. ВсС Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½Ρ‹ значСниями ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ/ΠΈΠ»ΠΈ Π±Ρ‹Ρ‚ΡŒ присвоСнными ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚Π°ΠΊΠΆΠ΅ слСдуСт Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΠ΅Ρ€Π΅Π΄ присваиваниСм. Π’ случаС Ссли нас Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ устраиваСт β€” ΠΊΠΈΠ΄Π°Π΅ΠΌ Exception. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ❓ Но вСдь ΠΌΡ‹ ΠΆΠ΅ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ? Всё ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π½Π΅ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Exceptions, трассировка ΠΈ контСкст Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π²ΠΈΠ΄Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ. ВсС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²Ρ‹Π±Ρ€ΠΎΡˆΠ΅Π½Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ вывСсти ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π° экран. Но ΠΎΠ± этом Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅. πŸ“Œ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Value Objects для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволяСт ΠΈ Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, ΠΈ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² дальнСйшСм Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… частях нашСго прилоТСния. πŸ‘ Из ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ вынСсти AccountNumber, пСрСмСстив Π² Π½Π΅Π³ΠΎ всю Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ, ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Value Object Money, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π·ΡΡ‚ΡŒ Π½Π° сСбя ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ слоТСния для Π»ΠΎΠ³ΠΈΠΊΠΈ пополнСния счСта. Π’ΠΎΠ³Π΄Π° наша Entity Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π² основной сущности ΠΌΡ‹ ΡƒΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с Π²Π°Π»ΠΈΠ΄Π½Ρ‹ΠΌΠΈ Value Objects, Ρ‚ΠΎ Π½Π΅Ρ‚ нСобходимости ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ сущности, ΠΌΡ‹ ΠΈ Ρ‚Π°ΠΊ всё Π·Π°Ρ‚Π°ΠΉΠΏΡ…ΠΈΠ½Ρ‚ΠΈΠ»ΠΈ. πŸ‘‰ Π’Π΅ΠΌΠ° ΠΎΡ‡Π΅Π½ΡŒ ΠΎΠ±ΡˆΠΈΡ€Π½Π°Ρ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΡΡ‚Π°Π²ΡŒ 🍺 Ссли интСрСсна информация ΠΏΡ€ΠΎ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…, взаимодСйствиС с Π‘Π”, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎ Incomplete, Invalid ΠΈ Inconsistent ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. #php #oop #junior #source

Data Transfer Object (DTO) ΠΈ ΠΊΠ°ΠΊ Π΅Π³ΠΎ Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ? Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… постах я ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π» Ρ‡Ρ‚ΠΎ это, Π½ΠΎ Ρ…ΠΎΡ‡Ρƒ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ Π½Π° Π½Ρ‘ΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы. ❓ Π—Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½? Для упрощСния рассмотрим всё Ρ‚ΠΎΡ‚-ΠΆΠ΅ кСйс ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ слоями Π²Π½ΡƒΡ‚Ρ€ΠΈ прилоТСния. Основная идСя, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ нашСго бизнСса ΠΎΡ‚ инфраструктуры Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° ΠΈ Π΄Π΅Π»ΠΎ Ρ‚ΡƒΡ‚ вовсС Π½Π΅ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π·Π°Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠ΅Ρ€Π΅Π΅Ρ…Π°Ρ‚ΡŒ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ (хотя ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ этого Π½Π΅ стоит), Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² нСзависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΎΡ‚ΠΊΡƒΠ΄Π° ΠΎΠ½ΠΎ дСргаСтся. Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° рассмотрим ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΈ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΡ‹ пытаСмся Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ сСрвис (ΠΈΠ»ΠΈ command handler) для смСны адрСса доставки. И Request ΠΈ Input ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ инфраструктуры Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ, ΠΏΡ€ΠΈ этом ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹ΠΉ интСрфСйс. Плюс ΠΊΠΎ всСму это Π΄Π΅Π»Π°Π΅Ρ‚ Π½Π°ΡˆΡƒ бизнСс Π»ΠΎΠ³ΠΈΠΊΡƒ зависимой ΠΎΡ‚ Ρ‚ΠΎΠΉ самой инфраструктуры. Как Ρ€Π°Π· здСсь Π½Π°ΠΌ Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΈ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ DTO, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ слои Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°. ❓ Π”ΠΎΠ»ΠΆΠ΅Π½ Π»ΠΈ DTO ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ? πŸ‘‰ НСт. Π’Π½ΡƒΡ‚Ρ€ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ, ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. ΠžΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ этап Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ Π²Π°ΡˆΠ΅ΠΌΡƒ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Ρƒ (ΠΈΠ»ΠΈ Π²Π°Π»ΠΈΠ΄Π°Ρ‚ΠΎΡ€Ρƒ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°), Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΡƒΠΆΠ΅ самому Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠΌΡƒ слою (Value Object, Entity ΠΈ Ρ‚.Π΄.). Π’ΠΎ Π΅ΡΡ‚ΡŒ DTO Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. Всё Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, это привСсти Π΄Π°Π½Π½Ρ‹Π΅ ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠ°ΠΌ, ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ полям ΠΈΡ… значСния ΠΈΠ»ΠΈ null (Ссли Π² вашСм случаС это допустимо). Π­Ρ‚ΠΎ оставит знания ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π΄ΠΎΠΌΠ΅Π½Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ ядра прилоТСния, Π° Π½Π΅ Π² ΠΊΠΎΠ΄Π΅ инфраструктуры. ❗️ НазывайтС ваши DTO ΠΏΠΎ ΠΈΡ… намСрСниям (дСйствиям) πŸ‘ Если Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для измСнСния адрСса доставки Π·Π°ΠΊΠ°Π·Π° (ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… Π²Ρ‹ΡˆΠ΅), Π½Π°Π·ΠΎΠ²ΠΈΡ‚Π΅ Π΅Π³ΠΎ ChangeDeliveryAddress (Π° Π½Π΅ DeliveryAddressDTO). Π’ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… это ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρƒ, Ρ‚.ΠΊ. Ρ€Π°Π·Π½Ρ‹Π΅ дСйствия, Ρ‡Π°Ρ‰Π΅ всСго Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ…. НапримСр DTO для создания адрСса доставки ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ID, Π° для измСнСния ΠΎΠ½ ΡƒΠΆΠ΅ обязатСлСн. #junior #php #dto #source

The Everybody Poops Rule (ВсС ΠΊΠ°ΠΊΠ°ΡŽΡ‚) πŸ‘‰ Как ΠΌΠ½Π΅ каТСтся отличная аллСгория, которая ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠ° ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ. ВсС ΠΌΡ‹ постоянно сталкиваСмся с ситуациями, ΠΊΠΎΠ³Π΄Π° Π² ΠΊΠΎΠ΄Π΅ приходится ΠΈΠ΄Ρ‚ΠΈ Π½Π° компромиссы. Иногда ΠΈΠ·-Π·Π° Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΈΠ½ΠΎΠ³Π΄Π° для избСТания ΠΎΠ²Π΅Ρ€ΠΈΠ½ΠΆΠΈΠ½ΠΈΡ€ΠΈΠ½Π³Π°, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΠ·-Π·Π° Π½Π΅ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²Π° систСмы, Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ Π·Π½Π°Π½ΠΈΠΉ ΠΈ Ρ‚.Π΄. И ΠΌΡ‹ ΡΠΎΠ·Π½Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ оставляСм Π² ΠΊΠΎΠ΄Π΅ "Π΄Π΅Ρ€ΡŒΠΌΠΎ", вСдь Π½Π΅ каТдая Ρ‡Π°ΡΡ‚ΡŒ нашСго прилоТСния Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ идСальной. πŸ“Œ ВсС ΠΊΠ°ΠΊΠ°ΡŽΡ‚. Но Π΄ΠΎΠΌΠ° это Π΄Π΅Π»Π°ΡŽΡ‚ Π½Π΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠΌΠ½Π°Ρ‚Π΅. Π£ вас Π΅ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΌΠ½Π°Ρ‚Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ ΠΊΠ°ΠΊΠ°Π΅Ρ‚Π΅, ставитС Π΄Π²Π΅Ρ€ΡŒ, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π°ΠΌ это Π΄Π΅Π»Π°Π΅Ρ‚Π΅. Π”Π°, Π·Π²ΡƒΡ‡ΠΈΡ‚ странно, Π½ΠΎ Π·Π°Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ запоминаСтся πŸ˜‚ ❗️ Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ этот процСсс управляСмый. Π”Π°Π½Π½ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ с этим ΠΆΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ сокрытия ΠΈ инкапсуляции. Если ΠΊΠΎΠ΄ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½ β€” Π½Π΅ Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ скрываСтся Π·Π° интСрфСйсом. Π“Π»Π°Π²Π½ΠΎΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π³Π°Π΄ΠΈΠΌ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… частях ΠΈ "Π΄Π΅Ρ€ΠΆΠΈΠΌ Π΄Π²Π΅Ρ€ΡŒ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ". πŸ‘ ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ρƒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… мСст Ρ‚ΠΎΠΆΠ΅ слСдуСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ стандарты. Π’ΠΎ Π΅ΡΡ‚ΡŒ нСльзя совсСм Π·Π°Π±ΠΈΡ‚ΡŒ ΠΈ Π²Ρ‚ΡƒΠ»ΠΈΡ‚ΡŒ Ρ‚ΡƒΠ΄Π° ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ God Object с ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Π² 1000 строк, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ запросы ΠΊ Π‘Π” Π² foreach. Π—Π΄Π΅ΡΡŒ Π²Π°ΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ баланс. Π­Ρ‚ΠΎ Ρ‚ΠΎΠΆΠ΅ нСпростая Ρ€Π°Π±ΠΎΡ‚Π°. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, ΠΏΠΎΠ»ΠΎΠΆΠΈΠ² ΠΊΠΎΠ΄ "Π·Π° Π΄Π²Π΅Ρ€ΡŒ" ΠΎΠ½ Π½Π΅ становится Π»ΡƒΡ‡ΡˆΠ΅, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ риски Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ придётся Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ. ❗️ Π’Π°ΠΊΠΆΠ΅ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ всё ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ β€” Π½Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ это Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ всСгда ΠΈ Π²Π΅Π·Π΄Π΅. ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π·Π°Π΄Π°ΠΉΡ‚Π΅ сСбС нСсколько вопросов: β€’ Как часто ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ? β€’ Как Π΄ΠΎΠ»Π³ΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Ρ‚Ρ€ΠΎΠ³Π°Ρ‚ΡŒ? β€’ ЯвляСтся Π»ΠΈ это основным Π΄ΠΎΠΌΠ΅Π½ΠΎΠΌ Π² вашСй ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ? (здСсь Π»ΡƒΡ‡ΡˆΠ΅ этого Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ) πŸ‘ Π•Ρ‰Π΅ ΠΊΡ€ΡƒΡ‡Π΅ β€” сразу ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΉ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³. Π’ΠΎ, Ρ‡Ρ‚ΠΎ сСгодня Π²Ρ‹ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ бизнСсу Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΈΠ»ΠΈ Π³Π΄Π΅-Ρ‚ΠΎ Π°ΡƒΠΊΠ½ΡƒΡ‚ΡŒΡΡ Π² самый нСподходящий ΠΌΠΎΠΌΠ΅Π½Ρ‚. ΠšΡ€ΡƒΡ‚ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΊ этому Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌ. Π›ΡƒΡ‡ΡˆΠ΅ всСго это мСсто Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚ΠΎΡ‡Π½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΎ всСх отклонСниях. #junior #oop #source

НС PHP Π΅Π΄ΠΈΠ½Ρ‹ΠΌ ;) 😒 К соТалСнию наш Π»ΡŽΠ±ΠΈΠΌΡ‹ΠΉ PHP ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ Π½Π΅ для всСх Π·Π°Π΄Π°Ρ‡. Одной ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… являСтся Ρ€Π°Π±ΠΎΡ‚Π° с Big Data. Мой ΠΊΠΎΠ»Π»Π΅Π³Π° ΠΈΠ· Netpeak, АлСксСй Π‘Π΅Π»Π΅Π·Π½Ρ‘Π², посвятил Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Ρ†Π΅Π»Ρ‹ΠΉ ΠΊΠ°Π½Π°Π» R4marketing. πŸ‘‰ Канал посвящён языку R. БпСцифичСский язык Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ для Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ ΠΈ статистикой ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ являСтся Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚ΠΎΠΌ Python Π² области Data Science. Π’ ΠΊΠ°Π½Π°Π»Π΅ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΡŽΡ‚ΡΡ: - Π‘Ρ‚Π°Ρ‚ΡŒΠΈ - Π’ΠΈΠ΄Π΅ΠΎ ΡƒΡ€ΠΎΠΊΠΈ - Π’Π΅Π±ΠΈΠ½Π°Ρ€Ρ‹ ΠΈ Π΄ΠΎΠΊΠ»Π°Π΄Ρ‹ с ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΉ - Π—Π°ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΏΠΎ R - Книги - БСсплатныС ΠΎΠ½Π»Π°ΠΉΠ½ курсы - Новости ΠΈ Ρ€Π΅Π»ΠΈΠ·Ρ‹ ΠΈΠ· ΠΌΠΈΡ€Π° R πŸ‘ Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, Ссли Π²Π°ΠΌ интСрСсна ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Data Science, Ρ‚ΠΎ Π²Ρ‹ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ Π½Π°ΠΉΠ΄Ρ‘Ρ‚Π΅ Π² ΠΊΠ°Π½Π°Π»Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Regular Expression ΠŸΡ€ΠΈ Π²ΠΈΠ΄Π΅ слова "RegExp" Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π΄Π΅Ρ€Π³Π°Ρ‚ΡŒΡΡ Π³Π»Π°Π·. Π’Π΅Π΄ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½Π° с ΠΏΠΎΠΌΠ½ΠΈΡ‚ дСсятки ΠΏΠΎΡ‚Ρ€Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… часов, Ρ€Π°Π΄ΠΈ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΡŒ всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ кСйсы ΠΈ Ρ‚Π°ΠΊΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ рСгулярку, которая Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Π—Π΄Π΅ΡΡŒ я ΠΎΠΏΠΈΡˆΡƒ ΠΏΠ°Ρ€Ρƒ совСтов ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ сСбС Тизнь ΠΏΡ€ΠΈ написании RegExp. πŸ‘‰ Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ (delimiter) Π Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ символах, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΎΠ±ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌ нашС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π§Π°Ρ‰Π΅ всСго Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ slash "/"
/(foo|bar)/i

❗️На самом Π΄Π΅Π»Π΅ для раздСлитСля ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ любой символ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ~,!, @, #, $. РаздСлитСлями НЕ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π±ΡƒΠΊΠ²Π΅Π½Π½ΠΎ-Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π΅ символы (AZ, az ΠΈ 0-9), ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Π΅ символы (Π’Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Emojis 😒) ΠΈ обратная косая Ρ‡Π΅Ρ€Ρ‚Π° (\). ❓ Но Π·Π°Ρ‡Π΅ΠΌ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ? Всё Π΄Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ всС вхоТдСния символа раздСлитСля Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ экранированы, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ:
preg_match('/^https:\/\/example.com\/path/i', $uri);
// ΠΈΠ»ΠΈ
preg_match('~^https://example.com/path~i', $uri);

πŸ‘‰ Π˜ΠΌΠ΅Π½ΡƒΠΉΡ‚Π΅ скобочныС Π³Ρ€ΡƒΠΏΠΏΡ‹ (Π³Ρ€ΡƒΠΏΠΏΡ‹ Π·Π°Ρ…Π²Π°Ρ‚Π°) Π‘ΠΊΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΌΠΈ Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌΠΈ называСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ находится Π²Π½ΡƒΡ‚Ρ€ΠΈ () скобок. НайдСнныС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ‹ Π² $matches.
$pattern = '~Price: (Β£|€)(\d+)~';
// ΠΈΠ»ΠΈ
$pattern = '~Price: (?<currency>Β£|€)(?<price>\d+)~';

Π˜ΠΌΠ΅Π½ΡƒΡ скобочныС Π³Ρ€ΡƒΠΏΠΏΡ‹, ΠΌΡ‹ сразу ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π΄Π²Π° прСимущСства: это упростит Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ рСгулярного выраТСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π½Π° Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Ρ‹ Π² $matches; πŸ‘‰ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ классы Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ вашС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΌ. Π‘Π°ΠΌΡ‹ΠΉ распространСнный класс \d - прСдставляСт собой ΠΎΠ΄Π½Ρƒ Ρ†ΠΈΡ„Ρ€Ρƒ (эквивалСнтно [0-9]), ΠΏΡ€ΠΈ этом \D (Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ рСгистрС) эквивалСнтно [^0-9] Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ являСтся Ρ†ΠΈΡ„Ρ€ΠΎΠΉ. Π’ΠΎ Π΅ΡΡ‚ΡŒ использованиС Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ рСгистра являСтся ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌ основному Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ. \w соотвСтствуСт слову (ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· Π±ΡƒΠΊΠ², Ρ†ΠΈΡ„Ρ€ ΠΈ подчёркивания) A-Za-z0-9_ \s соотвСтствуСт символу ΠΏΡ€ΠΎΠ±Π΅Π»Π° (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚Π°Π±ΡƒΠ»ΡΡ†ΠΈΡŽ ΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ строки) . соотвСтствуСт Π»ΡŽΠ±ΠΎΠΌΡƒ символу πŸ‘Œ Π’Π°ΠΊ-ΠΆΠ΅ слСдуСт ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ использовании Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ unicode (Ρ„Π»Π°Π³ /u), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… классов \p{}. НапримСр: \p{Sc} β€” любой Π·Π½Π°ΠΊ Π²Π°Π»ΡŽΡ‚Ρ‹ \p{P} β€” любой Π·Π½Π°ΠΊ ΠΏΡƒΠ½ΠΊΡ‚ΡƒΠ°Ρ†ΠΈΠΈ \p{L} β€” любая Π±ΡƒΠΊΠ²Π° ΠΈΠ· любого языка Π’Π΅ΡΡŒ ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ здСсь. #junior #regexp #source

Tell, Don't Ask (TDA) Π•Ρ‰Π΅ Π² 1997 Π³ΠΎΠ΄Ρƒ А. Π¨Π°Ρ€ΠΏ сформулировал Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ: πŸ“ƒ ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ сначала ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ. Π’ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² β€” Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ ΠΈΡ… information hiding. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ скрыли Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π­Ρ‚ΠΎ упростило ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ нашСго ΠΊΠΎΠ΄Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ сдСлало наш ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π±ΠΎΠ»Π΅Π΅ осознанным. ❗️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π² этом мСстС ΠΊΡ‚ΠΎ-Ρ‚ΠΎ вспоминаСт ΠΏΡ€ΠΎ "Π°Π½Π΅ΠΌΠΈΡ‡Π½ΡƒΡŽ модСль", Π° ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΠΏΡ€ΠΎ "god objects" ΠΈ начинаСтся Π΄ΠΈΠΊΠΈΠΉ срач, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹, Ссли Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ с ΠΊΠ΅ΠΌ-Ρ‚ΠΎ ΠΎΠ±ΡΡƒΠ΄ΠΈΡ‚ΡŒ эту Ρ‚Π΅ΠΌΡƒ ;) πŸ‘‰ ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ β€” это Π½Π΅ истина послСднСй инстанции. БСзусловно, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ TDA Π² Π³ΠΎΠ»ΠΎΠ²Π΅, Π½ΠΎ Π½Π΅ слСпо Π΅ΠΌΡƒ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ. Π”Π° ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ: πŸ”Ή Π Π°Π·Π΄ΡƒΡ‚ΠΈΡŽ классов ΠΈ увСличСния ΠΈΡ… слоТности; πŸ”Ή Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ coupling ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎ Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΌΠ½ΠΎΠ³ΠΎ отвСтствСнности; πŸ”Ή ΠΠ°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡŽ SRP (single responsibility principle) Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ²; ❓ Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Ссли для рСгистрации User Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ email ΠΈ password, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ совсСм Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ участия Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… процСссах, Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ всё Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅? Или это совсСм Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π°ΠΏΡ€. Credentials? ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ зависит ΠΎΡ‚ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ контСкста, Π½ΠΎ Π² любом случаС стоит ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ Π·Π΄Ρ€Π°Π²ΠΎΠ³ΠΎ смысла. #oop #middle #source

ИспользованиС индСксов Π² MySQL (part 2) Π’ΠΎΡ‚ Π΅Ρ‰Π΅ нСсколько Π²Π°ΠΆΠ½Ρ‹Ρ… Π·Π°ΠΌΠ΅Ρ‚ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ этого поста. πŸ“Œ ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ индСксы ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ запросы SELECT, Π½ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ запросы Π½Π° INSERT (Π° Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ΠΈ UPDATE). Π’ Ρ†Π΅Π»ΠΎΠΌ рСкомСндуСтся ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ дублирования ΠΊΠ»ΡŽΡ‡Π΅ΠΉ. НапримСр Ссли Π² ΠΎΠ΄Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 2 индСкса:
KEY `firstname` (`firstname`),
KEY `firstname_lastname_id` (`firstname`,`lastname`,`id`)

Ρ‚ΠΎ firstname являСтся Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠΌ firstname_lastname_id, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ firstname являСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ столбцом индСкса firstname_lastname_id. πŸ‘‰ Π’ΠΎΡ‚ Ρ‚ΡƒΠ»Π·Π°, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ случаи ΠΈ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ с Π½ΠΈΠΌΠΈ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ. πŸ“Œ ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ ситуация, Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ индСксы Ρ‚Π°ΠΊΠΆΠ΅ слСдуСт ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Ρ‚.ΠΊ. это Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ расходы памяти ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° вставку ΠΈ Π°ΠΏΠ΄Π΅ΠΉΡ‚. Для этого Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° Ρ‚ΡƒΠ»Π·Π°, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ кСйсы, Π½ΠΎ послС нахоТдСния ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ лишнСго. πŸ“Œ Начиная с вСрсии 8+, MySQL ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ индСксы ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ (нисходящиС, DESC), Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ индСксы Π² порядкС убывания. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ, ΠΊΠΎΠ³Π΄Π° Ρƒ вас Π΅ΡΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π³Π΄Π΅ Π½Π°Π΄ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ послСдниС Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.
CREATE TABLE t (
    c1 INT, c2 INT,
    INDEX idx1 (c1 ASC, c2 ASC),
    INDEX idx2 (c1 ASC, c2 DESC),
    INDEX idx3 (c1 DESC, c2 ASC),
    INDEX idx4 (c1 DESC, c2 DESC)
);

πŸ“Œ Π’Π°ΠΊΠΆΠ΅ Ρƒ вас ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ Π²Π°ΠΌ Π² Π²Ρ‹Π±ΠΎΡ€ΠΊΠ΅ ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠΆΠ½Ρ‹ Ρ€Π΅Π΄ΠΊΠΎ. ΠŸΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ (логичСски ΠΈΠ»ΠΈ ΠΏΠΎ нСобходимости использования Π΄Π°Π½Π½Ρ‹Ρ…). Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ускорит Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ ΠΈ снизит ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ CPU. πŸ‘ Если Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π²ΡƒΠΌ ΠΏΡƒΠ½ΠΊΡ‚Π°ΠΌ этой Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ, Ρ‚ΠΎ слСдуСт ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ Percona Toolkit ΠΎΡ‡Π΅Π½ΡŒ большой Π½Π°Π±ΠΎΡ€ инструмСнтов, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ ;) Если ΠΈ этот пост Π½Π°Π±Π΅Ρ€Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ 🍺, Ρ‚ΠΎ Π½Π°ΠΏΠΈΡˆΡƒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΡƒΡŽ Π·Π°ΠΌΠ΅Ρ‚ΠΊΡƒ ΠΎ самых интСрСсных Π½Π° ΠΌΠΎΠΉ взгляд. #MySQL #junior #source

ΠŸΡ€Π°Π²ΠΈΠ»Π° ΠΏΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Entity (part 1) πŸ—’ Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΡΡ‚Π°Ρ‚ΡŒΡΡ… я ΡƒΠΆΠ΅ нСсколько Ρ€Π°Π· ссылался Π½Π° понятиС сущности Entity. Π Π°Π·Π½Ρ‹Π΅ Π°Π²Ρ‚ΠΎΡ€Ρ‹ (Π½Π°ΠΏΡ€. Эванс, Нобак, Π’Π΅Ρ€Π½ΠΎΠ½) Π΄Π°ΡŽΡ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ опрСдСлСния этого понятия, Π½ΠΎ ΡΡƒΡ‚ΡŒ сильно ΠΎΡ‚ этого Π½Π΅ мСняСтся. Бущности β€” это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хранят состояниС вашСго прилоТСния. Но Π½Π΅ "просто хранят". И Π²ΠΎΡ‚ нСсколько ΠΏΡ€Π°Π²ΠΈΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹: πŸ“Œ Π‘ΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ всСгда Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°Ρ‰ΠΈΡ‰Π°Ρ‚ΡŒ свои Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ ΠΈ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ Π² согласованном состоянии. Она Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Ссли Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅ΠΏΠΎΠ»Π½Ρ‹Π΅ ΠΈΠ»ΠΈ Π½Π΅Π²Π°Π»ΠΈΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. Для этого Π² конструкторС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎ значСния находятся Π² допустимом Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅, всС значСния ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Ρ‚.Π΄. Π’ случаС Ссли Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ - Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Π±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. πŸ“Œ Когда ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ поля фактичСски прСдставляСт дСйствиС, выполняСмоС Π½Π°Π΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ для Π½Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² самой сущности. Π—Π°Π΄Π°Ρ‡Π° Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ прСдоставлСнных Π΅ΠΌΡƒ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, учитывая Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. НапримСр Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с Π·Π°ΠΊΠ°Π·Π°ΠΌΠΈ. Π—Π°ΠΊΠ°Π· Ρ‚ΠΎΠ²Π°Ρ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½, Ссли ΠΎΠ½ Π½Π΅ доставлСн. ВмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π΄Π΅-Ρ‚ΠΎ Π²ΠΎ Π²Π½Π΅ сущности Π΄Π΅Π»Π°Ρ‚ΡŒ:
$order->getStatus(), 
// isn't delivered
$order->setCancel()

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ cancel(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ сущности ΠΈ Ссли всё согласовано β€” ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΅Ρ‘ состояниС. πŸ“Œ НС Π΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ всё врСмя ΠΎ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Ρ‘Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ структуры ΠΈ самой сущности. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ случаСв, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ с нашСй Π±Π°Π·ΠΎΠΉ (высокая конкурСнция запросов, deadlocks ΠΈ Ρ‚.Π΄.), Π½ΠΎ идСя Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΠ΅ ΠΈ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ…, ΠΊΠ°ΠΊ ΠΎ Π²Π΅Ρ‰Π°Ρ… Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΌΠΈΡ€Π΅, Π° Π½Π΅ ΠΊΠ°ΠΊ ΠΎ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΏΡ€ΠΈΠΌΠΈΡ‚Π΅ для сСбя, Ρ‡Ρ‚ΠΎ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π‘Π” это ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ Π·Π°Π΄Π°Ρ‡Π°. πŸ‘‰ Π•Ρ‰Π΅ нСсколько ΠΏΡ€Π°Π²ΠΈΠ», ΠΊΠ°ΡΠ°ΡŽΡ‰ΠΈΡ…ΡΡ ID, построСния связСй с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ сущностями, Ρ„ΠΈΡˆΠΊΠΈ с использованиСм Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ части. #php #oop #junior #entity #source

Whole value concept (Quantity pattern) Π― часто Π²ΠΈΠΆΡƒ, Ρ‡Ρ‚ΠΎ этому ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚Ρƒ ΡƒΠ΄Π΅Π»ΡΡŽΡ‚ ΠΌΠ°Π»ΠΎ внимания ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Value Objects, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ€Π΅ΡˆΠΈΠ» ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Π½Π° Π½Ρ‘ΠΌ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ. ❗️БлСдуСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… вашСго бизнСса. πŸ‘‰ ИдСя простая. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ гСопозиция. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π³Π΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ находится Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π°ΠΌ Π½ΡƒΠΆΠ½Π° ΠΈ ΡˆΠΈΡ€ΠΎΡ‚Π° ΠΈ Π΄ΠΎΠ»Π³ΠΎΡ‚Π°. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сами ΠΏΠΎ сСбС "ΡˆΠΈΡ€ΠΎΡ‚Π°" ΠΈΠ»ΠΈ "Π΄ΠΎΠ»Π³ΠΎΡ‚Π°" Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ смысла Π΄Ρ€ΡƒΠ³ Π±Π΅Π· Π΄Ρ€ΡƒΠ³Π°, Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС, Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ VO, Ссли сами ΠΏΠΎ сСбС ΠΎΠ½ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π·Π½Π°Ρ‡Π°Ρ‚, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. πŸ‘‰ Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π£ нас Π΅ΡΡ‚ΡŒ сумма Π΄Π΅Π½Π΅Π³, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ с Π΄Ρ€ΡƒΠ³ΠΎΠΉ суммой. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈ ΠΌΡ‹ ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π΄Π²Π΅ amount, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ currency. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ currency Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ влияСт Π½Π° Π»ΠΎΠ³ΠΈΠΊΡƒ вычислСний, Ρ‚ΠΎ ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Ρ‚Π°ΠΌ-ΠΆΠ΅, Π³Π΄Π΅ ΠΈ amount. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ, Ρ‚Π°ΠΊΠΈΠ΅ ΡˆΡ‚ΡƒΠΊΠΈ ΠΊΠ°ΠΊ Π²Π°Π»ΡŽΡ‚Π°, ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹, ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄, Π½ΠΎΠΌΠ΅Ρ€ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°, расстояниС, вСс ΠΈ Ρ‚.Π΄. πŸ“Œ Π’ΠΎ Π΅ΡΡ‚ΡŒ Ссли Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Π»ΠΎΠ³ΠΈΠΊΡƒ - ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒΡŽ состояния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π³Π΄Π΅ эта Π»ΠΎΠ³ΠΈΠΊΠ° Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π°. Π”Π°-Π΄Π°, вычислСния(Π»ΠΎΠ³ΠΈΠΊΠ°) Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ слоТСниС/Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ Π΄Π΅Π½Π΅Π³ ΠΈΠ»ΠΈ вычислСниС расстояния Π² случаС с Π³Π΅ΠΎ). πŸ“Œ Если ΠΆΠ΅ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ хранятся Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π° Π»ΠΎΠ³ΠΈΠΊΡƒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π² этом ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ Π²Π»ΠΈΡΡŽΡ‚ - Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ эти Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚Ρ‚ΡƒΠ΄Π° вынСсти Ρ‡Ρ‚ΠΎ Π±Ρ‹ Π½Π΅ мСшали. ❌ Π­Ρ‚ΠΎ Π½Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ совсСм ΠΏΠ΅Ρ€Π΅ΡΡ‚Π°Ρ‚ΡŒ ΠΎΠ±ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ (строки, числа ΠΈ Ρ‚.Π΄.). Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ стоит Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°Ρ‚ΡŒΡΡ ΠΎ цСлСсообразности Ρ‚ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² вашСй ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области. #php #oop #middle #source

БтатичСскиС Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ 😱 ❓ Π‘ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ Π½Π° днях ΠΏΡ€ΠΈΡˆΠ΅Π» вопрос ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· подписчиков ΠΊΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° этого поста. Π—Π²ΡƒΡ‡Π°Π» ΠΎΠ½ Ρ‚Π°ΠΊ: "А Π·Π°Ρ‡Π΅ΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ callback’и Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сортировки (usort), статичСскими?" И я ΠΏΠΎΠ΄ΡƒΠΌΠ°Π», Ρ‡Ρ‚ΠΎ это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ вопрос, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ стоит ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅. πŸ“„ Из Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ: ΠŸΡ€ΠΈ объявлСнии Π² контСкстС класса, Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ класс Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски связан с Π½ΠΈΠΌ, дСлая $this доступным Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ класса. Если Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ автоматичСского связывания с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ классом, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ статичСскиС Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° closure ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ Π² контСкстС класса, Ρ‚ΠΎ класс автоматичСски привязываСтся ΠΊ Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΡŽ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ $this доступСн Π²Π½ΡƒΡ‚Ρ€ΠΈ области Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠΉ Π²ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. ❗️На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд "Π΄Π° ΠΈ Ρ‡Ρ‘Ρ€Ρ‚ с Π½ΠΈΠΌ", Π½ΠΎ стоит ΠΊΠΎΠΏΠ½ΡƒΡ‚ΡŒ Ρ‡ΡƒΡ‚ΡŒ Π³Π»ΡƒΠ±ΠΆΠ΅. Π—Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠ΅, содСрТащСС ссылку Π½Π° $this, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ сборку мусора для этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ρ‡Ρ‚ΠΎ, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΌΠΎΠΆΠ΅Ρ‚ сущСствСнно ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ с использованиСм static ΠΈ Π±Π΅Π· Π½Π΅Π³ΠΎ. Ну ΠΈ gist, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠΈΠ³Ρ€Π°Ρ‚ΡŒΡΡ. πŸ‘‰ Если подвСсти ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ ΠΈΡ‚ΠΎΠ³, Ρ‚ΠΎ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±Π΅Π· static стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ссли Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΠ²ΡΠ·Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊ области видимости выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’ΠΎ всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… случаях ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ static, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ случайно Π½Π΅ Π²Ρ‹ΡΡ‚Ρ€Π΅Π»ΠΈΡ‚ΡŒ сСбС Π² Π½ΠΎΠ³Ρƒ. #php #middle #memory #source

ИспользованиС индСксов Π² MySQL Π§Π΅ΠΌ большС ΠΌΡ‹ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ORM, Ρ‚Π΅ΠΌ мСньшС задумываСмся ΠΎΠ± ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π‘Π”, Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΡ€ΠΈΠΆΠΌΡ‘Ρ‚. Π’ простых кСйсах для ускорСния запроса ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, Π½ΠΎ Ссли случай Ρ‡ΡƒΡ‚ΡŒ слоТнСС Ρ‡Π΅ΠΌ "Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ индСкс", Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ часто Π½Π΅ Π·Π½Π°ΡŽΡ‚ Π·Π° Ρ‡Ρ‚ΠΎ Ρ…Π²Π°Ρ‚Π°Ρ‚ΡŒΡΡ. Π—Π΄Π΅ΡΡŒ Ρ…ΠΎΡ‡Ρƒ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Ρƒ Π·Π°ΠΌΠ΅Ρ‚ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π² ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ситуации. πŸ‘‰ ВсС ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ индСксы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для быстрого поиска строк с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ значСниями столбцов. Π‘Π΅Π· индСкса MySQL Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ поиск с ΠΏΠ΅Ρ€Π²ΠΎΠΉ строки, Π° Π·Π°Ρ‚Π΅ΠΌ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ всю Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ. Π§Π΅ΠΌ большС Ρ‚Π°Π±Π»ΠΈΡ†Π°, Ρ‚Π΅ΠΌ Π΄ΠΎΡ€ΠΎΠΆΠ΅ эта опСрация. ❓ На Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ? β€’ НС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ случай ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄Π½Π° ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… индСксах. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС MySQL Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ индСкс ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π΅Ρ€Π½Π΅Ρ‚ наимСньшСС ΠΊΠΎΠ»-Π²ΠΎ строк (Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΈΠ·Π±ΠΈΡ€Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ). β€’ ΠŸΡ€ΠΈ использовании составного (ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½ΠΎΠ³ΠΎ) индСкса ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ Π² Π±ΠΎΠ»Π΅Π΅ простых Π²Ρ‹Π±ΠΎΡ€ΠΊΠ°Ρ…, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ столбцам пСрСчислСнным слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ. НапримСр индСкс (col1, col2, col3) Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ для Π²Ρ‹Π±ΠΎΡ€ΠΎΠΊ (col1), (col1, col2), ΠΈ (col1, col2, col3), Π½ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ для (col2, col3) ΠΈΠ»ΠΈ (col3). 🀝 Для получСния строк ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ† ΠΏΡ€ΠΈ JOIN β€’ Для сравнСния строковых столбцов ΠΎΠ±Π° столбца Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ. НапримСр, сравнСниС столбца utf8 со столбцом latin1 ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ использованиС индСкса. β€’ MySQL ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ индСксы Π±ΠΎΠ»Π΅Π΅ эффСктивно, Ссли ΠΎΠ½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ° ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. Π’ этом контСкстС VARCHAR ΠΈ CHAR ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ, Ссли ΠΎΠ½ΠΈ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ. НапримСр, VARCHAR (10) ΠΈ CHAR (10) ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€, Π° VARCHAR (10) ΠΈ CHAR (15) - Π½Π΅Ρ‚. Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ столбцов Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, VARCHAR с DATETIME ΠΈΠ»ΠΈ INT) ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅ΠΏΡΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ использованию индСксов, Ссли ΠΏΡ€ΠΈ этом Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅. НапримСр Π² ΠΎΠ΄Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Ρƒ вас INT 1, Π° Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ VARCHAR ' 1' ΠΈΠ»ΠΈ '00001'. πŸ™ˆ НС слишком ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠ΅ β€’ Π˜Π½Π΄Π΅ΠΊΡΡ‹ ΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹ для ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ† ΠΈΠ»ΠΈ для Π±ΠΎΠ»ΡŒΡˆΠΈΡ…, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ всС Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΈΡ… Ρ‡Π°ΡΡ‚ΡŒ. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ выполняСтся быстрСС, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с индСксом. Всё ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ поиск Π½Π° дискС, Π΄Π°ΠΆΠ΅ Ссли Π½Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ Π½Π΅ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ всС строки. β€’ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Ρƒ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ подсказку ΠΏΠΎ Π²Ρ‹Π±ΠΎΡ€Ρƒ ΠΈΠ»ΠΈ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ индСкса.
SELECT * FROM table1 USE INDEX (col1_index,col2_index)
  WHERE col1=1 AND col2=2 AND col3=3;

SELECT * FROM table1 IGNORE INDEX (col3_index)
  WHERE col1=1 AND col2=2 AND col3=3;

πŸ‘ Π‘Ρ‚Π°Π²ΡŒ 🍺 Ссли Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈ Ссли Ρ…ΠΎΡ‡Π΅ΡˆΡŒ Π΅Ρ‰Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΎΠΊ ΠΏΠΎ этой Ρ‚Π΅ΠΌΠ΅. #MySQL #junior #source

Π‘Π΅Ρ‚ΡŒ β€” Π½Π΅Π½Π°Π΄Ρ‘ΠΆΠ½Π° πŸ‘‰ Π”Π°Π²Π°ΠΉΡ‚Π΅ договоримся ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ "Π‘Π΅Ρ‚ΡŒ β€” Π½Π΅Π½Π°Π΄Ρ‘ΠΆΠ½Π°", ΠΏΡ€ΠΈΠΌΠ΅ΠΌ это ΠΊΠ°ΠΊ аксиому, ΠΊΠ°ΠΊ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΊΠ°ΠΊ Π³Ρ€Π°Π²ΠΈΡ‚Π°Ρ†ΠΈΡŽ. БСгодня, Π² эпоху (ΠΌΠΈΠΊΡ€ΠΎ)сСрвисов, ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ»-Π²Π° сторонних Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… ΠΏΠΎ API это ΠΎΡ‡Π΅Π½ΡŒ ваТная аксиома.
Π’ΠΎ врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ± этом ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΈ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ сСбС вопросы:

β€’ А Ρ‡Ρ‚ΠΎ Ссли я ΠΏΠΎΠ»ΡƒΡ‡Ρƒ HTTP timeout exception? β€’ Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли я пошлю ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Ρƒ ΠΎΡ‚Π²Π΅Ρ‚? β€’ ЯвляСтся Π»ΠΈ Π΄Π°Π½Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² ΠΈΠ΄Π΅ΠΌΠΏΠΎΡ‚Π΅Π½Ρ‚Π½Ρ‹ΠΌ? β€’ etc. Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ρ€Π°Π· Π²Ρ‹Π·ΠΎΠ² ΠΏΠΎ сСти ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Ρ„Π΅ΠΉΠ»ΠΈΡ‚ΡŒΡΡ? πŸ‘ ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ автоматичСский retry. Для этого ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ подходят систСмы управлСния очСрСдями. Π’Π°ΠΊΠΎΠ΅ взаимодСйствиС называСтся store and forward, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ информация ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ отправляСтся Π² ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ ΠΏΡƒΠ½ΠΊΡ‚ назначСния. Он Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ доставку, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сообщСния ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Ρ‚Π΅Ρ€ΡΡŽΡ‚ΡΡ. Если наш ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΡŒ находится offline ΠΈΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ Π»ΡŽΠ±Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ сСтСвыС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ β€” систСма ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ сообщСния. β—οΈΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ стоит ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎΠ± особСнностях Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°. Для ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ взаимодСйствиС пСрСстанСт Π±Ρ‹Ρ‚ΡŒ синхронным. Π‘ ΠΎΠ΄Π½ΠΎΠΉ стороны, Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΆΠ΄Π°Ρ‚ΡŒ, ΠΏΠΎΠΊΠ° выполнятся всС наши сСтСвыС Π²Ρ‹Π·ΠΎΠ²Ρ‹, Π½ΠΎ с Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ сразу вывСсти ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΎΡ‚ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ Request/Response ΠΊ Fire and Forget ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρƒ. πŸ”¨ ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ, Ρ€Π΅ΡˆΠ°Ρ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ инфраструктуры, асинхронный ΠΎΠ±ΠΌΠ΅Π½ сообщСниями Π²Ρ‹Π½ΡƒΠΆΠ΄Π°Π΅Ρ‚ нас ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ схСму прилоТСния, ΠΏΠ΅Ρ€Π΅ΠΎΡΠΌΡ‹ΡΠ»ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ написанию ΠΊΠΎΠ΄Π° ΠΈ ΠΎΡΠΌΡ‹ΡΠ»ΠΈΡ‚ΡŒ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π² нашСй систСмС. #middle #architecture #source

БСгодня ΡΠΏΠ΅ΡˆΡƒ вас ΠΏΠΎΡ€Π°Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ гостСвым постом (Π½Π΅ Ρ€Π΅ΠΊΠ»Π°ΠΌΠΎΠΉ). НадСюсь, Ρ‡Ρ‚ΠΎ этот экспСримСнт Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΌ ΠΈ врСмя ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ здСсь Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ интСрСсныС ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΠΎΡ‚ подписчиков. Unit testing (прСдисловиС, part - 0) ❗️ Основная Ρ†Π΅Π»ΡŒ ΡŽΠ½ΠΈΡ‚ тСстирования β€” обСспСчСниС ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ роста ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. НС быстрого, Π½Π΅ свСрхнадёТного, Π° ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ. Π’ Π½Π°Ρ‡Π°Π»Π΅ ΠΆΠΈΠ·Π½ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ. Π€ΠΈΡ‡ΠΈ пилятся, Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΈ интСгрируСтся Π² ΠΊΠΎΠ΄ быстро, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π΄ΠΎΠ²ΠΎΠ»ΡŒΠ½Ρ‹, бизнСс считаСт ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒ. Но со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ, ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° растСт, Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ Ρ„ΠΈΡ‡ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ всё большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π° Ρ€ΡƒΠΊΠΈ ΠΏΡ€ΠΈ Ρ€Π΅Π»ΠΈΠ·Π΅ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ Π΄Ρ€ΠΎΠΆΠ°Ρ‚ΡŒ. πŸ™ˆ Π§Π΅ΠΌ большС Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΊΠΎΠ΄Π°, Ρ‚Π΅ΠΌ сильнСС растСт Ρ‚Π°ΠΊ называСмая "программная энтропия" (Π½Π°ΡƒΡ‡Π½Ρ‹ΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΡ‡ΠΈΠΌ!) β€” ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ бСспорядка Π² систСмС. БоотвСтствСнно ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° ΠΏΠ°Π΄Π°Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ ΠΊΠ°ΠΊ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ‚Ρ€ΠΎΠ³Π°Π΅Ρ‚Π΅ ΠΊΠΎΠ΄, энтропия увСличиваСтся. Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ? Π•ΡΡ‚ΡŒ 2 Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°. πŸ‘‰ МоТно Π·Π°Π±ΠΈΡ‚ΡŒ Ссли это: 1. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΈΠ΄Π΅ΠΈ ΠΈΠ»ΠΈ MVP ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ слСплСн ΠΈΠ· Π²Π΅Ρ‚ΠΎΠΊ ΠΈ сами Π·Π½Π°Π΅Ρ‚Π΅ Ρ‡Π΅Π³ΠΎ. 2. Π‘Π°ΠΉΡ‚ Π»Π΅Π½Π΄ΠΈΠ½Π³ / Π²ΠΈΠ·ΠΈΡ‚ΠΊΠ° / ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π½Π΅ трСбуСтся Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ саппорт. 3. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сущСствуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρƒ вас Π½Π° ΠΊΠΎΠΌΠΏΠ΅ ΠΈ Π½Π΅ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½. πŸ‘‰ НуТно ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ссли: 1. ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΠΏΡ€ΠΎΡˆΠ΅Π» ΡΡ‚Π°Π΄ΠΈΡŽ MVP ΠΈ пСрСрос Π² бизнСс. 2. НуТСн Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ саппорт. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ Ρ‚ΡƒΡ‚ тСсты? Они ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Как? Об этом Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ постС. #intern #unit #testing #author

Как Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ UUID Π² MySQL? К соТалСнию Ρ€Π΅Π°Π»ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠ²Ρ‹, Ρ‡Ρ‚ΠΎ просто Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ "Π½ΠΈΠΊΠ°ΠΊ" Π½Π΅ получится, Ρ‚.ΠΊ. MySQL всё Π΅Ρ‰Π΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π»ΠΈΠ΄ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΏΠΎ использованию Π² Π²Π΅Π± Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, Π½Π΅ смотря Π½Π° всС Π΅Π³ΠΎ нСдостатки. πŸ™ˆ МногиС ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ UUID Π² CHAR(36) ΠΈ Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΏΠΎ этому ΠΏΠΎΠ²ΠΎΠ΄Ρƒ. Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ссли ΠΊΠΎΠ»-Π²ΠΎ записСй Π² вашСй Ρ‚Π°Π±Π»ΠΈΡ†Π΅ < 50ΠΊ, Ρ‚ΠΎ Π²Ρ‹ скорСС всСго Π½Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Но Ρ‡Ρ‚ΠΎ Ссли Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ† ΠΈΡ… большС ΠΏΠΎΠ»ΡƒΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°? Π₯Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ BINARY. πŸ”¨ Π‘Π»Π°Π³ΠΎ с Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ 8ΠΉ вСрсии MySQL Ρ‡Π°ΡΡ‚ΡŒ Ρ‚Π°Π½Ρ†Π΅Π² с Π±ΡƒΠ±Π½ΠΎΠΌ Π±Ρ‹Π»Π° пСрСнСсСна Π² ΠΊΠΎΡ€ΠΎΠ±ΠΊΡƒ ΠΈ UUID_TO_BIN / BIN_TO_UUID ΡƒΠΆΠ΅ Π΄Π΅Π»Π°ΡŽΡ‚ всё Π·Π° тСбя. Они производят сТатиС 32 символов (36 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ с раздСлитСлями) Π΄ΠΎ 16-Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π΄ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ снова ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ.
INSERT INTO t VALUES(UUID_TO_BIN(UUID()));
SELECT BIN_TO_UUID(id) FROM t;

πŸ‘ ΠœΡ‹ ΡƒΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ буст, ΠΈ ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎΠΉ, Ρ‚.ΠΊ. MySQL ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ индСксируСт BINARY, Π΄Π°ΠΆΠ΅ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½Ρ‹ΠΉ INT. И всё Π±Ρ‹ Π½ΠΈΡ‡Π΅Π³ΠΎ, Ссли Π±Ρ‹ Π½Π΅ кластСрный индСкс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρƒ PRIMARY KEY. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ для Π΅Π³ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΈ упорядочСнныС UUID Π² Π±Π°Π·Π΅. Но ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ? ❗️Для этого ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ UUID ΠΏΠ΅Ρ€Π²ΠΎΠΉ вСрсии, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ содСрТатся Π±ΠΈΡ‚Ρ‹ связанныС со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ. А Π²ΠΎ врСмя использования UUID_TO_BIN / BIN_TO_UUID ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‚ΠΎΡ€ΠΎΠΉ (Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ, логичСский) Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚:
INSERT INTO t VALUES (UUID_TO_BIN (UUID (), true));

ИмСнно ΠΎΠ½ пСрСупорядочит Π±ΠΈΡ‚Ρ‹, связанныС со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ, Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ сгСнСрированныС значСния Π±Ρ‹Π»ΠΈ упорядочСны ΠΈ Π² индСксС. πŸ“Š Ну ΠΈ самоС интСрСсноС β€” сравнСниС! πŸ“Œ Π’Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΌΠ°Π»ΠΎΠΌ ΠΊΠΎΠ»-Π²Π΅ записСй, наш ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ UUID Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ…, ΠΏΡ€ΠΈ этом ΠΏΡ€ΠΈ 500ΠΊ ΠΎΠ½ обгоняСт ΠΏΠΎ показатСлям INT. И здСсь Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ совсСм другая история, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊΠΎΠ»-Π²ΠΎ потрСбляСмой памяти для большого ΠΊΠΎΠ»-Π²Π° записСй :) БСзусловно, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ id β€” довольно ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ инструмСнт, Π½ΠΎ всСгда слСдуСт Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΡΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π² Π³ΠΎΠ»ΠΎΠ²Π΅, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ. #PHP #MySQL #middle #source

Как ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Value Objects (VO) Π² Doctrine? πŸ“Œ ΠŸΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π½Π° ΡƒΠΌ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ VO Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Π³Ρ€Π°Π½ΠΈΡ†Π°Ρ… (Π²Ρ…ΠΎΠ΄Π΅ ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π΅), Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ самой Entity ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ простыС Ρ‚ΠΈΠΏΡ‹. Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ странным, Π½ΠΎ Ссли ΠΏΡ€ΠΈΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒΡΡ β€” ΠΎΠ½ Π²ΠΏΠΎΠ»Π½Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ, вСдь для внСшнСго ΠΌΠΈΡ€Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ выглядит идСально. πŸ“Œ Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ‡ΡƒΡ‚ΡŒ слоТнСС - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ DBAL Types, для этого Ρ€ΡƒΠΊΠ°ΠΌΠΈ для Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ 2 ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:
convertToDatabaseValue($value, AbstractPlatform $platform)
convertToPHPValue($value, AbstractPlatform $platform)

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚, Ссли ваш VO Ρ…Ρ€Π°Π½ΠΈΡ‚ Π² сСбС ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² ΠΎΠ΄Π½Ρƒ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ. Но Ρ‡Ρ‚ΠΎ, Ссли ΠΈΡ… нСсколько? πŸ“Œ Embeddables Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, позволяСт Π²ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ класс, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒΡŽ, Π²Π½ΡƒΡ‚Ρ€ΡŒ сущности. ΠšΠ°ΠΆΠ΅Ρ‚ΡΡ ΠΎΠ½Π° просто ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для хранСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ! ❗️ ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, сущСствуСт Π΅Ρ‰Π΅ Ρ‚Π°ΠΊΠΎΠΉ способ, ΠΊΠ°ΠΊ сСриализация. Как ΠΈ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ с простыми Ρ‚ΠΈΠΏΠ°ΠΌΠΈ, ΠΏΠΎΠΊΠ° это Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ, это Π½Π΅ большая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° для всСй бизнСсовой Π»ΠΎΠ³ΠΈΠΊΠΈ. НСдостатком являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ эффСктивно Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ эти Π΄Π°Π½Π½Ρ‹Π΅. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ значСния Π² свою Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π½Π° 100% ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹, Ρ‡Ρ‚ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ запросы ΠΊ Π½ΠΈΠΌ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅. πŸ€¦β€β™€οΈ Π‘ ΠΎΠ΄Π½ΠΎΠΉ стороны послСдний ΠΌΠ΅Ρ‚ΠΎΠ΄ с использованиСм Embeddables выглядит ΠΎΡ‡Π΅Π½ΡŒ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΌ, с Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ…ΠΎΡ‚ΡŒ ΠΈ простой, Π½ΠΎ ΠΌΡ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ сущности добавляСм ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ лишь для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ state (Π½Π΅ ΠΊΡ€ΠΈΠΌΠΈΠ½Π°Π»ΡŒΠ½ΠΎ, Π½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ двоякиС чувства). ΠšΡ‚ΠΎ-Ρ‚ΠΎ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ скаТСт насчСт Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ Π² сущности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ "ΡΠΌΠ΅ΡˆΠΈΠ²Π°ΡŽΡ‚ слои" (хотя я ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ Ρ‚.ΠΊ. Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ это ΠΏΠΎ сути ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Ρ‚ΠΎ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ этого Π½Π΅ страдаСт), Ρ‡Ρ‚ΠΎ стоит Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ описаниС Π² XML ΠΈΠ»ΠΈ YAML. πŸ‘ Π­Ρ‚ΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ симбиоз Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ². Всё зависит ΠΎΡ‚ Π·Π°Π΄Π°Ρ‡ΠΈ, Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈ Π²Π°ΡˆΠΈΡ… договорСнностСй Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅. #PHP #middle #source

Когда слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ? Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ ΠΎ Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊ быстро ΠΏΡ€ΠΈΠ³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ, Π½ΠΎ стоит Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² ΠΊΠ°ΠΊΠΈΡ… ΠΈΠΌΠ΅Π½Π½ΠΎ случаях ΠΎΠ½Π° Π½ΡƒΠΆΠ½Π°. БСзусловно, ΠΈΡ… использованиС это ΠΊΡ€ΡƒΡ‚ΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, Π½ΠΎ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя это ΠΎΡ‚Π½ΠΈΠΌΠ°Π΅Ρ‚ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, вСдь Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ большС ΠΊΠΎΠ΄Π°, ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΡŒ Π΅Π³ΠΎ тСстами, Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ Π΅Π³ΠΎ ΠΎΡ‚Π»Π°Π΄ΠΊΠΎΠΉ ΠΈ Ρ‚.Π΄. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ стоит ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ баланс, вСдь часто использования простого массива с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ аннотациями Π²ΠΏΠΎΠ»Π½Π΅ достаточно для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ. Как ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ всё Ρ‚Π°ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ, Π° Π½Π΅ массив? πŸ“Œ Если Ρƒ вас Π΅ΡΡ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰Π°ΡΡΡ Π»ΠΎΠ³ΠΈΠΊΠ°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π°Ρ этот массив. НапримСр Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π² клиСнтском ΠΊΠΎΠ΄Π΅, Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… мСстах Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰Π°ΡΡΡ Π»ΠΎΠ³ΠΈΠΊΠ°, которая Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΠ΅Ρ‚/сокращаСт/Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΈ Ρ‚.Π΄. Π΄Π°Π½Π½Ρ‹Π΅ массива, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ вынСсти Π΅Ρ‘ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ класса ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. Плюс Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄Π°Π΅Ρ‚Π΅ осознанноС имя ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ прячСтС Π² ΠΌΠ΅Ρ‚ΠΎΠ΄, Ρ‡Ρ‚ΠΎ сильно ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°. πŸ“Œ Когда ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с массивом, ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ Π΅Π³ΠΎ, ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ с Π½ΠΈΠΌΠΈ Π΄Π΅Π»Π°Π΅Ρ‚, Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ становится сильно связанным с этим массивом ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² массивС Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ слСдуСт вынСсти наш массив Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ, Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ вычислСния Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ снизив ΡΠ²ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒ. #PHP #junior #source

Π“Π΄Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ID сущности (entity)? Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ опустим Ρ‡Π°ΡΡ‚ΡŒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ сравниваСм Π°Π²Ρ‚ΠΎΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈΠ· Π‘Π” ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ id (uuid) ΠΈ сразу ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊΠΎ Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ. Если останутся вопросы, Ρ‚ΠΎ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ пробСТимся ΠΈ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅ сравнСния. ΠœΡ‹ Π·Π½Π°Π΅ΠΌ 2 ΠΏΡ€Π°Π²ΠΈΠ»Π°: 1. Бущности (Entity) Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€. 2. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π²Π°Π»ΠΈΠ΄Π½Ρ‹ΠΌΠΈ. ❌ Π˜ΡΡ…ΠΎΠ΄Ρ ΠΈΠ· этого Π²Ρ€ΠΎΠ΄Π΅ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ uuid Π² конструктор. Но созданиС uuid основываСтся Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π΄Π°Ρ‚Π΅ / Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ Ρ€Π°Π½Π΅Π΅ сгСнСрированных случайных Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π·Π½Π°Ρ‡ΠΈΡ‚, Π½Π°ΠΌ Π½Π΅ стоит ΠΎΡ‚Π½ΠΎΡΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΊ ΡƒΡ€ΠΎΠ²Π½ΡŽ Π΄ΠΎΠΌΠ΅Π½Π°. Плюс ΠΊΠΎ всСму ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π½Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎ сСбС ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ своих Π³Ρ€Π°Π½ΠΈΡ†, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ id ΡƒΠ½ΠΈΠΊΠ°Π»Π΅Π½ (Π° это ΠΎΠ΄Π½Π° ΠΈΠ· распространСнных ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ). ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ этот процСсс Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π²Π½Π΅ сущности. ❌ ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ, выносим Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹, Π½Π° ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Application, выглядит Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ. Но Π΅ΡΡ‚ΡŒ ΠΎΡ‰ΡƒΡ‰Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ. Код Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ, ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ Π»Π΅ΠΆΠΈΡ‚ ΠΎΠ½ здСсь ΠΊΠ°ΠΊ-Ρ‚ΠΎ Π½Π΅Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ. πŸ“Œ Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Ρ€Π°Π·Π±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎ всСму ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ ΠΊΠΎΠ΄ самой Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ - Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ вынСсти Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ сущности. Π‘Ρ€Π°Π·Ρƒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ нСсколько прСимущСств: 1. ΠšΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ: Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ управляСт сущностями ΠΈ ΠΈΡ… id. 2. Π’ случаС нСобходимости - Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ‚.ΠΊ. ΠΊΠΎΠ΄ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС. 3. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π°ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½Ρ‹Π΅ id, Ссли Π‘Π” ΠΏΠΎΠ΄Π΄Ρ€Π΅ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (sequences, Π½Π°ΠΏΡ€. postgresql). 4. Всё Π½Π° своих мСстах, интСрфСйс ΠΈ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ Π² Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, uuid Π² инфраструктурС, ΠΊΠ°ΠΊ ΠΈ полагаСтся зависимым ΠΎΡ‚ Π΄Π°Ρ‚Ρ‹ / Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ случайных Π΄Π°Π½Π½Ρ‹Ρ… строкам. #php #middle #advice #source

ΠœΠ°ΡΡΠΈΠ²Ρ‹ (Ρ‡Π°ΡΡ‚ΡŒ 1, использованиС массивов ΠΊΠ°ΠΊ списков) Как Π±Ρ‹ ΠΌΡ‹ Π½Π΅ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, это ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ всСгда, Π΄Π° ΠΈ часто ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ²Π»ΡΡ‚ΡŒΡΡ ΠΎΠ²Π΅Ρ€ΠΈΠ½ΠΆΠ΅Π½ΠΈΡ€ΠΈΠ½Π³ΠΎΠΌ. На ΠΏΠΎΠΌΠΎΡ‰ΡŒ приходят Π»ΡŽΠ±ΠΈΠΌΡ‹Π΅ массивы. Π’ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΏΡ€ΠΈ использовании массивов Π² Π²ΠΈΠ΄Π΅ списков: ❗️ВсС элСмСнты массива Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° @var array <TypeOfElement>. Π­Ρ‚ΠΎ касаСтся ΠΊΠ°ΠΊ использования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ списков, Ρ‚Π°ΠΊ ΠΈ простых Ρ‚ΠΈΠΏΠΎΠ² (int, string ΠΈ Ρ‚.Π΄.). β—οΈΠ‘Ρ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ индСкс вашСго списка. НС стоит ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° индСксы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ автоматичСски Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ PHP ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. Π’Π°ΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ достаточно Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ массив ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ (foreach) ΠΈ Π΅Π³ΠΎ ΠΊΠΎΠ»-Π²ΠΎ элСмСнтов ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ (count()). Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΡ‚Π°Ρ€Π°Ρ‚ΡŒΡΡ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ конструкции for. ❗️ВмСсто удалСния элСмСнтов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€. Π­Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π²Ρ‹Ρ‚Π΅ΠΊΠ°Π΅Ρ‚ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнты ΠΈΠ· списка ΠΏΠΎ ΠΈΡ… индСксу (unset()), Π½ΠΎ вмСсто этого Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ array_filter() для создания Π½ΠΎΠ²ΠΎΠ³ΠΎ списка Π±Π΅Π· Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов. Π’Π°ΠΊΠΆΠ΅ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π»Π°Π³ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Π½ΡƒΡ‚Ρ€ΠΈ array_filter() Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с индСксами. Π­Ρ‚ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ Π»ΠΈΡˆΠ½ΠΈΡ… if, повысят Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ, Π° Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π΅Ρ‰Π΅ Π½Π°Π΄ΠΎ Ρ‚ΠΎ? :) #php #array #junior #source

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ способ Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ создаСтС ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ) Π² PHP, Ρ‚ΠΎ Π²ΠΎΡ‚ малСньк
ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ способ Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ создаСтС ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ) Π² PHP, Ρ‚ΠΎ Π²ΠΎΡ‚ малСнький Π»Π°ΠΉΡ„Ρ…Π°ΠΊ. ❗️ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ интСрфСйса Iterator (next(), current(), key() ΠΈ Ρ‚. Π΄.), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс IteratorAggregate с ΠΎΠ΄Π½ΠΈΠΌ СдинствСнным ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ getIterator(), Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ экзСмпляр ArrayIterator Π½Π° основС вашСго Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ массива. Π‘Π»ΠΎΠΆΠ½ΠΎ объяснил, Π½ΠΎ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ‰Π΅ ;) #PHP #junior #advice #source