π€― ΠΠ΅ΡΠ΅ΡΡΠ°Π½Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π² PHP!
Π€ΡΠ½ΠΊΡΠΈΠΈ??? ΠΠ°! Π’Π΅ ΡΠ°ΠΌΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠ³Π΄Π°-ΡΠΎ Π²ΡΠ΅ ΡΠΏΠΎΠΊΠΎΠΉΠ½ΠΎ ΡΠ·Π°Π»ΠΈ, Π½ΠΎ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·ΠΆΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΡ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ Π½Π΅ΠΉΠΌΠΈΠ½Π³ΠΎΠΌ Π²ΠΈΠ΄Π°
Π€ΡΠ½ΠΊΡΠΈΡ β ΡΡΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π½Π΅ code smell, Π° ΡΠ΄ΠΎΠ±Π½Π°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ ΡΡΠΎΠΈΡ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΠΈ Π½Π΅Π΄ΠΎΠΎΡΠ΅Π½ΠΈΠ²Π°ΡΡ. ΠΡΠ»ΠΈ ΡΡ ΡΡΠΈΡΠ°Π΅ΡΡ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, Ρ ΠΏΠΎΠΏΡΠΎΠ±ΡΡ ΡΠ΅Π±Ρ ΠΏΠ΅ΡΠ΅ΡΠ±Π΅Π΄ΠΈΡΡ!
Π‘Π½Π°ΡΠ°Π»Π° ΡΠ°Π·Π±Π΅ΡΡΠΌ Π΄Π²Π° ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΡ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΡ ΠΊ ΡΡΠ½ΠΊΡΠΈΡΠΌ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π² PHP Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΉ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½ Π°Π²ΡΠΎΠ»ΠΎΠ°Π΄ΠΈΠ½Π³. ΠΠ°, ΡΠ°ΠΉΠ»Ρ Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ Π½ΡΠΆΠ½ΠΎ ΡΠ²Π½ΠΎ ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°ΡΡ Π² autoload.files, ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ ΠΈΡΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ, ΡΡΠΎΡ ΠΎΠ²Π΅ΡΡ Π΅Π΄ ΠΏΡΠ΅Π½Π΅Π±ΡΠ΅ΠΆΠΈΠΌ Π² ΡΠ»ΡΡΠ°Π΅ "ΡΠΌΠΈΡΠ°ΡΡΠ΅Π³ΠΎ" PHP ΠΈ ΠΎΡΡΡΡΡΡΡΠ²ΡΠ΅Ρ Π²ΠΎΠΎΠ±ΡΠ΅, Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ preloading ΠΈΠ»ΠΈ PHP "Π½Π΅ ΡΠΌΠΈΡΠ°Π΅Ρ". ΠΠΎΡΡΠΎΠΌΡ ΡΡΡ Π² ΠΌΠΈΠ½ΡΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΎΠ·Π½Ρ Ρ
ΠΠΎ-Π²ΡΠΎΡΡΡ , ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅Π»ΡΠ·Ρ ΠΌΠΎΠΊΠ°ΡΡ. ΠΡΠΎ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎΠ΅ ΠΌΠΎΠΊΠΈΡΡΡΠΊΠΎΠ΅ Π·Π°ΡΠ²Π»Π΅Π½ΠΈΠ΅, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ²Π΅ΡΠΈΡΡ: "Π’Π°ΠΊ Π½Π΅ ΠΌΠΎΠΊΠ°ΠΉ!" ΠΈ ΠΏΠΎΡΠ»Π°ΡΡ ΠΊ Π€Π°ΡΠ»Π΅ΡΡ. Π€ΡΠ½ΠΊΡΠΈΡ β ΡΡΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, Π° Π½Π΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. "ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ" ΡΡΠ½ΠΊΡΠΈΠΈ
Π Π²ΠΎΡ ΠΏΠ»ΡΡΠΎΠ² Ρ Π½Π°ΡΡΠΈΡΠ°Π» ΠΊΡΠ΄Π° Π±ΠΎΠ»ΡΡΠ΅!
βΠ€ΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, Π½Π΅ ΡΡΠ΅Π±ΡΡΡΠΈΡ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ. Π‘ΠΎΠ³Π»Π°ΡΠΈΡΠ΅ΡΡ, ΠΊΠ»Π°ΡΡ Ρ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΌ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ Π±Π΅Π· ΡΠΎΡΡΠΎΡΠ½ΠΈΡ β ΡΡΠΎΠΊΠ°ΡΡΡΠ°Ρ ΠΊΠΎΡΡΡΠ»Ρ.
βΠΠ΅ΠΊΠ»Π°ΡΠ°ΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½Π΅Π΅ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ°.
βΠ ΠΎΠ΄ΠΈΠ½ ΡΠ°ΠΉΠ» ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΡΠΎ Π½Π΅ Π½Π°ΡΡΡΠ°Π΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΡ. ΠΡΠΈ ΡΡΠΎΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ.
βΠ’Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΊΠ»Π°ΡΡΡ, ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² Π½Π΅ΠΉΠΌΡΠΏΠ΅ΠΉΡΠ΅, Π½ΠΈΡΡΠΎ Π½Π΅ ΠΌΠ΅ΡΠ°Π΅Ρ Π²Π°ΠΌ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΡΠ²ΠΎΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ.
βΠ€ΡΠ½ΠΊΡΠΈΡ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½Π΅Π΅ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π² Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅:
ΠΡΠΈΡΠ΅ΡΠΈΠΈ Ρ ΠΎΡΠΎΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΡ ΡΠ΅ ΠΆΠ΅: Π½ΠΈΠ·ΠΊΠ°Ρ ΡΠΈΠΊΠ»ΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ, Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², SRP. ΠΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ "ΡΠ°Π·Π΄ΡΠ»ΠΎ", ΡΠΎ Π»ΠΈΠ±ΠΎ Π΅Ρ Π½Π°Π΄ΠΎ ΡΠ°Π·Π±ΠΈΡΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, Π»ΠΈΠ±ΠΎ Π·Π°Π΄Π°ΡΡ Π²ΡΡ-ΡΠ°ΠΊΠΈ Π½Π°Π΄ΠΎ ΡΠ΅ΡΠ°ΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠΎΠ².
ΠΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ· Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°: https://gist.github.com/vudaltsov/eb53927894cb467588e67352e2d8f1d9.
Π Π½Π°ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠΊ ΡΡΠ°ΡΡΡ ΠΠΈΠΊΠΈΡΡ ΠΠΎΠΏΠΎΠ²Π°, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ Π½Π°Π·Π°Π΄ ΠΌΠΎΠ³Π»Π° ΠΌΠ½Π΅ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΠΊ ΡΡΠ½ΠΊΡΠΈΡΠΌ: https://www.npopov.com/2012/08/10/Are-PHP-developers-functophobic.html.
ΠΠΈΡΠΈ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡ Π»ΠΈ ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ Π½Π΅Ρ ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ.
Π€ΡΠ½ΠΊΡΠΈΠΈ??? ΠΠ°! Π’Π΅ ΡΠ°ΠΌΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠ³Π΄Π°-ΡΠΎ Π²ΡΠ΅ ΡΠΏΠΎΠΊΠΎΠΉΠ½ΠΎ ΡΠ·Π°Π»ΠΈ, Π½ΠΎ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·ΠΆΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΡ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ Π½Π΅ΠΉΠΌΠΈΠ½Π³ΠΎΠΌ Π²ΠΈΠ΄Π°
Utils
, *Helper
ΠΈ Ρ.Π΄. Π€ΡΠ½ΠΊΡΠΈΡ β ΡΡΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π½Π΅ code smell, Π° ΡΠ΄ΠΎΠ±Π½Π°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ ΡΡΠΎΠΈΡ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΠΈ Π½Π΅Π΄ΠΎΠΎΡΠ΅Π½ΠΈΠ²Π°ΡΡ. ΠΡΠ»ΠΈ ΡΡ ΡΡΠΈΡΠ°Π΅ΡΡ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, Ρ ΠΏΠΎΠΏΡΠΎΠ±ΡΡ ΡΠ΅Π±Ρ ΠΏΠ΅ΡΠ΅ΡΠ±Π΅Π΄ΠΈΡΡ!
Π‘Π½Π°ΡΠ°Π»Π° ΡΠ°Π·Π±Π΅ΡΡΠΌ Π΄Π²Π° ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΡ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΡ ΠΊ ΡΡΠ½ΠΊΡΠΈΡΠΌ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π² PHP Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΉ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½ Π°Π²ΡΠΎΠ»ΠΎΠ°Π΄ΠΈΠ½Π³. ΠΠ°, ΡΠ°ΠΉΠ»Ρ Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ Π½ΡΠΆΠ½ΠΎ ΡΠ²Π½ΠΎ ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°ΡΡ Π² autoload.files, ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ ΠΈΡΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ, ΡΡΠΎΡ ΠΎΠ²Π΅ΡΡ Π΅Π΄ ΠΏΡΠ΅Π½Π΅Π±ΡΠ΅ΠΆΠΈΠΌ Π² ΡΠ»ΡΡΠ°Π΅ "ΡΠΌΠΈΡΠ°ΡΡΠ΅Π³ΠΎ" PHP ΠΈ ΠΎΡΡΡΡΡΡΡΠ²ΡΠ΅Ρ Π²ΠΎΠΎΠ±ΡΠ΅, Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ preloading ΠΈΠ»ΠΈ PHP "Π½Π΅ ΡΠΌΠΈΡΠ°Π΅Ρ". ΠΠΎΡΡΠΎΠΌΡ ΡΡΡ Π² ΠΌΠΈΠ½ΡΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΎΠ·Π½Ρ Ρ
composer.json
.ΠΠΎ-Π²ΡΠΎΡΡΡ , ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅Π»ΡΠ·Ρ ΠΌΠΎΠΊΠ°ΡΡ. ΠΡΠΎ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎΠ΅ ΠΌΠΎΠΊΠΈΡΡΡΠΊΠΎΠ΅ Π·Π°ΡΠ²Π»Π΅Π½ΠΈΠ΅, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ²Π΅ΡΠΈΡΡ: "Π’Π°ΠΊ Π½Π΅ ΠΌΠΎΠΊΠ°ΠΉ!" ΠΈ ΠΏΠΎΡΠ»Π°ΡΡ ΠΊ Π€Π°ΡΠ»Π΅ΡΡ. Π€ΡΠ½ΠΊΡΠΈΡ β ΡΡΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, Π° Π½Π΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. "ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ" ΡΡΠ½ΠΊΡΠΈΠΈ
time
β ΡΡΠΎ callΠ°ble
Π² PHP ΠΈ callable(): int
Π² Psalm/PHPStan. Π§ΡΠΎΠ±Ρ Π·Π°Π°Π±ΡΡΡΠ°Π³ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, Π΅Ρ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΊΠ°ΠΊ callable ΠΈΠ½ΡΠ΅ΠΊΡΠΈΡ ΠΈΠ»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ (ΡΠΌ. ΠΏΠΎΡΡ #133), ΠΈ ΡΠΎΠ³Π΄Π° Π² ΡΠ΅ΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π²ΡΡ ΡΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ. ΠΡΠ»ΠΈ ΠΆΠ΅ ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΏΡΠΎ "Π·Π°Ρ
Π°ΡΠ΄ΠΊΠΎΠΆΠ΅Π½Π½ΠΎΠ΅" ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠΎ, Π΅ΡΠ»ΠΈ ΠΎΠ½Π° Π½Π΅ Π±Π΅ΡΡΡ Π½Π° ΡΠ΅Π±Ρ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ Π΄ΠΎΠ»ΠΆΠ½Π°, ΡΡΠΎ Π½Π΅ ΡΠΎΡΡΠ°Π²ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΠΈΠΊΡΠΎ ΠΆΠ΅ Π½Π΅ Π±ΠΎΠΈΡΡΡ Π² ΠΊΠΎΠ΄Π΅ "Ρ
Π°ΡΠ΄ΠΊΠΎΠ΄ΠΈΡΡ" array_map
ΠΈΠ»ΠΈ trim
. ΠΠ»Π°Π²Π½ΠΎΠ΅, ΡΡΠΎΠ±Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°ΠΌΠΈ Π±ΡΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½Ρ.Π Π²ΠΎΡ ΠΏΠ»ΡΡΠΎΠ² Ρ Π½Π°ΡΡΠΈΡΠ°Π» ΠΊΡΠ΄Π° Π±ΠΎΠ»ΡΡΠ΅!
βΠ€ΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, Π½Π΅ ΡΡΠ΅Π±ΡΡΡΠΈΡ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ. Π‘ΠΎΠ³Π»Π°ΡΠΈΡΠ΅ΡΡ, ΠΊΠ»Π°ΡΡ Ρ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΌ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ Π±Π΅Π· ΡΠΎΡΡΠΎΡΠ½ΠΈΡ β ΡΡΠΎ
βΠΠ΅ΠΊΠ»Π°ΡΠ°ΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½Π΅Π΅ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ°.
βΠ ΠΎΠ΄ΠΈΠ½ ΡΠ°ΠΉΠ» ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΡΠΎ Π½Π΅ Π½Π°ΡΡΡΠ°Π΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΡ. ΠΡΠΈ ΡΡΠΎΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ.
βΠ’Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΊΠ»Π°ΡΡΡ, ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² Π½Π΅ΠΉΠΌΡΠΏΠ΅ΠΉΡΠ΅, Π½ΠΈΡΡΠΎ Π½Π΅ ΠΌΠ΅ΡΠ°Π΅Ρ Π²Π°ΠΌ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΡΠ²ΠΎΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ.
βΠ€ΡΠ½ΠΊΡΠΈΡ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½Π΅Π΅ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π² Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅:
myFunction()
vs MyClass::myMethod()
.ΠΡΠΈΡΠ΅ΡΠΈΠΈ Ρ ΠΎΡΠΎΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΡ ΡΠ΅ ΠΆΠ΅: Π½ΠΈΠ·ΠΊΠ°Ρ ΡΠΈΠΊΠ»ΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ, Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², SRP. ΠΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ "ΡΠ°Π·Π΄ΡΠ»ΠΎ", ΡΠΎ Π»ΠΈΠ±ΠΎ Π΅Ρ Π½Π°Π΄ΠΎ ΡΠ°Π·Π±ΠΈΡΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, Π»ΠΈΠ±ΠΎ Π·Π°Π΄Π°ΡΡ Π²ΡΡ-ΡΠ°ΠΊΠΈ Π½Π°Π΄ΠΎ ΡΠ΅ΡΠ°ΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠΎΠ².
ΠΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ· Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°: https://gist.github.com/vudaltsov/eb53927894cb467588e67352e2d8f1d9.
Π Π½Π°ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠΊ ΡΡΠ°ΡΡΡ ΠΠΈΠΊΠΈΡΡ ΠΠΎΠΏΠΎΠ²Π°, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ Π½Π°Π·Π°Π΄ ΠΌΠΎΠ³Π»Π° ΠΌΠ½Π΅ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΠΊ ΡΡΠ½ΠΊΡΠΈΡΠΌ: https://www.npopov.com/2012/08/10/Are-PHP-developers-functophobic.html.
ΠΠΈΡΠΈ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡ Π»ΠΈ ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ Π½Π΅Ρ ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ.