ΠΊΠ°ΠΊ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ php
2. ΠΠ°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ΅ΡΡΠΎΠ² Π½Π° PHPUnit
ΠΡΠΈΠΌΠ΅Ρ 2.1 ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°ΡΡ ΡΠ΅ΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ PHPUnit, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ PHP. Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ ΠΈ ΡΠ°Π³ΠΈ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ΅ΡΡΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ PHPUnit:
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @test Π² Π΄ΠΎΠΊΠ±Π»ΠΎΠΊΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π°, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΌΠ΅ΡΠΈΡΡ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ½ΡΡΡΠΈ ΡΠ΅ΡΡΠΎΠ²ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΎΠ³ΠΎ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π»ΠΈ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ-ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ assertSame() (ΡΠΌ. Π£ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ).
ΠΠ°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΠ΅ΡΡΠΎΠ²
ΠΠ΄ΡΠΈΠ°Π½ ΠΡΠ½ (Adrian Kuhn) ΠΈ Π΄ΡΡΠ³ΠΈΠ΅:
ΠΠΎΠ΄ΡΠ»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡ Π³Π»Π°Π²Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΠΈΡΡΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Ρ ΠΎΡΠΎΡΠ΅ΠΉ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ, ΠΏΠΎΠΌΠΎΠ³Π°ΡΡΠ΅ΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π²ΡΡΠ²Π»ΡΡΡ ΠΈ ΠΈΡΠΏΡΠ°Π²Π»ΡΡΡ Π±Π°Π³ΠΈ, ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³ ΠΊΠΎΠ΄Π° ΠΈ ΡΠ»ΡΠΆΠΈΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ (ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ). ΠΠ»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΡΡΠΈΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡ Π² ΠΈΠ΄Π΅Π°Π»Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΡ Π²Π°ΡΡΠ²Π°ΡΡ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΏΡΡΠΈ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ΄ΠΈΠ½ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠΉ ΡΠ΅ΡΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΠΎΠΊΡΡΠ²Π°Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΏΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π΅. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ΅ΡΡΠΎΠ²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΌΠΈ. Π§Π°ΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π½Π΅ΡΠ²Π½ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΡΠΎΠ²ΡΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ, ΡΠΊΡΡΡΡΠ΅ Π² ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ΡΡΠ°.
PHPUnit ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠ²Π½ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΡΠΎΠ²ΡΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ. ΠΡΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠ΅ΡΡΠΎΠ²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, Π½ΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ (Π΄Π°Π½Π½ΡΠ΅) ΡΠΈΠΊΡΡΡΡΡ ΡΠ΅ΡΡΠ°, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠΎΠΌ (producer) Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΅Π³ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΡΠΌ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΌ (consumers).
ΠΡΠΈΠΌΠ΅Ρ 2.2 ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @depends Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΡΠΎΠ²ΡΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ.
ΠΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΡ Π΄Π°Π½Π½ΡΡ
ΠΠ΅ΡΠΎΠ΄ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ° Π΄Π°Π½Π½ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ ΠΊΠ°ΠΊ public ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π»ΠΈΠ±ΠΎ ΠΌΠ°ΡΡΠΈΠ² ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Iterator ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ. ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°, ΡΠ²Π»ΡΡΡΠ΅Π³ΠΎΡΡ ΡΠ°ΡΡΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ, Π±ΡΠ΄Π΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΅Π³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π½Π°Π±ΠΎΡΠΎΠ² Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ ΡΡΡΠΎΠΊΠΎΠ²ΡΠΉ ΠΊΠ»ΡΡ, Π²ΠΌΠ΅ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΡΠ²ΠΎΠ΄ ΡΡΠ°Π½Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠΌ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΈΠΌΡ Π½Π°Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ , Π½Π΅ ΠΏΡΠΎΡΠ΅Π΄ΡΠΈΠΉ ΡΠ΅ΡΡ.
ΠΠ°ΠΊ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ PHP Ρ ΠΏΠΎΠΌΠΎΡΡΡ PHPUnit
Π ΡΡΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ ΠΌΡ Π²Π΅ΡΠ½Π΅ΠΌΡΡ ΠΊ PHP ΠΈ Π½Π° ΡΡΠΎΡ ΡΠ°Π· ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡ. ΠΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½ΡΠ΅ ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΠ΄Π²Π΅ΡΠΆΠ΅Π½Π½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ 💪.
ΠΠΎ ΠΏΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΈ Π΄Π»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎβ¦.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡ?
Π ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΡΠΎ ΡΠΊΡΠΈΠΏΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π±Π»ΠΎΠΊΠΎΠ² ΠΊΠΎΠ΄Π°. Π’Π΅ΡΡ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· Π½Π΅Π³ΠΎ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Π²ΡΠ΅ Ρ ΠΎΡΠΎΡΠΎ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π΅Π³ΠΎ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½.
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΡΠΎΠ΅ΠΊΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° Π²ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π³Π»ΡΠ΄Π½ΠΎ.
Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΡΡΡΡΠΊΡΡΡΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°. Π‘Π½Π°ΡΠ°Π»Π° ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π΄Π²Π΅ ΠΏΠ°ΠΏΠΊΠΈ Π² ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, ΠΎΠ΄Π½Ρ Π½Π°Π·ΠΎΠ²Π΅ΠΌ app, Π° Π΄ΡΡΠ³ΡΡ β tests. ΠΠ°Π»Π΅Π΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ°ΠΉΠ» composer.json ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ:
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ composer dump Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ autoload:
ΠΠ°Π»Π΅Π΅ ΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ PHPUnit. ΠΡΠΎ Π±ΡΠ΄Π΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½Π°ΡΠΈΡ ΡΠ΅ΡΡΠΎΠ².
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ» Π΄Π»Ρ PHPUnit. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ Π² ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ°ΠΉΠ» phpunit.xml, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ Π² Π°ΡΡΠΈΠ±ΡΡΠ΅ bootstrap ΡΠ°ΠΉΠ» Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΊΠ»Π°ΡΡΠ°, Π° Π² testsuite β ΠΊΠ°ΡΠ°Π»ΠΎΠ³, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΡΠ΅ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π±ΡΠ΄Π΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ tests.
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΊΠ»Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΠ΄ΠΎΠΏΡΡΠ½ΠΎΠ³ΠΎ ΠΊΡΠΎΠ»ΠΈΠΊΠ° Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π½Π°ΡΠΈΡ ΡΠ΅ΡΡΠΎΠ². ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π²Π½ΡΡΡΠΈ Π½Π΅Π³ΠΎ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠ°ΠΏΠΊΡ Classes. ΠΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ ΠΌΡ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΊ Π½Π΅ΠΉ ΠΈ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ°ΠΉΠ» Calc.php, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
ΠΠ°ΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ, ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΊΠΎΠ΄. Π Π½Π΅ΠΌ ΠΏΡΠΎΡΡΠΎ Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±Π΅ΡΠ΅Ρ Π΄Π²Π° ΡΠΈΡΠ»Π° ΠΈ Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ ΡΡΠΌΠΌΡ.
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ, ΠΏΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠΎΠ·Π΄Π°ΡΡ Π½Π°Ρ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ΅ΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ Π² ΠΏΠ°ΠΏΠΊΡ tests ΠΈ Π² Π½Π΅ΠΉ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ°ΠΉΠ» CalcTest.php. ΠΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΠΈΠΌΠ΅Π»ΠΎ ΡΠΎΡΠΌΠ°Ρ CamelCase ΠΈ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π»ΠΎΡΡ Test.php. ΠΡΠΎ ΡΠΏΠΎΡΠΎΠ±, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ PHPUnit Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ ΡΠ΅ΡΡ, Π° ΠΊΠΎΠ³Π΄Π° Π½Π΅Ρ. ΠΡΠ»ΠΈ ΠΎΠ½ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ°, ΡΠ΅ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ Π½Π΅ Π±ΡΠ΄Π΅Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅ ΠΎΠ± ΡΡΠΎΠΉ Π΄Π΅ΡΠ°Π»ΠΈ.
ΠΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»Π° ΠΌΡ ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
ΠΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»Π° ΠΌΡ ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
ΠΠ°ΠΊ Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΏΠ΅ΡΠ²ΠΎΠ΅, ΡΡΠΎ ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ, ΡΡΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ PHPUnit ΠΈ Π½Π°Ρ ΠΊΠ»Π°ΡΡ Calc.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠ°Π³ΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π½Π°Ρ ΡΠ°ΠΉΠ», ΠΈ ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΈΡΡΡΡ ΠΊΠ»Π°ΡΡ TestCase. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ PHPUnit Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½Π°ΡΠΈΡ ΡΠ΅ΡΡΠΎΠ².
ΠΠ½ΡΡΡΠΈ ΠΊΠ»Π°ΡΡΠ° ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½Π°ΡΠΈ ΡΠ΅ΡΡΡ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ test_sum. ΠΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π·Π°ΠΏΡΡΡΠΈΡΡ, Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ ΠΈΠΌΠ΅Π½ΠΈ test_ ΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠΎΡΠΌΠ°Ρ Π½Π°Π·Π²Π°Π½ΠΈΡ snake_case, ΠΈΠ½Π°ΡΠ΅ PHPUnit ΠΏΡΠΎΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅Ρ ΠΈΡ ΠΈ ΠΎΠ½ΠΈ Π½Π΅ Π±ΡΠ΄ΡΡ Π·Π°ΠΏΡΡΠ΅Π½Ρ. Π’Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ΅ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ°ΠΌΠΎΠ΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠΌ ΠΈ Π½Π΅ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΡΠ΅ΡΡΠΎΠ², ΡΡΠΎΠ±Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ.
ΠΠ½ΡΡΡΠΈ test_sum ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° Calc ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ sum, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ. ΠΠ»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ΅ΡΡΠ° ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ assertEquals, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° TestCase ΠΈ Π² ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ βΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΠ°Π²Π½Ρ Π»ΠΈ ΠΎΠ½ΠΈβ. Π ΡΡΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ, Π° Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ β ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ, ΡΡΠΎ Π²ΡΠ΅ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
Π‘Π΅ΠΉΡΠ°Ρ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π½Π°Ρ ΡΠ΅ΡΡ, ΠΏΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π΅Π³ΠΎ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ Π² Π½Π°Ρ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
ΠΡΠ»ΠΈ Π²ΡΠ΅ ΠΏΡΠΎΡΠ»ΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎ, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π²ΡΠ΅ Π½Π°ΡΠΈ ΡΠ΅ΡΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΏΡΠΎΠΉΠ΄Π΅Π½Ρ.
ΠΡΠΎΠΌΠ΅ assertEquals, Ρ Π½Π°Ρ Π΅ΡΡΡ Π΅ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠΎΠ² ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠΉ, ΠΊΠ°ΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ Π² ΡΡΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ, ΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π»ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ AssertIsInt:
setUp() ΠΈ tearDown()
ΠΠ½ΠΎΠ³Π΄Π° Π±ΡΠ²Π°Π΅Ρ ΡΠ°ΠΊ, ΡΡΠΎ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ΅ΡΡΠ°Ρ ΠΌΡ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΠΌ ΠΊΠΎΠ΄ ΠΈ Π² Π½Π°ΡΠ°Π»Π΅, ΠΈ Π² ΠΊΠΎΠ½ΡΠ΅, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Ρ Π½Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠ΅Π³ΠΎΡΡ ΠΊΠΎΠ΄Π°. ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ setUp ΠΈ tearDown. ΠΠ΅ΡΠΎΠ΄ setUp Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠ°, Π° ΠΌΠ΅ΡΠΎΠ΄ tearDown Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π°ΡΠΈΡ ΡΠ΅ΡΡΠΎΠ² Π·Π°Π²Π΅ΡΡΠΈΡΡΡ.
Π§ΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΈΡ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ, Π²Π΅ΡΠ½Π΅ΠΌΡΡ ΠΊ ΠΊΠ»Π°ΡΡΡ Calc ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½ΠΎΠ²ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΠ½ Π²ΡΠ³Π»ΡΠ΄Π΅Π» ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΠ°ΡΠ΅ΠΌ ΠΌΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΊ Π½Π°ΡΠ΅ΠΌΡ ΡΠ΅ΡΡΡ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ Π΅Π³ΠΎ, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠ΅ΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΊΠ°ΠΊ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ setUp():
ΠΠ°ΠΊ Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ setUp, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ΅ΡΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π½Π°ΡΠΈ ΡΠ΅ΡΡΡ Π±ΡΠ΄ΡΡ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠΈΡΠ΅ ΠΈ ΠΏΠΎΠ½ΡΡΠ½Π΅Π΅.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ΄Π΅Ρ ΡΠ΅ΡΡΠΎΠ² Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΡ Π²ΡΠ΅Π³Π΄Π° Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π½Π°ΠΌ Π±ΡΠ΄Π΅Ρ Π»Π΅Π³ΡΠ΅ Π·Π°ΡΠΈΡΠΈΡΡ Π½Π°Ρ ΠΊΠΎΠ΄ ΠΎΡ ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ Π²Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ ΠΏΡΠΈ Π»ΡΠ±ΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ.
ΠΠΎΡ ΠΎΠΆΠΈΠ΅ Π·Π°ΠΏΠΈΡΠΈ
Π€ΡΠ½ΠΊΡΠΈΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π° ΡΠ°ΠΉΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ°ΠΌΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π² ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅. ΠΠ±ΡΡΠ½ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎβ¦
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΎ Python ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠ΅Π΅ ΠΎΠ±ΡΠ΅Π΅ ΠΊΡΠ°ΡΠ½ΠΎΠ΅ (ΠΠΠ) Π΄Π²ΡΡ ΡΠΈΡΠ΅Π».β¦
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ» Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python, Π½ΠΎ Π²Ρ Π½Π΅ Π·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ,β¦
8 Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ PHP
ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π΅Π³ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ (Π΅ΡΠ»ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ TDD). ΠΠ΄Π½Π°ΠΊΠΎ, ΡΡΡΠ΄Π½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠ±ΠΎΡ ΡΡΠ΅Π΄ΠΈ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΈΡΠΎΠΊΠΎΠ³ΠΎ ΠΊΡΡΠ³Π° PHP ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΡΠ° ΡΡΠ°ΡΡΡ ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π° ΡΠ°ΠΌΡΠΌ ΡΠΈΡΠΎΠΊΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π Π½Π΅ΠΉ ΡΠΎΠ±ΡΠ°Π½Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ QA ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π² 2017 Π³ΠΎΠ΄Ρ.
PHPUnit
Cucumber
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ· Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΎΡΠΎΡΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°.
Π’Π΅ΠΌΠ° ΡΠ²ΡΠ·Π°Π½Π° ΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΡΡΡΠΌΠΈ:
Atoum
Atoum β Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ PHP. ΠΡΠΎ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ΅ΡΠ΅Π· GitHub, Composer ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» PHAR.
Π’Π΅ΡΡΡ Atoum ΠΎΡΠ΅Π½Ρ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½Ρ, ΠΈΠΌΠ΅ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈ Π²Π·Π°ΠΈΠΌΠΎΡΠ²ΡΠ·ΠΈ.
Selenium
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Selenium Ρ PHPUnit, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅.
ΠΠΎΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
Dusk
Dusk ΠΈΠ· Laravel β Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠ°. ΠΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΠΎ (Ρ chromedriver) ΠΈΠ»ΠΈ Ρ Selenium. ΠΠ½ ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠΎΡΡΠΎΠΉ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ API ΠΈ ΠΎΡ Π²Π°ΡΡΠ²Π°Π΅Ρ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ², ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΡΡΡΡ ΠΈ Ρ.Π΄. ΠΠΎΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
Kahlan
Kahlan β ΡΡΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½Π°Ρ ΡΡΠ΅Π΄Π° ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Unit & BDD, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ.
ΠΠ· ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΎΠ½ ΠΏΠΎΡ ΠΎΠΆ Π½Π° ΡΠ΅ΡΡΡ Behat. Kahlan ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Stub-ΠΈΠ½Π³ ΠΈ Mock-ΠΈΠ½Π³ (stubbing and mocking out of the box) Π±Π΅Π· Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΠΏΠΎΠΊΡΡΡΠΈΡ ΠΊΠΎΠ΄Π°, ΠΎΡΡΠ΅ΡΠ½ΠΎΡΡΠΈ ΠΈ Ρ.Π΄.
ΠΠΈΠ΄Π΅ΠΎ ΠΊΡΡΡΡ ΠΏΠΎ ΡΡ ΠΎΠΆΠ΅ΠΉ ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ΅:
ΠΠ΅Π± ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° PHP Symfony
php_testability
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΠ°ΠΊΠ΅Ρ, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ ΡΠΏΠΎΠΌΡΠ½Π΅ΠΌ Π·Π΄Π΅ΡΡ β PHP Testability. ΠΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°Ρ Ρ ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΡΡ Π² Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠΉ ΠΎΡΡΠ΅Ρ.
ΠΠ°ΠΊΠ΅Ρ Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΈΠ·Π°, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ, Π½ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΅Π³ΠΎ ΡΠ΅ΡΠ΅Π· Composer:
ΠΠ°ΡΠ΅ΠΌ Π·Π°ΠΏΡΡΡΠΈΡΡ Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
Π‘Π΅ΡΠ²ΠΈΡΡ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠΉ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ (CI)
ΠΠ°ΠΆΠ½Π°Ρ ΡΠ°ΡΡΡ Π² ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ β ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΊΠΎΠ΄ Π΄ΠΎ Π΅Π³ΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ²/ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² CI ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π½Π° ΡΠ°Π·Π½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ , ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Π²Π°Ρ ΠΊΠΎΠ΄ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ΅Π½ Π΄Π»Ρ ΡΠ»ΠΈΡΠ½ΠΈΡ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΡΠ΅Π½Ρ, Π½ΠΎ Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ:
β’ PHPCI: (Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ)
β’ TravisCI: (Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ)
β’ SemaphoreCI: (Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ)
ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΡΠ΅ Π²Π΅Π±ΠΈΠ½Π°ΡΡ ΠΏΠΎ ΡΡ ΠΎΠΆΠ΅ΠΉ ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ΅:
ΠΠ°ΡΡΠΈΠ½Π³ ΡΠ°ΠΉΡΠΎΠ² Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ PHP
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ web-ΡΠ°ΠΉΡΠ° Ρ Π³Π΅ΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΉ
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π° Π±Π»ΠΎΠ³Π° Π½Π° Symfony 4
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΠΈΠ½ΡΡΡ ΠΊΡΠ»ΡΡΡΡΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΡΠ»ΠΎΠΆΠ½ΠΎ, Π½ΠΎ ΠΎΠ½Π° ΠΏΠΎΠ½Π΅ΠΌΠ½ΠΎΠ³Ρ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΎΠΉ. ΠΡΠ»ΠΈ Π²Ρ Π·Π°Π±ΠΎΡΠΈΡΠ΅ΡΡ ΠΎ ΡΠ²ΠΎΠ΅ΠΌ ΠΊΠΎΠ΄Π΅, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ! ΠΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΈ ΡΠ΅ΡΡΡΡΡ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ ΠΈ Π½Π°ΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ.
ΠΠ°ΠΊ ΠΏΠΈΡΠ°ΡΡ Π»Π΅Π³ΠΊΠΎ ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠΉ ΠΊΠΎΠ΄ Π½Π° PHP
Π Π°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½ΠΎ Π·Π°ΡΠ°ΡΡΡΡ ΠΎΠ½ΠΈ ΡΠΏΠΎΡΠΎΠ±ΡΡΠ²ΡΡΡ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΡ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π΄ΠΎΠ»Π³Π° ΡΠ°ΠΊΠΆΠ΅ Π±ΡΡΡΡΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ.
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π΄ΠΎΠ»Π³ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π³Π»Π°Π²Π½ΠΎΠΉ ΡΠ΅Π»ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°. ΠΡΠ΄ΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π° ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π·Π°ΡΡΡΠ΄Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ Π² ΡΠ²ΡΠ·ΠΈ Ρ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠΌ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠΌ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ Π½Π΅ΠΏΡΠΎΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΠΎΠΉ.
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π²Π°Ρ ΠΊΠΎΠ΄ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π΄ΠΎΡΡΠΈΡΡ ΠΏΡΠΎΡΡΠΎΡΡ ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΠΈ ΠΈ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡ β ΠΈ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ Π²Π°ΡΠ΅ Π²ΡΠ΅ΠΌΡ.
ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΠ½Π΅ΠΌ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΄ΡΠΌΠ°Π½Π½ΠΎΠ³ΠΎ, Π½ΠΎ ΡΠΈΠΏΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΊΠ»Π°ΡΡ Π² Π»ΡΠ±ΠΎΠΌ Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ΅:
ΠΡΠΎΡ ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Π½ΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠΉ:
1. ΠΡΠΎΡ ΠΊΠΎΠ΄ Π½Π΅ ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌΡΠΉ.
2. ΠΠ°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π½Π΅ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠΉ, ΠΊΠ°ΠΊΠΈΠΌ Π±Ρ ΠΌΠΎΠ³ Π±ΡΡΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΌΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π΄Π°Π½Π½ΡΡ , Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΊΠΎΠ΄ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ App::db Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΠΊΠ°ΠΊ Π±ΡΡΡ Π² ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅?
ΠΡΠ΅Π΄ΠΏΡΠΈΠ½ΡΡΡΠΉ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠΉ ΡΠ΅ΡΡ
ΠΠ΄Π΅ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° ΠΏΠΎΠΏΡΡΠΊΠ° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠ° Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π°, ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ΅:
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΡΡΠΎΡ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠΉ ΡΠ΅ΡΡ ΡΠ°Π±ΠΎΡΠ°Π», Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
Π§ΡΠΎ ΠΆ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΡΠΎΠΌΡ, ΠΊΠ°ΠΊ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»ΡΡΡΠΈΡΡ.
ΠΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° Β«ΠΠ΅ ΠΏΠΎΠ²ΡΠΎΡΡΠΉΡΡΒ»
ΠΡΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌ Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π²Π½Π΅Π΄ΡΡΡΡ Π΄Π°Π½Π½ΡΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» Π² Π½Π°ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ. ΠΠΎΠ΄ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠΌ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΏΠ΅ΡΠ΅ΡΡΠ°Π΅Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ Π΅Π΄ΠΈΠ½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ΅ΡΡΠΈΠΈ).
ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ Π²ΡΠ΅ Π΅ΡΠ΅ Π½Π΅ ΡΠ°ΠΊΠΎΠΉ Π»Π΅Π³ΠΊΠΎ ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠΉ, ΠΊΠ°ΠΊΠΈΠΌ Π±Ρ ΠΌΠΎΠ³ Π±ΡΡΡ. ΠΡ Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΡΡ Π½Π° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ .
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠΏΡΠ°Π²ΠΈΠΌ ΡΠΈΡΡΠ°ΡΠΈΡ ΠΏΡΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ. ΠΠ΄Π΅ΡΡ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ Π½Π°ΡΠ° ΠΌΠΎΠ΄Π΅Π»Ρ, Π΅ΡΠ»ΠΈ ΠΌΡ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠΌ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ Π² ΠΊΠ»Π°ΡΡ:
Π’Π΅ΠΏΠ΅ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π΄Π»Ρ Π½Π°ΡΠ΅ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ User ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½Ρ. ΠΠ°Ρ ΠΊΠ»Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ , ΠΈ Π½Π΅ ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ Π½Π° ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ.
ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°Ρ ΠΊΠ»Π°ΡΡ Π² ΡΠ΅Π»ΠΎΠΌ ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌΡΠΉ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π΄Π°Π½Π½ΡΡ ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ Π½Π°ΡΠ΅ΠΌΡ Π²ΡΠ±ΠΎΡΡ (ΠΏΠΎ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ) ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π²ΡΠ·ΠΎΠ²Π°. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΊ Π½Π°ΡΠΈΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½ΡΡ (ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ ΠΎΠ±Π΅ Π±Π°Π·Ρ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ). ΠΡΡΡΠΎ!
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠΉ ΡΠ΅ΡΡ ΡΠ΅ΠΉΡΠ°Ρ:
Π― Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΊΠΎΠ΅-ΡΡΠΎ Π½ΠΎΠ²Π΅Π½ΡΠΊΠΎΠ΅ Π² ΡΡΠΎΡ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠΉ ΡΠ΅ΡΡ: ΡΠΈΠΊΡΠΈΠ²Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ. Π€ΠΈΠΊΡΠΈΠ²Π½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ ΠΈΠΌΠΈΡΠΈΡΠΎΠ²Π°ΡΡ (ΡΠ°Π»ΡΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ) PHP ΠΎΠ±ΡΠ΅ΠΊΡΡ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΠΌ ΡΠΈΠΊΡΠΈΠ²Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ . Π‘ Π½Π°ΡΠ΅ΠΉ Β« Π·Π°Π³Π»ΡΡΠΊΠΎΠΉ Β» ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π½Π°ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ.
Π₯ΠΎΡΠΈΡΠ΅ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎ ΡΠΈΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ?
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠ΅ΡΠ°ΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ:
ΠΠΎ ΠΌΡ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π°Ρ ΠΊΠΎΠ΄ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π»ΡΡΡΠ΅. Π‘ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ° Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΡΠ°ΠΌΠΎΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ΅.
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ
ΠΠ»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π³ΠΎ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
ΠΠ΄Π΅ΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π΅ΡΠ΅ΠΉ.
Π§ΡΠΎ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅?
Π Π΅ΡΠ΅ ΠΌΡ ΡΠΏΡΠΎΡΡΠΈΠ»ΠΈ Π½Π°Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠΉ ΡΠ΅ΡΡ!
ΠΠΎ ΠΌΡ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠΎΠ΄ Π»ΡΡΡΠ΅!
ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°:
Π― ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΠ» ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ User Π² ΠΎΠ΄Π½ΠΎ ΠΌΠ΅ΡΡΠΎ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅:
ΠΠ°ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ
Π Π½Π°ΡΠ΅ΠΌ ΡΡΠΎΠΊΠ΅ ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
Π― ΡΠ²Π΅ΡΠ΅Π½, Π²Ρ Π·Π°ΠΌΠ΅ΡΠΈΠ»ΠΈ, ΡΡΠΎ ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΠΊΠΎΠ΄Π° Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΡΠΎΡΡ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΠΈ. Π‘ΠΈΠ»ΡΠ½ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΏΡΠΎΡΠΈΠ² ΡΠ°ΠΊΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ β ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ. Π ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡΠ±ΠΎΠΊΠΎΠ΅ Π·Π½Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, ΠΊΠ°ΠΊ Π΄Π»Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΠ΄Π½Π°ΠΊΠΎ, Π·Π°ΡΡΠ°ΡΡ Π½Π° ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Ρ Π»ΠΈΡ
Π²ΠΎΠΉ ΠΎΠΊΡΠΏΠ°ΡΡΡΡ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π΄ΠΎΠ»Π³Π°.
ΠΠΎΠ΄ ΡΡΠ°Π» Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ Π»Π΅Π³ΠΊΠΈΠΌ Π² ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠΈ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ»Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²ΡΠ΅Π³ΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅, Π° Π½Π΅ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π±ΡΡΡΡΠΎ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ½ΠΈΠ·ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΠΈΠ±ΠΎΠΊ Π² ΠΊΠΎΠ΄Π΅ ΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΠΎΡΡΡΠ²ΠΎΠΌ β ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π² Π΄ΠΎΠ»Π³ΠΎΡΡΠΎΡΠ½ΡΡ ΠΈΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΡ Π² ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π΅ (Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ) ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ .
ΠΡΠΎΠ΄Π΅Π»ΡΠ²Π°Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠ΅ΠΉΡΠ°Ρ, ΠΌΡ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΠΌ Π²ΡΠ΅ΠΌΡ ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΠΌΡΡ ΠΎΡ Π³ΠΎΠ»ΠΎΠ²Π½ΠΎΠΉ Π±ΠΎΠ»ΠΈ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ.
ΠΡΡΠΎΡΠ½ΠΈΠΊΠΈ
ΠΠ°ΡΠ΅ΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²Π°ΡΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠ΅ Π½Π° Composer, ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌΠΈ:
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ PHP ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Laravel 4 ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΈΠ΄Π΅ΠΉ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π·Π΄Π΅ΡΡ, Π½ΠΎΡΠΈΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²Π°ΠΆΠ½ΡΠΉ Ρ Π°ΡΠ°ΠΊΡΠ΅Ρ.
PHPUnit. Β«ΠΠ°ΠΊ ΠΌΠ½Π΅ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠΎΠΉ ΡΡΡΡΠΎΠ² ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΒ», ΠΈΠ»ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠΎΠΌΠ½Π΅Π²Π°ΡΡΠΈΡ ΡΡ
ΠΠ°, ΡΡΠΎ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ ΠΏΠΎΡΡ Π½Π° ΡΠ΅ΠΌΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ°Π·Π°Π»ΠΎΡΡ Π±Ρ, ΡΡΠΎ ΡΡΡ ΡΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠΆΠ΄Π°ΡΡ? ΠΡΠ΅ ΠΊΠΎΠΌΡ Π½Π°Π΄ΠΎ β ΠΏΠΈΡΡΡ ΡΠ΅ΡΡΡ, ΠΊΠΎΠΌΡ Π½Π΅ Π½Π°Π΄ΠΎ β Π½Π΅ ΠΏΠΈΡΡΡ, Π²ΡΠ΅ ΡΡΠ°ΡΡΠ»ΠΈΠ²Ρ! Π€Π°ΠΊΡ ΠΆΠ΅ Π² ΡΠΎΠΌ, ΡΡΠΎ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΠΎΡΡΠΎΠ² ΠΎ ΡΠ½ΠΈΡ-ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠΌΠ΅ΡΡβ¦ ΠΊΠ°ΠΊ Π±Ρ ΡΠ°ΠΊ Π½ΠΈΠΊΠΎΠ³ΠΎ Π½Π΅ ΠΎΠ±ΠΈΠ΄Π΅ΡΡβ¦ ΠΈΠ΄ΠΈΠΎΡΡΠΊΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ! ΠΠ΅Ρ, Π½Ρ ΠΏΡΠ°Π²Π΄Π°! Π‘Π΅Π³ΠΎΠ΄Π½Ρ Ρ ΠΏΠΎΠΏΡΡΠ°ΡΡΡ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ. ΠΡΠΎΡΡ ΠΏΠΎΠ΄ ΠΊΠ°Ρ.
Π ΡΠ°ΠΊ, Π±ΡΡΡΡΡΠΉ Π³ΡΠ³Π»ΡΠΆ Π½Π° ΡΠ΅ΠΌΡ ΡΠ΅ΡΡΠΎΠ² Π½Π°Ρ ΠΎΠ΄ΠΈΡ ΠΏΡΠΎΡΡΠΎ ΡΠΉΠΌΡ ΡΡΠ°ΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π² ΡΠ²ΠΎΠ΅ΠΉ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΌΠ°ΡΡΠ΅ Π΄Π΅Π»ΡΡΡΡ Π½Π° Π΄Π²Π΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ:
1) Π‘ΡΠ°ΡΡΡΠ΅ ΠΊΠΎΠΏΠΈΡΠ°ΠΉΡΠ΅ΡΠ°. Π‘Π½Π°ΡΠ°Π»Π° ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ Π΄ΠΎΠ»Π³ΠΎΠ΅ Π²ΡΡΡΠΏΠ»Π΅Π½ΠΈΠ΅, ΠΏΠΎΡΠΎΠΌ ΠΈΡΡΠΎΡΠΈΡ ΡΠ½ΠΈΡ-ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΠΡΠ΅Π²Π½Π΅ΠΉ Π ΡΡΠΈ, ΠΏΠΎΡΠΎΠΌ Π΄Π΅ΡΡΡΡ Π»Π°ΠΉΡΡ Π°ΠΊΠΎΠ² Ρ ΡΠ΅ΡΡΠ°ΠΌΠΈ, ΠΈ Π² ΠΊΠΎΠ½ΡΠ΅-ΠΊΠΎΠ½ΡΠΎΠ² ΠΏΡΠΈΠΌΠ΅Ρ. Π‘ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄Π° Π²ΡΠΎΠ΄Π΅ ΡΡΠΎΠ³ΠΎ:
Π Ρ ΡΠ΅ΠΉΡΠ°Ρ Π½Π΅ ΡΡΡΡ. Π― ΠΏΡΠ°Π²Π΄Π° Π²ΠΈΠ΄Π΅Π» ΡΡΠ°ΡΡΠΈ Ρ Β«ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠΎΠΌΒ» Π² ΡΠΎΠ»ΠΈ ΡΡΠ΅Π±Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠ±ΠΈΡ. ΠΠ°-Π΄Π°, Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ ΡΡΠΎ Π΄Π»Ρ Π½Π°ΡΠ°Π»Π° Π½Π°Π΄ΠΎ Π²ΡΡ ΡΠΏΡΠΎΡΡΠΈΡΡ, Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ, ΡΡΠ΄Π°-ΡΡΠ΄Π°β¦ ΠΠΎ Π²Π΅Π΄Ρ Π½Π° ΡΡΠΎΠΌ Π²ΡΡ ΠΈ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ! Π Π΄Π°Π»ΡΡΠ΅ Π΄ΠΎΡΠΈΡΡΠΉΡΠ΅ ΡΠΎΠ²Ρ, ΠΊΠ°ΠΊ Π³ΠΎΠ²ΠΎΡΠΈΡΡΡ
2) Π§ΡΠ΅Π·ΠΌΠ΅ΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΡΡΠ»ΠΎΠΆΠ½ΡΠ½Π½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ. Π Π΄Π°Π²Π°ΠΉΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠ΅ΡΡ, ΠΈ Π·Π°ΠΏΠΈΡ Π½ΡΠΌ Π΅Π³ΠΎ Π² Gitlab CI, Π° ΠΏΠΎΡΠΎΠΌ Π±ΡΠ΄Π΅ΠΌ Π΅ΡΡ Π°Π²ΡΠΎΠ΄Π΅ΠΏΠ»ΠΎΠΈΡΡ Π΅ΡΠ»ΠΈ ΡΠ΅ΡΡ ΠΏΡΠΎΡΡΠ», Π° Π½Π° ΡΠ΅ΡΡΡ Π΅ΡΡ PHP Infection Π½Π°ΠΌΠ°ΠΆΠ΅ΠΌ, Π΄Π° Ρ Hudson Π²ΡΡ ΡΠΎΠ΅Π΄Π΅Π½ΠΈΠΌ. Π ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅ Π² ΡΠ°ΠΊΠΎΠΌ ΡΡΠΈΠ»Π΅. ΠΡΠΎΠ΄Π΅ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π° Π²ΡΠΎΠ΄Π΅ ΠΈ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ ΡΠΎ ΡΡΠΎ ΡΡ ΠΈΡΠ΅ΡΡ. Π Π²Π΅Π΄Ρ Ρ ΠΎΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΠΎ ΡΡΡΠΎΠΊ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°. Π Π²ΡΠ΅ ΡΡΠΈ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΡΡΠΈ β Π½Ρ ΠΏΠΎΡΠΎΠΌ, Π½Π΅ Π²ΡΡ ΠΆΠ΅ ΡΡΠ°Π·Ρ.
Π ΠΈΡΠΎΠ³Π΅ Π»ΡΠ΄ΠΈ ΡΠΎΠΌΠ½Π΅Π²Π°ΡΡΡΡ, Β«Π° Π½Π°Π΄ΠΎ Π»ΠΈ ΠΎΠ½ΠΎ ΠΌΠ½Π΅Β». Π― ΠΆΠ΅, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, Ρ ΠΎΡΡ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΠ½ΡΡΠ½Π΅Π΅. Π ΠΎΠ³ΠΎΠ²ΠΎΡΡΡΡ ΡΡΠ°Π·Ρ β Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ, Ρ Π½Π΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²ΡΠΈΠΊ. Π― ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ Ρ ΡΠ°ΠΌ ΠΌΠ½ΠΎΠ³ΠΎΠ³ΠΎ Π½Π΅ Π·Π½Π°Ρ, Π° ΠΌΠΎΠΈΠΌ ΠΏΠ΅ΡΠ²ΡΠΌ Π² ΠΆΠΈΠ·Π½ΠΈ ΡΠ»ΠΎΠ²ΠΎΠΌ Π½Π΅ Π±ΡΠ»ΠΎ ΡΠ»ΠΎΠ²ΠΎ Β«ΠΌΠΎΠΊΒ». Π― Π΄Π°ΠΆΠ΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π» ΠΏΠΎ TDD! ΠΠ°ΡΠΎ Ρ ΡΠΎΡΠ½ΠΎ Π·Π½Π°Ρ, ΡΡΠΎ Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΉ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π½Π°Π²ΡΠΊΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» ΠΌΠ½Π΅ ΠΏΠΎΠΊΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΡΠ΅ΡΡΠ°ΠΌΠΈ, Π° ΡΡΠΈ ΡΠ°ΠΌΡΠ΅ ΡΠ΅ΡΡΡ ΡΠΆΠ΅ ΠΎΡΠ»ΠΎΠ²ΠΈΠ»ΠΈ ΡΠ²ΠΎΠΉ Π΄Π΅ΡΡΡΠΎΠΊ Π±Π°Π³ΠΎΠ². Π Π΅ΡΠ»ΠΈ ΠΌΠ½Π΅ ΡΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ β Π·Π½Π°ΡΠΈΡ ΠΈ ΠΊΠΎΠΌΡ-ΡΠΎ Π΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΉΠΌΠ°Π½Π½ΡΠ΅ Π±Π°Π³ΠΈ Π±ΡΠ»ΠΎ Π±Ρ ΡΠ»ΠΎΠΆΠ½ΠΎ Π²ΡΠ»ΠΎΠ²ΠΈΡΡ Π²ΡΡΡΠ½ΡΡ.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π°, ΠΊΡΠ°ΡΠΊΠΈΠΉ Π»ΠΈΠΊΠ±Π΅Π· Π² ΡΠΎΡΠΌΠ°ΡΠ΅ Π²ΠΎΠΏΡΠΎΡ-ΠΎΡΠ²Π΅Ρ:
Q: Π― ΠΎΠ±ΡΠ·Π°Π½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ? Π ΡΡΠΎ Π΅ΡΠ»ΠΈ Ρ ΠΌΠ΅Π½Ρ Yii? Π Π΅ΡΠ»ΠΈ Kohana? Π Π΅ΡΠ»ΠΈ %one_more_framework_name%?
Π: ΠΠ΅Ρ, PHPUnit ΡΡΠΎ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΅Π³ΠΎ ΠΏΡΠΈΠΊΡΡΡΠΈΡΡ Ρ
ΠΎΡΡ ΠΊ Π»Π΅Π³Π°ΡΠΈ-ΠΊΠΎΠ΄Ρ Π½Π° ΡΠ°ΠΌΠΎΠΏΠ°Π»ΡΠ½ΠΎΠΌ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ΅.
Q: Π Ρ ΡΠ΅ΠΉΡΠ°Ρ ΡΡΠΊΠ°ΠΌΠΈ ΡΠ°ΠΉΡ ΠΏΠΎ-Π±ΡΡΡΡΠΎΠΌΡ ΠΏΡΠΎΡ
ΠΎΠΆΡ, ΠΈ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ. ΠΠ°ΡΠ΅ΠΌ ΠΎΠ½ΠΎ ΠΌΠ½Π΅?
Π: Β«ΠΡΠΎΠ³ΠΎΠ½Β» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
Π΄Π΅ΡΡΡΠΊΠΎΠ² ΡΠ΅ΡΡΠΎΠ² Π΄Π»ΠΈΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΊΡΠ½Π΄. ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ΅Π³Π΄Π° Π±ΡΡΡΡΠ΅Π΅ ΠΌΠ°Π½ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ, Π° ΠΏΡΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ
ΡΠ΅ΡΡΠ°Ρ
Π΅ΡΡ ΠΈ Π½Π°Π΄ΡΠΆΠ½Π΅Π΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΠΊΡΡΠ²Π°Π΅Ρ Π²ΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ.
Q: Π£ ΠΌΠ΅Π½Ρ Π»Π΅Π³Π°ΡΠΈ-ΠΊΠΎΠ΄ Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΠΏΠΎ 2000 ΡΡΡΠΎΠΊ. Π― ΠΌΠΎΠ³Ρ ΡΡΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ?
A: Π Π΄Π°, ΠΈ Π½Π΅Ρ. Π ΡΠ΅ΠΎΡΠΈΠΈ β Π΄Π°, Π»ΡΠ±ΠΎΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΊΡΡΡΡ ΡΠ΅ΡΡΠΎΠΌ. ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅, ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΈΡΠ°ΡΡΡΡ Ρ Π·Π°Π΄Π΅Π»ΠΎΠΌ ΠΏΠΎΠ΄ Π±ΡΠ΄ΡΡΠ΅Π΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. Π€ΡΠ½ΠΊΡΠΈΡ Π½Π° 2000 ΡΡΡΠΎΠΊ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΠΉ, ΠΏΠΎΠ³ΡΠ°Π½ΠΈΡΠ½ΡΡ
ΡΠ»ΡΡΠ°Π΅Π². ΠΠΎΠΆΠ΅Ρ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ Π΅Ρ Π² ΠΈΡΠΎΠ³Π΅ Π²ΡΡ ΠΏΠΎΠΊΡΡΡΡ, Π½ΠΎ ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ ΡΡΠΎ Π·Π°ΠΉΠΌΡΡ Ρ Π²Π°Ρ Π½Π΅ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. Π§Π΅ΠΌ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½Π΅Π΅ ΠΊΠΎΠ΄ β ΡΠ΅ΠΌ Π»Π΅Π³ΡΠ΅ Π΅Π³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ. Π§Π΅ΠΌ Π»ΡΡΡΠ΅ ΡΠΎΠ±Π»ΡΠ΄Π°Π΅ΡΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ Single Responsibility β ΡΠ΅ΠΌ ΠΏΡΠΎΡΠ΅ Π±ΡΠ΄ΡΡ ΡΠ΅ΡΡΡ. ΠΠ»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ°ΡΡΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ΄ΡΡΡΡ ΡΠ½Π°ΡΠ°Π»Π° Π·Π΄ΠΎΡΠΎΠ²ΠΎ ΠΎΡΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΡΡ ΠΈΡ
.
Q: Π£ ΠΌΠ΅Π½Ρ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ (ΡΡΠ½ΠΊΡΠΈΠΈ), ΡΡΠΎ ΡΠ°ΠΌ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ? Π’Π°ΠΌ Π²ΡΡ Π½Π°Π΄ΡΠΆΠ½ΠΎ, ΡΠ°ΠΌ Π½Π΅Ρ ΠΌΠ΅ΡΡΠ° ΠΎΡΠΈΠ±ΠΊΠ΅!
Π: Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, Π²Ρ Π½Π΅ ΡΠ΅ΡΡΠΈΡΡΠ΅ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ (Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π½Π΅ TDD), Π²Ρ ΠΏΡΠΎΡΡΠΎ Β«ΡΠΈΠΊΡΠΈΡΡΠ΅ΡΠ΅Β» Π΅Ρ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ. Π Π±ΡΠ΄ΡΡΠ΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅ΡΡΠ° Π±ΡΡΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π½Π΅ ΡΠ»ΠΎΠΌΠ°Π»ΠΈ Π»ΠΈ Π²Ρ Π΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. ΠΡΠΈΠΌΠ΅Ρ: Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²Π°Π»ΠΈΠ΄ΠΈΡΡΠ΅Ρ email. ΠΠ΅Π»Π°Π΅Ρ ΠΎΠ½Π° ΡΡΠΎ ΡΠ΅Π³ΡΠ»ΡΡΠΊΠΎΠΉ.
ΠΠ΅ΡΡ Π²Π°Ρ ΠΊΠΎΠ΄ ΡΠ°ΡΡΠΈΡΡΠ²Π°Π΅Ρ Π½Π° ΡΠΎ, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π² ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π²Π°Π»ΠΈΠ΄Π½ΡΠΉ ΠΈΠΌΠ΅ΠΉΠ» β ΠΎΠ½Π° Π²Π΅ΡΠ½ΡΡ true. ΠΠ°ΡΡΠΈΠ² Π²Π°Π»ΠΈΠ΄Π½ΡΡ ΠΈΠΌΠ΅ΠΉΠ»ΠΎΠ² β ΡΠΎΠΆΠ΅ true. ΠΠ°ΡΡΠΈΠ² Ρ ΠΎΡΡ Π±Ρ Ρ ΠΎΠ΄Π½ΠΈΠΌ Π½Π΅Π²Π°Π»ΠΈΠ΄Π½ΡΠΌ ΠΈΠΌΠ΅ΠΉΠ»ΠΎΠΌ β false. ΠΡ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅, ΠΏΠΎ ΠΊΠΎΠ΄Ρ ΡΡΡΡ ΠΏΠΎΠ½ΡΡΠ½Π°. ΠΠΎ Π½Π°ΡΡΠ°Π» Π΄Π΅Π½Ρ, ΠΈ Π²Ρ ΡΠ΅ΡΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΌΠΎΠ½ΡΡΡΡΠΎΠ·Π½ΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠΊΡ Π²Π½Π΅ΡΠ½ΠΈΠΌ API. ΠΠΎ ΠΊΠ°ΠΊ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π½Π΅ ΠΏΠΎΠΌΠ΅Π½ΡΠ»Π° ΠΏΡΠΈΠ½ΡΠΈΠΏ ΡΠ°Π±ΠΎΡΡ? ΠΠ΄ΡΡΠ³ ΠΎΠ½Π° ΠΏΠ»ΠΎΡ ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ²? ΠΠ»ΠΈ Π²Π΅ΡΠ½ΡΡ Π½Π΅ boolean? Π ΡΠ΅ΡΡΡ ΡΠΌΠΎΠ³ΡΡ ΡΡΠΎ Π²ΡΡ Π΄Π΅ΡΠΆΠ°ΡΡ ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΠΌ. Π₯ΠΎΡΠΎΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΡΠ΅ΡΡ ΡΡΠ°Π·Ρ ΡΠΊΠ°ΠΆΠ΅Ρ Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡΠ»ΠΈΡΠ½ΠΎΠ΅ ΠΎΡ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ.
Q: ΠΠΎΠ³Π΄Π° Ρ Π½Π°ΡΠ½Ρ Π²ΠΈΠ΄Π΅ΡΡ ΡΠΎΠ»ΠΊ ΠΎΡ ΡΠ΅ΡΡΠΎΠ²?
Π: ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ
, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠΊΡΠΎΠ΅ΡΠ΅ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ°ΡΡΡ ΠΊΠΎΠ΄Π°. Π§Π΅ΠΌ Π±Π»ΠΈΠΆΠ΅ ΠΏΠΎΠΊΡΡΡΠΈΠ΅ ΠΊ 100% β ΡΠ΅ΠΌ Π½Π°Π΄ΡΠΆΠ½Π΅Π΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΠΎ-Π²ΡΠΎΡΡΡ
, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠ΄ΡΡΡΡ Π΄Π΅Π»Π°ΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π»ΠΈΠ±ΠΎ ΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΊΠΎΠ΄Π°. Π’Π΅ΡΡΡ ΠΌΠΎΠ³ΡΡ ΠΎΡΠ»ΠΎΠ²ΠΈΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΡΡΠ½ΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π»Π΅Π³ΠΊΠΎ ΡΠΏΡΡΠ΅Π½Ρ (ΠΏΠΎΠ³ΡΠ°Π½ΠΈΡΠ½ΡΠ΅ ΡΠ»ΡΡΠ°ΠΈ). ΠΠΎ-ΡΡΠ΅ΡΡΠΈΡ
, ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΠ°ΠΌΠΈΡ
ΡΠ΅ΡΡΠΎΠ²! Π§Π°ΡΡΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΠ΅ΡΡΠ° Π²ΡΡΠ²Π»ΡΡΡΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄ Π½Π΅Π·Π°ΠΌΠ΅ΡΠ½Ρ.
Q: ΠΡ Π²ΠΎΡ, Ρ ΠΌΠ΅Π½Ρ ΡΠ°ΠΉΡ Π½Π° laravel. Π‘Π°ΠΉΡ ΡΡΠΎ Π½Π΅ ΡΡΠ½ΠΊΡΠΈΡ, ΡΠ°ΠΉΡ ΡΡΠΎ Ρ
ΡΠ΅Π½ΠΎΠ²Π° Π³ΠΎΡΠ° ΠΊΠΎΠ΄Π°. ΠΠ°ΠΊ ΡΡΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ?
Π: ΠΠΌΠ΅Π½Π½ΠΎ ΠΎΠ± ΡΡΠΎΠΌ ΠΏΠΎΠΉΠ΄ΡΡ ΡΠ΅ΡΡ Π΄Π°Π»ΡΡΠ΅. ΠΠΊΡΠ°ΡΡΠ΅: ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ², ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ middleware, ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΡΠ΅ΡΠ²ΠΈΡΡ, ΠΈ Ρ. Π΄.
ΠΠ΄Π½Π° ΠΈΠ· ΠΈΠ΄Π΅ΠΉ Unit-ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠΊΠ° ΠΊΠΎΠ΄Π°. Π§Π΅ΠΌ ΠΌΠ΅Π½ΡΡΠ΅ ΠΊΠΎΠ΄Π° ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΡΠ΅ΡΡΠΎΠΌ β ΡΠ΅ΠΌ Π»ΡΡΡΠ΅. ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΈΠ±Π»ΠΈΠΆΡΠ½Π½ΡΠΉ ΠΊ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ:
ΠΠΌΡΠ»ΡΡΠΈΡ, ΠΏΠΎΠ΄ΠΌΠ΅Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΌΠΎΠΊΠ°Π½ΡΠ΅ΠΌ (ΠΎΡ Π°Π½Π³Π». mock object, Π±ΡΠΊΠ²Π°Π»ΡΠ½ΠΎ: Β«ΠΎΠ±ΡΠ΅ΠΊΡ-ΠΏΠ°ΡΠΎΠ΄ΠΈΡΒ»). ΠΠΈΠΊΡΠΎ Π½Π΅ ΠΌΠ΅ΡΠ°Π΅Ρ ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π²ΡΡΡΠ½ΡΡ, Π½ΠΎ Π²ΡΡ ΡΠΆΠ΅ ΠΏΡΠΈΠ΄ΡΠΌΠ°Π½ΠΎ Π΄ΠΎ Π½Π°Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π° ΠΏΠΎΠΌΠΎΡΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ ΡΠ°ΠΊΠ°Ρ ΡΡΠ΄Π΅ΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΊΠ°ΠΊ Mockery. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΌΠΎΠΊΠΈ Π΄Π»Ρ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ².
ΠΠΈΡΠ΅Π³ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ, Π½Π΅ ΡΠ°ΠΊ Π»ΠΈ? ΠΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π·Π°Π³Π»ΡΡΠΊΠΈ Π΄Π»Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ°, ΡΠΎΠ·Π΄Π°Π»ΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, ΠΈ Β«Π΄ΡΡΠ½ΡΠ»ΠΈΒ» Π½ΡΠΆΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ Π·Π°ΠΏΡΠΎΡ. ΠΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΎΡΠ²Π΅Ρ. ΠΠΎ ΠΊΠ°ΠΊ ΡΠ΅ΠΏΠ΅ΡΡ Π΅Π³ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ? ΠΡΠΎ ΠΈ Π΅ΡΡΡ ΡΠ°ΠΌΠ°Ρ Π²Π°ΠΆΠ½Π°Ρ ΡΠ°ΡΡΡ ΡΠ΅ΡΡΠ° β ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠ΅ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅, assertion. PHPUnit ΠΈΠΌΠ΅Π΅Ρ Π΄Π΅ΡΡΡΠΊΠΈ Π³ΠΎΡΠΎΠ²ΡΡ assertions. ΠΡΠΎΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΎΠ΄Π½Ρ ΠΈΠ· Π½ΠΈΡ
ΠΠ°Π½Π½ΡΠΉ ΡΠ΅ΡΡ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ β Π΅ΡΠ»ΠΈ Π² ΠΌΠ΅ΡΠΎΠ΄ Π»ΠΎΠ³ΠΈΠ½ ΠΏΡΠΈΠ»Π΅ΡΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ-ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π΅ Π½Π°ΠΉΠ΄ΡΡΡΡ ΠΏΠΎΠ»Ρ login ΠΈΠ»ΠΈ password β ΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ Π²Π΅ΡΠ½ΡΡ ΡΡΡΠΎΠΊΡ Β«Auth errorΒ». ΠΠΎΡ, Π² ΠΎΠ±ΡΠ΅ΠΌ-ΡΠΎ, ΠΈ Π²ΡΡ. Π’Π°ΠΊ ΠΏΡΠΎΡΡΠΎ β Π½ΠΎ ΡΠ°ΠΊ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π²Π΅Π΄Ρ ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ login Π±Π΅Π· ΡΡΡΠ°Ρ Π° ΡΠ»ΠΎΠΌΠ°ΡΡ ΡΡΠΎ-ΡΠΎ. ΠΠ°Ρ frontend ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ²Π΅ΡΠ΅Π½Π½ΡΠΌ, ΡΡΠΎ Π² ΡΠ»ΡΡΠ°Π΅ ΡΠ΅Π³ΠΎ β ΠΎΠ½ ΠΏΠΎΠ»ΡΡΠΈΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊΡΡ ΠΎΡΠΈΠ±ΠΊΡ. Π Π΅ΡΠ»ΠΈ ΠΊΡΠΎ-ΡΠΎ ΡΠ»ΠΎΠΌΠ°Π΅Ρ ΡΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ΅ΠΊΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ) β ΡΠΎ ΡΠ΅ΡΡ ΡΡΠ°Π·Ρ ΠΆΠ΅ ΠΎΠ± ΡΡΠΎΠΌ ΠΏΡΠΎΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ! ΠΠΎΠΏΠΈΡΠ΅ΠΌ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΊΡΡΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π².
Π ΡΡΠΎ ΠΆΠ΅ ΠΏΠΎ-ΠΏΠΎΠ²ΠΎΠ΄Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΡΠΏΡΠΎΡΠΈΡΠ΅ Π²Ρ. ΠΡ ΡΠΎ ΠΌΡ Β«Π·Π°Π³Π»ΡΡΠΈΠ»ΠΈΒ», Π° Π²Π΄ΡΡΠ³ ΠΎΠ½ΠΈ ΡΠ»ΠΎΠΌΠ°ΡΡΡΡ? Π Π²ΠΎΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΈ Π½Π°Π΄ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠΊΡΡΡΠΈΠ΅ ΠΊΠΎΠ΄Π° ΡΠ΅ΡΡΠ°ΠΌΠΈ. ΠΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΠ°Π±ΠΎΡΡ ΡΡΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π»ΠΎΠ³ΠΈΠ½Π° β ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π»ΠΎΠ³ΠΈΠ½ ΡΠ°ΡΡΡΠΈΡΡΠ²Π°Ρ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ². Π ΠΏΠΎΡΠΎΠΌ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠ°ΠΊΠΈΠ΅ ΠΆΠ΅, ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΡΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ². Π ΠΏΠΎΡΠΎΠΌ ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ. Π ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. Π ΠΈΡΠΎΠ³Π΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ΅ΡΡ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΎΠ³ΠΎ ΠΊΡΡΠΊΠ° ΠΊΠΎΠ΄Π°, ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ ΡΡΠΎ Π²ΡΠ΅ Π΅Π³ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ. Π ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π²ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΠΎΠΆΠ΅ ΠΏΠΎΠΊΡΡΡΡ ΡΠ΅ΡΡΠ°ΠΌΠΈ β ΡΠΎ ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ° ΡΠΎΠΆΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅ΡΡΡ. Π ΠΈΡΠΎΠ³Π΅, Π»ΡΠ±ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΡΠΈΡΡΠ΅ΠΌΡ Π»ΠΎΠΌΠ°ΡΡΠ΅Π΅ Π»ΠΎΠ³ΠΈΠΊΡ ΡΠ°Π±ΠΎΡΡ Π΄Π°ΠΆΠ΅ ΠΌΠ°Π»Π΅ΠΉΡΠ΅Π³ΠΎ ΡΡΠ°ΡΡΠΊΠ° ΠΊΠΎΠ΄Π° β ΡΡΠ°Π·Ρ ΠΆΠ΅ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡΡ Π² ΡΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΌ ΡΠ΅ΡΡΠ΅. ΠΠ°ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΠ³ΠΎΠ½ ΡΠ΅ΡΡΠΎΠ² β ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π΅ Π±ΡΠ΄Ρ, Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Ρ PHPUnit Π²ΠΏΠΎΠ»Π½Π΅ Ρ ΠΎΡΠΎΡΠ°Ρ. Π Π² Laravel, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ vendor/bin/phpunit Ρ ΠΊΠΎΡΠ½Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠΎΠ΄Π΅ ΡΡΠΎΠ³ΠΎ
β Π²ΡΠ΅ ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΠ»ΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎ. ΠΠ»ΠΈ Π²ΡΠΎΠ΄Π΅ ΡΡΠΎΠ³ΠΎ
ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ΅ΠΌΠΈ assert-ΠΎΠ² ΠΏΡΠΎΠ²Π°Π»ΠΈΠ»ΡΡ.
Β«ΠΡΠΎ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΊΠ»Π°ΡΡΠ½ΠΎ, Π½ΠΎ ΡΡΠΎ ΠΈΠ· ΡΡΠΎΠ³ΠΎ Ρ Π½Π΅ ΠΏΠΎΠΉΠΌΠ°Ρ ΡΡΠΊΠ°ΠΌΠΈ?Β» β ΡΠΏΡΠΎΡΠΈΡΠ΅ Π²Ρ. Π Π΄Π°Π²Π°ΠΉΡΠ΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄
ΠΡ Π²ΠΈΠ΄ΠΈΠΌ ΡΠΏΡΠΎΡΡΠ½Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌ API. Π€ΡΠ½ΠΊΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΊΠ»Π°ΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ c API, ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠΈΠ±ΠΊΠΈ β Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ null. ΠΡΠ»ΠΈ ΠΆΠ΅ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ null β ΡΠ»Π΅Π΄ΡΠ΅Ρ Β«ΠΏΠΎΠ΄Π½ΡΡΡ ΠΏΠ°Π½ΠΈΠΊΡΒ» (ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ»Π°ΠΊ, ΠΈΠ»ΠΈ ΠΈΠΌΠ΅ΠΉΠ» ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ, ΠΈΠ»ΠΈ ΠΊΠΈΠ½ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ Π² ΠΊΠΈΠ±Π°Π½Ρ. ΠΠ° ΠΊΡΡΠ° Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ²). ΠΡΠΎΠ΄Π΅ Π²ΡΡ ΠΏΡΠΎΡΡΠΎ, Π½Π΅ ΡΠ°ΠΊ Π»ΠΈ? ΠΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ ΡΡΠΎ ΡΠ΅ΡΠ΅Π· Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠ΅ΡΠΈΠ» Β«ΠΏΠΎΠΏΡΠ°Π²ΠΈΡΡΒ» ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ. ΠΠ½ ΡΠ΅ΡΠΈΠ» ΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ null β ΡΡΠΎ ΠΏΡΠΎΡΠ»ΡΠΉ Π²Π΅ΠΊ, ΠΈ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΊΠΈΠ΄Π°ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅.
Π ΠΎΠ½ Π΄Π°ΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°Π» Π²ΡΠ΅ ΡΡΠ°ΡΡΠΊΠΈ ΠΊΠΎΠ΄Π°, Π³Π΄Π΅ Π²ΡΠ·ΡΠ²Π°Π»Π°ΡΡ ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ! ΠΡΠ΅, ΠΊΡΠΎΠΌΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ. ΠΠ³ΠΎ ΠΎΠ½ ΡΠΏΡΡΡΠΈΠ». ΠΡΠ²Π»ΡΠΊΡΡ, ΡΡΡΠ°Π», ΠΏΡΠΎΡΡΠΎ ΠΎΡΠΈΠ±ΡΡ β Π΄Π° ΠΌΠ°Π»ΠΎ Π»ΠΈ. Π€Π°ΠΊΡ Π»ΠΈΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ ΡΡΠ°ΡΡΠΎΠΊ ΠΊΠΎΠ΄Π° Π²ΡΡ Π΅ΡΡ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΡΡΠ°ΡΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ. Π PHP ΡΡΠΎ Ρ Π½Π°Ρ Π½Π΅ Java β ΠΌΡ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΎΡΠΈΠ±ΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΎΠ³ΠΎ, ΡΡΠΎ throwable ΡΡΠ½ΠΊΡΠΈΡ Π½Π΅ Π·Π°Π²ΡΡΠ½ΡΡΠ° Π² try-catch. Π ΠΈΡΠΎΠ³Π΅ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· 100 ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΡΠ°, Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΠ°Π΄Π΅Π½ΠΈΡ API β ΠΌΡ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΠΏΡΠΈ ΡΡΡΠ½ΠΎΠΌ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΡ ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ Π½Π΅ ΠΎΡΠ»ΠΎΠ²ΠΈΠΌ ΡΡΠΎΡ Π²Π°ΡΠΈΠ°Π½Ρ ΡΠΎΠ±ΡΡΠΈΡ. API Ρ Π½Π°Ρ Π²Π½Π΅ΡΠ½Π΅Π΅, ΠΎΡ Π½Π°Ρ Π½Π΅ Π·Π°Π²ΠΈΡΠΈΡ, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΎΡΠΎΡΠΎ β ΠΈ ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ ΠΌΡ Π½Π΅ ΠΏΠΎΠΏΠ°Π΄ΡΠΌ Β«ΡΡΠΊΠ°ΠΌΠΈΒ» Π½Π° ΡΠ»ΡΡΠ°ΠΉ ΠΎΡΠΊΠ°Π·Π° API, ΠΈ Π½Π΅Π²Π΅ΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ. ΠΠ°ΡΠΎ Π±ΡΠ΄Ρ Ρ Π½Π°Ρ ΡΠ΅ΡΡΡ β ΠΎΠ½ΠΈ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΎΡΠ»ΠΎΠ²ΡΡ Π΄Π°Π½Π½ΡΠΉ ΠΊΠ΅ΠΉΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΊΠ»Π°ΡΡ ExternalApi Π² ΡΡΠ΄Π΅ ΡΠ΅ΡΡΠΎΠ² Ρ Π½Π°Ρ Β«Π·Π°Π³Π»ΡΡΠ΅Π½Β», ΠΈ ΡΠΌΡΠ»ΠΈΡΡΠ΅Ρ ΠΊΠ°ΠΊ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΡΠ°ΠΊ ΠΈ ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅. Π ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ΅ΡΡ Ρ Π½Π°Ρ ΡΠΏΠ°Π΄ΡΡ
ΠΡΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π½Π΅ Π»Π΅Π³Π°ΡΠΈ Π»Π°ΠΏΡΠ°, ΡΠΆΠ΅ ΡΠΏΡΡΡΡ ΠΌΠΈΠ½ΡΡ 20-30 Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ²ΠΎΠΉ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ΅ΡΡ. Π ΡΠΏΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π΅Π΄Π΅Π»Ρ β ΡΠ·Π½Π°ΡΡ ΡΡΠΎ-ΡΠΎ Π½ΠΎΠ²ΠΎΠ΅, ΠΊΡΡΡΠΎΠ΅, Π²Π΅ΡΠ½ΡΡΡΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ΄ ΡΡΠΎΡ ΠΏΠΎΡΡ, ΠΈ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠ°ΠΊΠΎΠΉ Π°Π²ΡΠΎΡ Π³ΠΎΠ²Π½ΠΎΠΊΠΎΠ΄Π΅Ρ, ΠΈ Π½Π΅ Π·Π½Π°Π΅Ρ ΠΎ %framework_name%, ΠΈ ΡΠ΅ΡΡΡ Ρ ΡΠ΅Π½ΠΎΠ²ΡΠ΅ ΠΏΠΈΡΠ΅Ρ, Π° Π½Π°Π΄ΠΎ Π΄Π΅Π»Π°ΡΡ %this_way%. Π Ρ Π±ΡΠ΄Ρ ΠΎΡΠ΅Π½Ρ ΡΠ°Π΄ Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅. ΠΡΠΎ Π±ΡΠ΄Π΅Ρ Π·Π½Π°ΡΠΈΡ ΡΡΠΎ ΠΌΠΎΡ ΡΠ΅Π»Ρ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡΠ°: ΠΊΡΠΎ-ΡΠΎ Π΅ΡΡ ΠΎΡΠΊΡΡΠ» Π΄Π»Ρ ΡΠ΅Π±Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΈ Π½Π΅ΠΌΠ½ΠΎΠΆΠ΅ΡΠΊΠΎ ΠΏΠΎΠ²ΡΡΠΈΠ» ΠΎΠ±ΡΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΠΈΠ·ΠΌΠ° Π² Π½Π°ΡΠ΅ΠΉ ΡΡΠ΅ΡΠ΅!