Php докумСнтация: PHP: Руководство ΠΏΠΎ PHP — Manual

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΈ гСнСрация Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π² PHP

Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½Ρ‹ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρƒ? Π’ ΠΊΠ°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΈΡ… ΠΏΠΈΡΠ°Ρ‚ΡŒ? Π“Π΄Π΅ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹, Π° Π³Π΄Π΅ Π½Π΅Ρ‚? Как ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄? Как ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ стиля докумСнтирования всСм участникам ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹? КакиС Π΅ΡΡ‚ΡŒ инструмСнты для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ? Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я ΠΏΠΎΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ Π΄Π°Ρ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° эти ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ вопросы, Π° Ρ‚Π°ΠΊΠΆΠ΅ подСлюсь своими мыслями ΠΏΠΎ этому ΠΏΠΎΠ²ΠΎΠ΄Ρƒ. И ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ½Π΅ Π² этом кролик…

Π˜Ρ‚Π°ΠΊ, докумСнтация для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±Ρ‹Π²Π°Π΅Ρ‚ Π΄Π²ΡƒΡ… Π²ΠΈΠ΄ΠΎΠ². ΠŸΠ΅Ρ€Π²Π°Ρ β€” это Π² самом ΠΊΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π². Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ сторонний инструмСнт ΠΈΠ»ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ мСсто для хранСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ WIKI-Π΄Π²ΠΈΠΆΠΎΠΊ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования, взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ модулями, приводятся Ρ€Π°Π·Π½Ρ‹Π΅ Π±Π»ΠΎΠΊ-схСмы ΠΈ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹, Π² ΠΎΠ±Ρ‰Π΅ΠΌ, всё Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ нСльзя Π·Π°ΡΡƒΠ½ΡƒΡ‚ΡŒ Π² ΠΊΠΎΠ΄.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ размСщСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ

Π”Π°Π²Π°ΠΉΡ‚Π΅ для Π½Π°Ρ‡Π°Π»Π° рассмотрим Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π₯отя это Π½Π΅ Π΅ΡΡ‚ΡŒ Ρ†Π΅Π»ΡŒΡŽ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ. Π’ open source ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Π½Π΅Ρ€Π΅Π΄ΠΊΠΎ встрСчаСтся ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°, ΠΊΠΎΠ³Π΄Π° ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΏΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ хранятся Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΈ основной ΠΊΠΎΠ΄. НапримСр, Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ„Π΅ΠΉΠΊΠΎΠ²Ρ‹Ρ… фикстур для PHP докумСнтация ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Π° Π² README Ρ„Π°ΠΉΠ»; Ρ‡Ρ‚ΠΎΠ± Π΄ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°, Π½ΡƒΠΆΠ½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΊΡ€ΠΎΠ»ΠΈΡ‚ΡŒ. ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½Ρ‹ΠΉ HTTP-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ для PHP Guzzle Ρ…Ρ€Π°Π½ΠΈΡ‚ инструкции ΠΏΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ Π² Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ… Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ docs. Π₯Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Π²ΠΎΠ·Π»Π΅ ΠΊΠΎΠ΄Π° β€” это, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎ. Один Ρ€Π°Π· скачав ΠΏΠ°ΠΊΠ΅Ρ‚ Π²Π΅Π½Π΄ΠΎΡ€Π°, Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΈ ΠΊΠΎΠ΄, ΠΈ докумСнтация. Если ваша Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° нСбольшая, Ссли ΠΎΠ½Π° ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π°Ρ ΠΈ Π½Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ постоянных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ²Π»Π΅ΠΊΡƒΡ‚ Π·Π° собой постоянноС пСрСписываниС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Ρ‚ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ смСло Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Но всё ΠΆΠ΅ всСму Π΅ΡΡ‚ΡŒ Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹ΠΉ ΠΏΡ€Π΅Π΄Π΅Π». НапримСр, Ссли Π²Ρ‹ затСяли созданиС собствСнного Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ постоянныС Ρ€Π΅Π»ΠΈΠ·Ρ‹, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½, Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, докумСнтация Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π° Π½Π° нСсколько языков, ΠΈ Ρ‚ΠΎΠ³Π΄Π° ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° β€” Π½Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚. ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ для Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹ постоянныС ΠΏΡ€Π°Π²ΠΊΠΈ, Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‹, исправлСниС ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΎΠΊ. Π­Ρ‚ΠΎ всС выливаСтся Π² большоС количСство ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²-фиксов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°ΡΠΎΡ€ΡΡŽΡ‚ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Навигация ΠΏΠΎ истории ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², Π³Π΄Π΅ измСнСния ΠΊΠΎΠ΄Π° Ρ‚Π΅Ρ€ΡΡŽΡ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ измСнСниями Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, слоТна ΠΈ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½Π°. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС Π»ΡƒΡ‡ΡˆΠ΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ для Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊ это сдСлали для Symfony. GitHub, GitLab, Bitbucket Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ встроСнный инструмСнт WIKI, Π΅Π³ΠΎ Ρ„ΠΈΡˆΠΊΠΎΠΉ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½ ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ, Ρ‚.Π΅. Π½Π΅ являСтся ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ. Но ΠΊ Π½Π΅ΠΌΡƒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Ρ‡Π΅Ρ€Π΅Π· Git, Ρ‚.Π΅. ΡΡ‚ΡΠ½ΡƒΡ‚ΡŒ сСбС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Ρ‘ Π² ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΌ для сСбС Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅, Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ измСнСния Π² ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π½Π° сСрвСр, Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ свСТиС ΠΏΡ€Π°Π²ΠΊΠΈ. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Π½ΠΎΠΉ WIKI для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ D3.js. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ сайт для своСго ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° ΠΈ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Π½Π° Π½Π΅ΠΌ. Но Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ способ ΠΈΠ· пСрСчислСнных Π²Ρ‹ΡˆΠ΅, Ρ‚ΠΎ Π²Ρ‹ смоТСтС ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Π±-страницы Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈΠ· вашСго Git ΠΈΠ»ΠΈ WIKI рСпозитория, инструмСнты для этого Π΅ΡΡ‚ΡŒ. Если Π²Ρ‹ Π»ΡŽΠ±ΠΈΡ‚Π΅Π»ΡŒ комплСксных Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Confluence ΠΎΡ‚ Atlassian. ВозмоТности Confluence Π²Ρ‹ΡˆΠ»ΠΈ Π΄Π°Π»Π΅ΠΊΠΎ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ WIKI-Π΄Π²ΠΈΠΆΠΊΠ°.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² ΠΊΠΎΠ΄Π΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ вСрнСмся нСпосрСдствСнно ΠΊΒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΊΠΎΠ΄Π° в самом ΠΊΠΎΠ΄Π΅. Π―Β ΠΏΠΈΡˆΡƒ эту ΡΡ‚Π°Ρ‚ΡŒΡŽ на основании собствСнного ΠΎΠΏΡ‹Ρ‚Π°, но послС прочтСния ΠΊΠ½ΠΈΠ³ΠΈ Π ΠΎΠ±Π΅Ρ€Ρ‚Π° ΠœΠ°Ρ€Ρ‚ΠΈΠ½Π° «Чистый ΠΊΠΎΠ΄Β», поэтому врСмя ΠΎΡ‚Β Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Ρ‚ΡŒΡΡ ΡƒΠΌΠ½Ρ‹Π΅ словСчки ΠΈΒ Ρ†ΠΈΡ‚Π°Ρ‚Ρ‹ ΠΈΠ·Β ΠΊΠ½ΠΈΠ³ΠΈ πŸ™‚ . ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ мСссСдТ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пытаСтся донСсти Π½Π°ΠΌ Π ΠΎΠ±Π΅Ρ€Ρ‚ ΠœΠ°Ρ€Ρ‚ΠΈΠ½, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉΒ β€” это ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ Π½Π΅ΡƒΠ΄Π°Ρ‡ΠΈ. ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΏΠΈΡˆΡƒΡ‚ΡΡ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π³Π»Π°Π΄ΠΈΡ‚ΡŒ Π²ΠΈΠ½Ρƒ программиста, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ нС смог понятно Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ свою ΠΌΡ‹ΡΠ»ΡŒ ΡΒ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ языка программирования. ΠŸΡ€ΠΎΡ†Π΅ΡΡ написания Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ и понятного ΠΊΠΎΠ΄Π°Β β€” ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» достаточно ΠΎΠ±ΡŠΠ΅ΠΌΠ½Ρ‹ΠΉ ΠΈΒ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π°Β Ρ€Π°ΠΌΠΊΠΈ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ. Но всС ТС самоС простоС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°: ΠΏΠΈΡˆΠΈΡ‚Π΅ Π΅Π³ΠΎ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ± он читался ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ прСдлоТСния. Π’Β ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ всС Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ Ρ‡Π΅ΠΌ Π²Β Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ, общСпринятая ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ классы ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ, Π°Β ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹Β β€” Π³Π»Π°Π³ΠΎΠ»Π°ΠΌΠΈ, Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ СстСствСнным. НапримСр у нас Π΅ΡΡ‚ΡŒ ΠΊΡ€ΠΎΠ»ΠΈΠΊ, опишСм нСсколько Π΅Π³ΠΎ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… дСйствий Π²Β Π²ΠΈΠ΄Π΅ интСрфСйса:

interface RabbitInterface
{
    public function run();
    public function jump();
    public function stop();
    public function hide();
}

ΠžΠΏΡƒΡΡ‚ΠΈΠΌ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ этого интСрфСйса, просто создадим Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΎΡ‚ класса Rabbit:

$rabbit = new Rabbit();
$rabbit->run();
$rabbit->stop();

Код читаСтся СстСствСнно. ΠœΠ΅Ρ‚ΠΎΠ΄ run заставляСт ΠΊΡ€ΠΎΠ»ΠΈΠΊΠ° Π±Π΅ΠΆΠ°Ρ‚ΡŒ, ΠΌΠ΅Ρ‚ΠΎΠ΄ stop Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятСн, ΠΎΠ½ останавливаСт Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ дСйствиС, ΠΈ ΠΊΡ€ΠΎΠ»ΠΈΠΊ Π·Π°ΠΌΠΈΡ€Π°Π΅Ρ‚ Π½Π° мСстС. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ надрСссируСм ΠΆΠΈΠ²ΠΎΡ‚Π½ΠΎΠ΅ ΠΈ Π½Π°ΡƒΡ‡ΠΈΠΌ Π΅Π³ΠΎ Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ расстояниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ run.

$rabbit->run(100);

И ΠΊΡ€ΠΎΠ»ΠΈΠΊ ΠΏΠΎΠ±Π΅ΠΆΠ°Π»… Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ ΠΊΠΎΠ΄Ρƒ нСпонятно, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ число 100. Π­Ρ‚ΠΎ ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΈΠ»ΠΈ сантимСтры, ΠΈΠ»ΠΈ Ρ„ΡƒΡ‚Ρ‹? Π‘ΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ исправил Π±Ρ‹ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

// Rabbit have to run 100 metres
$rabbit->run(100);

Если ΠΊΡ€ΠΎΠ»ΠΈΠΊ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Β«Π±Π΅Π³Π°Ρ‚ΡŒΒ» в вашСм ΠΊΠΎΠ΄Π΅ Π²Β Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… мСстах, Ρ‚ΠΎΒ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ мСсто Π±ΡƒΠ΄Π΅Ρ‚ Π½ΡƒΠΆΠ΄Π°Ρ‚ΡŒΡΡ Π²Β Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… коммСнтариях. ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΒ ΠΈΡ…Β Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π²Β Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… мСстах ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. ΠŸΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ± ΡƒΠ±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉΒ β€” это Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ число Π½Π°Β ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ.

$metres = 100;
$rabbit->run($metres);

Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΡƒΠΆΠ΅ Π½Π΅ Π½ΡƒΠΆΠ΅Π½, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‡ΡƒΡ‚ΡŒ-Ρ‡ΡƒΡ‚ΡŒ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΠ»Π°ΡΡŒ, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΠΎ ΠΊΠΎΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ ΠΊΡ€ΠΎΠ»ΠΈΠΊ ΠΏΡ€ΠΎΠ±Π΅ΠΆΠΈΡ‚ 100 ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Π›ΡƒΡ‡ΡˆΠΈΠΌ ΠΆΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ контСкст Π² Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

$rabbit->runInMetres(100);

Rabbit β€” имя ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅, run β€” Π³Π»Π°Π³ΠΎΠ», in metres β€” контСкст, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ добавляСм ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π» ΡΡƒΡ‚ΡŒ. ΠŸΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ Ρ‚Π°ΠΊΠΎΠΉ схСмой, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

$rabbit->runInSeconds(25);
$rabbit->runTillTime(new \DateTime('tomorrow'));
$rabbit->runTillTheEndOfForest($sherwood);

Они Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΡΡƒΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π². ΠŸΡ€ΠΎΡΡ‚ΠΎ Π³Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎ Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ, Ρ‚Π°ΠΊΠΈΠΌ способом Π²Ρ‹ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚Π΅ количСство Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π² вашСм ΠΊΠΎΠ΄Π΅. Π ΠΎΠ±Π΅Ρ€Ρ‚ ΠœΠ°Ρ€Ρ‚ΠΈΠ½ Π½Π° этот счСт Π΄Π°Π΅Ρ‚ совСт:

НС Ρ‚Ρ€Π°Ρ‚ΡŒΡ‚Π΅ врСмя Π½Π° написаниС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π², ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‰ΠΈΡ… ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ Π²Π°ΠΌΠΈ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρƒ, β€” Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΡŒΡ‚Π΅ Π΅Π³ΠΎ Π½Π° исправлСниС.

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΎΡ‡Π΅Π½ΡŒ большой? Как Π΅Π³ΠΎ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°? На самом Π΄Π΅Π»Π΅, Π½Π΅ стоит Π±ΠΎΡΡ‚ΡŒΡΡ Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… Π½Π°Π·Π²Π°Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Π”Π»ΠΈΠ½Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΉ, Ρ‡Ρ‚ΠΎΠ± ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΡΡƒΡ‚ΡŒ ΠΈ Π½Π΅ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² Π½Π΅Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ тСкст. Π’Π°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ОК:

$rabbit->runUntilFindVegetables();
$rabbit->runForwardAndTurnBackIfMeet([$wolf, $hunter]);

Но Π²ΠΎΡ‚ это ΡƒΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€:

$rabbit->runForwardUntilFindCarrotOrCabbageAndTurnBackIfMeetWolfOrHunter();

Π’Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ тяТСло Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π±Ρ‹Π»Π° Π²Ρ‹Π±Ρ€Π°Π½Π° Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊ-Ρ‚ΠΎ Ρ‚Π°ΠΊ:

$conditions = new Condition();
Β 
$untilCondition    = (new Condition\Until())->findVegetables('carrot', 'cabbage');
$turnBackCondition = (new Condition\TurnBack())->ifMeet('wolf', 'hunter');
Β 
$conditions->add($untilCondition)->add($turnBackCondition);
$rabbit->run(Direction::FORWARD, $conditions);

Π•ΡΡ‚ΡŒ, ΠΏΡ€Π°Π²Π΄Π°, ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² Π΄Π»ΠΈΠ½Π΅ названия ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². НапримСр, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ спСки Π½Π° phpSpec, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ сСбя Π² Π΄Π»ΠΈΠ½Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π³Π»Π°Π²Π½ΠΎΠ΅, Ρ‡Ρ‚ΠΎΠ± ΠΎΠ½ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π» всю ΡΡƒΡ‚ΡŒ. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, взятого ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ phpSpec:

class MovieSpec extends ObjectBehavior
{
    function it_should_have_john_smith_in_the_cast_with_a_lead_role()
    {
        $this->getCast()->shouldHaveKeyWithValue('leadRole', 'John Smith');
    }
}

Π’ спСках для Π½Π°Π·Π²Π°Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ запись underscore, поэтому Π³Π»Π°Π·Ρƒ Π»Π΅Π³Ρ‡Π΅ Π·Π°Ρ†Π΅ΠΏΠΈΡ‚ΡŒΡΡ Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ слов ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ Π½Π΅ ΠΏΠΎ стандарту PSR, Π³Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ camelCase, Π½ΠΎ для ΡƒΠ΄ΠΎΠ±ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ тСстов Ρ‚Π°ΠΊΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚.

Чувство ΠΌΠ΅Ρ€Ρ‹ Π² названиях ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ, с ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ. МоТно ΠΏΠΎΠ΄ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ это Π΄Π΅Π»Π°ΡŽΡ‚ Π² популярных Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°Ρ… ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ….

Π₯арактСристики ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²

Для ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² свойствСнныС Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ характСристики.

ΠΠ΅Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

ΠžΡ‡Π΅Π½ΡŒ часто, мСняя ΠΊΠΎΠ΄, Π·Π°Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ. Π­Ρ‚ΠΎ особСнно Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π½Π°Π΄ ΠΎΠ΄Π½ΠΈΠΌ участком ΠΊΠΎΠ΄Π° трудятся нСсколько программистов. ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π΅ΡΡ‚ΡŒ, Π½ΠΎ ΠΎΠ½ΠΈ написаны ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· программистов, ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π½Π΅ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‡ΡƒΠΆΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π»ΠΈΠ±ΠΎ лСнятся, Π»ΠΈΠ±ΠΎ просто Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅, старый Π½Π΅Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°ΠΏΡƒΡ‚Π°Π΅Ρ‚ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅. РСшСниС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ простоС. Π›ΠΈΠ±ΠΎ всСгда ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π², Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ внимания ΠΈ стараний. Π›ΠΈΠ±ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π½Π΅Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ. ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ коммСнтария Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ устарСлый, Π½Π΅Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ.

Π˜Π·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ

Π­Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ написан Ρ‚Π°ΠΌ, Π³Π΄Π΅ ΠΎΠ½ Π½Π΅ Π½ΡƒΠΆΠ΅Π½, Π³Π΄Π΅ всС понятно ΠΈ Π±Π΅Π· коммСнтария. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, отягощСнного ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌΠΈ коммСнтариями.

// Cut the carrot into 4 pieces
$piecesOfCarrot = $carrot / 4;
// Let the rabbit eat all pieces of carrot one by one
foreach ($piecesOfCarrot as $pieceOfCarrot) {
    $rabbit->eat($pieceOfCarrot); // Rabbit eats the piece of carrot
}

Код останСтся Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ понятным, Ссли ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΡƒΠ±Π΅Ρ€Π΅ΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ.

$piecesOfCarrot = $carrot / 4;
foreach ($piecesOfCarrot as $pieceOfCarrot) {
    $rabbit->eat($pieceOfCarrot);
}

НСполнота

Π’ΠΎ врСмя написания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ быстро Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свою ΠΌΡ‹ΡΠ»ΡŒ Π² Π²ΠΈΠ΄Π΅ коммСнтария сразу Π² ΠΊΠΎΠ΄Π΅. ПозТС Π²Ρ‹ Π²Π΅Ρ€Π½Ρ‘Ρ‚Π΅ΡΡŒ ΠΊ этому мСсту, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ Π²Π°ΡˆΡƒ ΠΌΡ‹ΡΠ»ΡŒ, ΠΈ Π²Ρ‹ смоТСтС Π΅Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ΡΠ»ΡŒ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ»Π°ΡΡŒ Π² ΠΊΠΎΠ΄, Π½Π΅ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ, Π»ΠΈΠ±ΠΎ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ осмыслСнноС. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Π½Π΅ заставляйтС Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉ Π΄ΠΎΠ³Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒΡΡ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΈΠΌΠ΅Π»ΠΈ Π² Π²ΠΈΠ΄Ρƒ. НапримСр, рассмотрим процСсс ΠΏΡ€ΠΈΠ΅ΠΌΠ° ΠΏΠΈΡ‰ΠΈ ΠΊΡ€ΠΎΠ»ΠΈΠΊΠΎΠΌ:

public function eat($food)
{
    switch ($food) {
        case 'carrot':
            $this->getCalories(50);
            break;
        case 'cabbage':
            $this->getCalories(100);
            break;
        default:
            // If the rabbit eats unknown food - it dies :(
            break;
    }
}

Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ, Ρ‡Ρ‚ΠΎ Β«ΠΊΡ€ΠΎΠ»ΠΈΠΊ ΡƒΠΌΡ€Π΅Ρ‚Β»? Π’Β ΠΆΠΈΠ·Π½ΠΈ этот процСсс понятСн. А в программС? Π§Ρ‚ΠΎ Π°Π²Ρ‚ΠΎΡ€ Ρ…ΠΎΡ‚Π΅Π» ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ послС этого? ΠžΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡƒΡŽ ΠΊΡ€ΠΎΠ»ΠΈΠΊΠΎΠΌ? ΠšΠΈΠ½ΡƒΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈΒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π²Β Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС? Π’Β Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ с кроликом Π½ΠΈΡ‡Π΅Π³ΠΎ нС случится, он просто Π½Π΅Β ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ Π½ΠΎΠ²Ρ‹Ρ… ΠΊΠ°Π»ΠΎΡ€ΠΈΠΉ от поСдания Ρ‡Π΅Π³ΠΎ-Π»ΠΈΠ±ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ ΠΌΠΎΡ€ΠΊΠΎΠ²ΠΊΠΈ и капусты. Но для Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, замысСл Π°Π²Ρ‚ΠΎΡ€Π° нСпонятСн. Π‘ΠΊΠΎΡ€Π΅Π΅ всСго Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ ΡƒΠ΄Π°Π»ΠΈΡ‚ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ и сдСлаСт ΠΏΠΎ-своСму.

ΠΠ΅Π΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€Π½ΠΎΡΡ‚ΡŒ

Π›ΡŽΠ΄ΡΠΌ свойствСнно Π΄Π΅Π»Π°Ρ‚ΡŒ ошибки. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρ‹ ΠΈΡ… Π΄Π΅Π»Π°ΡŽΡ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΊΠΎΠ΄Π΅, Π½ΠΎ ΠΈ Π² коммСнтариях. Π›ΠΈΠ±ΠΎ ΠΈΠ·-Π·Π° Π½Π΅Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π»ΠΈΠ±ΠΎ ΠΈΠ·-Π·Π° усталости, Π»ΠΈΠ±ΠΎ ΠΈΠ·-Π·Π° нСзнания иностранного языка Π² ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ вносится ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Π° ΠΈ дСзинформация. К соТалСнию, ΠΎΡ‚ этого Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ застрахован. ЕдинствСнноС, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΎΠ²Π΅Ρ‚ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ‚Π°ΠΊΠΎΠΌ случаС β€” это отвСтствСнно ΠΎΡ‚Π½ΠΎΡΠΈΡ‚ΡŒΡΡ ΠΊ коммСнтариям. Если Π²Ρ‹ ΡƒΠΆΠ΅ Ρ€Π΅ΡˆΠΈΠ»ΠΈΡΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ, Ρ‚ΠΎ ΠΏΠΈΡˆΠΈΡ‚Π΅ Π³Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎ. ΠŸΠ΅Ρ€Ρ„Π΅ΠΊΡ†ΠΈΠΎΠ½ΠΈΠ·ΠΌ Π² коммСнтариях Π½Π΅ ΠΏΠΎΠΌΠ΅ΡˆΠ°Π΅Ρ‚ πŸ™‚

ΠΠ΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ

Π­Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ мСстС ΠΊΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ нСизвСстныС ΠΈΠ»ΠΈ Π½Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹.

// Uses coefficient of rabbit growing per day, which depends on several factors
$rabbit->growInSize();

Π’ΡƒΡ‚ указываСтся, Ρ‡Ρ‚ΠΎ рост ΠΊΡ€ΠΎΠ»ΠΈΠΊΠ° опрСдСляСтся ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ коэффициСнтом (сам ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π» :)), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ зависит ΠΎΡ‚ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ². Π’ Π΄Π°Π½Π½ΠΎΠΌ мСстС нСпонятно, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ коэффициСнт роста ΠΊΡ€ΠΎΠ»ΠΈΠΊΠ° ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ считаСтся. Π§Ρ‚ΠΎΠ± Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ эта функция, всС Ρ€Π°Π²Π½ΠΎ придСтся ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² Π΅Π΅ описаниС ΠΈ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ ΠΊΠΎΠ΄. Π›ΡƒΡ‡ΡˆΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΎΡ‚ΡΡŽΠ΄Π° ΡƒΠ±Ρ€Π°Ρ‚ΡŒ, Π° Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π² описании самой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ?

ΠŸΠΈΡΠ°Ρ‚ΡŒ, Π½ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ€Π°Ρ‚ΡŒ Π·Π° Π½ΠΈΡ… ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ. Π’ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹.

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ

Π’Β Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… мСстах Π±Π΅Π· ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π½Π΅Β ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ. Когда Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° Π³Ρ€ΡƒΠΏΠΏΠ° программистов Π±Ρ‹Π»Π° Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Β«ΠΊΠΎΡΡ‚Ρ‹Π»ΡŒΒ» Π²Β ΠΊΠΎΠ΄Π΅, ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ об этом. ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ, Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΎ Π±Ρ‹Π»ΠΎ сдСлано, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π΅Ρ‚ ΠΈΒ ΠΊΠΎΠ³Π΄Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ исправлСно. Но всС ТС ΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄Π±ΠΈΡ€Π°Ρ‚ΡŒ названия вашим ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΈΒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ.

РСгулярныС выраТСния всСгда мСня вводят Π² ступор ΠΈ приходится Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ достаточно Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Ρ‚ΠΎΠ± ΠΈΡ… Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π½Π΅ ΠΏΠΎΠΌΠ΅ΡˆΠ°Π΅Ρ‚:

// Find all rabbits in locations which
// end on: shire, field, wood
// starts on: yellow, green
// and are not case sensitive
// e.g. Blackshire, Greenfield, Sherwood, SHERWOOD, wood, Yellowstone
$locationsRegExp = '/\b(yellow|green)\w*|\w*(shire|field|wood)\b/i';
$rabbits = $search->findRabbitsInLocations(locationsRegExp);

НамСрСния

ΠžΠ΄Π½Ρƒ ΠΈΒ Ρ‚ΡƒΒ ΠΆΠ΅ Π·Π°Π΄Π°Ρ‡Ρƒ на языкС программирования ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ способами. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚ ΠΈΠΌΠ΅Π΅Ρ‚ собствСнный ΡΡ‚ΠΈΠ»ΡŒ программирования и, знакомясь с кодом Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ программиста, с другим стилСм, Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ тяТСло ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Β«ΠΏΠΎΒ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈΒ». Если Π²Ρ‹Β ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ особым стилСм программирования, Π»ΠΈΠ±ΠΎ ΠΏΠΎΒ ΠΎΠΏΡ‹Ρ‚Ρƒ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Β ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅, тяТСло Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ, то оставляйтС Π²Β ΠΊΠΎΠ΄Π΅ подсказки нСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ слоТного участка ΠΊΠΎΠ΄Π°.

ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΡ

Π‘Ρ‹Π²Π°ΡŽΡ‚ случаи, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠΊΠ° ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρƒ ΠΈΠ»ΠΈ ΠΈΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π΅ установили Π΅Ρ‰Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅, Π»ΠΈΠ±ΠΎ Π½Π΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ» Π²Π΅Π½Π΄ΠΎΡ€), Π»ΠΈΠ±ΠΎ какая-Ρ‚ΠΎ функция выполняСтся ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΠ»Π³ΠΎ ΠΈ Π±Π΅Π· нСобходимости Π΅Π΅ Π»ΡƒΡ‡ΡˆΠ΅ Π½Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ, Π»ΠΈΠ±ΠΎ ΠΈΠ·-Π·Π° большой потрСбности Π² рСсурсах Ρ†ΠΈΠΊΠ» нСльзя Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π₯ Ρ€Π°Π·. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ.

УсилСниС

Когда ΠΎΠ΄Π½Π° строка ΠΊΠΎΠ΄Π° являСтся Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π°ΠΆΠ½ΠΎΠΉ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π° Π½Π΅Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅. НапримСр, ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ со ΠΌΠ½ΠΎΠΉ случился случай, ΠΊΠΎΠ³Π΄Π° Π½Π° стСйдТингС Π½Π΅ Π±Ρ‹Π»Π° Π·Π°Π΄Π°Π½Π° ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° для ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠ±Π°ΠΉΡ‚Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, я ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΠ»Π³ΠΎ искал ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΈ ΠΊΠΎΠ³Π΄Π° нашСл, Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π² свой ΠΊΠΎΠ΄ Ρ€ΡƒΡ‡Π½ΡƒΡŽ установку ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° с ΠΏΠΎΡΡΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ для Ρ‡Π΅Π³ΠΎ это Π½ΡƒΠΆΠ½ΠΎ:

// Set default encoding for MB functions manually to prevent cases when it is missed in config
mb_internal_encoding('UTF-8');

И Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ совСт ΠΎΡ‚ Π ΠΎΠ±Π΅Ρ€Ρ‚Π° ΠœΠ°Ρ€Ρ‚ΠΈΠ½Π°:

НС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΠΊΠΎΠ΄ β€” ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡˆΠΈΡ‚Π΅ Π΅Π³ΠΎ.

Если Π²Π°ΠΌ довСлось Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒΡΡ с Тутко нСпонятным ΠΊΠΎΠ΄ΠΎΠΌ, Π²Ρ‹Β ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π°Β Π΅Π³ΠΎ Ρ€Π°Π·Π±ΠΎΡ€, а послС Ρ€Π΅ΡˆΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ от сСбя ΠΏΠ°Ρ€Ρƒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² для Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Ρ‚ΠΎΒ ΠΊΠΎΠ΄ от этого Π»ΡƒΡ‡ΡˆΠ΅ нС станСт. В этой ситуации, Ρ€Π°Π· Π²Ρ‹Β ΡƒΠΆΠ΅ достаточно Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ с кодом, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π·Π°Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π΄ΠΎΒ Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ состояния. ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ бойскаута гласит: Β«ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ мСсто (ΠΊΠΎΠ΄) Ρ‡ΠΈΡ‰Π΅, Ρ‡Π΅ΠΌ Π±Ρ‹Π»ΠΎ до вашСго ΠΏΡ€ΠΈΡ…ΠΎΠ΄Π°Β».

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΎΠΊΠ±Π»ΠΎΠΊΠΎΠ²

Π•ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²ΠΈΠ΄ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π² PHP, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ свой ΡƒΡΡ‚ΠΎΡΠ²ΡˆΠΈΠΉΡΡ стандарт β€” это Π΄ΠΎΠΊΠ±Π»ΠΎΠΊΠΈ (DocBlock). Для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄ΠΎΠΊΠ±Π»ΠΎΠΊΠΎΠ² сущСствуСт инструмСнт phpDocumentor (Ρ€Π°Π½Π΅Π΅ извСстСн ΠΊΠ°ΠΊ phpDoc). Он ΡƒΠΌΠ΅Π΅Ρ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄ΠΎΠΊΠ±Π»ΠΎΠΊΠΈ ΠΈΠ· ΠΊΠΎΠ΄Π° ΠΈ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π½Π° ΠΈΡ… основС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ. DocBlock β€” это комбинация DocComment ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Π½Ρ‹Ρ… Π² Π½Π΅Π³ΠΎ описаний ΠΏΠΎ стандарту PHPDoc. Π’ PHP Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° C-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… многострочных ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² (DocComment):

/*
 * It is
 * a C-style comment in PHP
 */

Π”ΠΎΠΊΠ±Π»ΠΎΠΊ отличаСтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠΎΠΉ /** Π² Π½Π°Ρ‡Π°Π»Π΅ коммСнтария:

/**
 * It is
 * a PHP docblock
 */

Π”ΠΎΠΊΠ±Π»ΠΎΠΊΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ ΠΎΠ΄Π½Π° строка, Π³Π»Π°Π²Π½ΠΎΠ΅, Ρ‡Ρ‚ΠΎΠ± ΠΎΠ½Π° Π½Π°Ρ‡ΠΈΠ½Π°Π»Π°ΡΡŒ с /**.

/** It is also a docblock */

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ PHPDoc для докумСнтирования PHP-ΠΊΠΎΠ΄Π° Π±Ρ‹Π» Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π° основС ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ javaDoc для языка Java. Π’Π°ΠΆΠ½ΠΎΠΉ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ Π΄ΠΎΠΊΠ±Π»ΠΎΠΊΠΎΠ² ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚Π΅Π³ΠΈ ΠΈ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄Π°ΡŽΡ‚ коммСнтариям ΡΠ΅ΠΌΠ°Π½Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ окраску. Π’Π΅Π³ ΠΈΠ»ΠΈ аннотация начинаСтся с символа @, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

/**
 * Login via email and password
 *
 * @param Request $request Request
 *
 * @return Response
 *
 * @throws BadRequestHttpException
 * @throws UnauthorizedHttpException
 *
 * @Rest\Post("/login")
 */
public function loginAction(Request $request)
{
}

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ @param, @return, @throws ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚Π΅Π³Π°ΠΌΠΈ PHPDoc ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ распрарсСны с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ phpDocrumentor’а. @Rest\Post("/login") β€” это аннотация FOSRestBundle. ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ ΠΎΡ‚ Ρ‚Π΅Π³ΠΎΠ² Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅Π³ΠΈ просто Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ ΠΊΠΎΠ΄, Π° Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ ΠΌΠ΅Π½ΡΡŽΡ‚ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ для ΠΊΠΎΠ΄Π°. ΠžΡ‚Π»ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‡Π΅Ρ€Ρ‚Π° Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ PHP ΠΎΡ‚ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ Java, Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² Java Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ языка, Π° Π² PHP β€” всСго лишь коммСнтариями, ΠΈ Ρ‡Ρ‚ΠΎΠ± ΠΊ Π½ΠΈΠΌ Π΄ΠΎΡΡ‚ΡƒΡ‡Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Ρ„Π»Π΅ΠΊΡΠΈΡŽ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Ρ‚Π°ΠΊΠΆΠ΅ станут Ρ‡Π°ΡΡ‚ΡŒΡŽ PHP, Π° ΠΏΠΎΠΊΠ° для ΠΈΡ… считывания ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎΡ‚ этот парсСр https://github.com/phpDocumentor/ReflectionDocBlock. Π’Π°ΠΊ ΠΆΠ΅ стоит Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ссли ΠΌΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ Π½Π°Ρ‡Π°Π»ΠΎ Π΄ΠΎΠΊΠ±Π»ΠΎΠΊΠ° с /** Π½Π° /* это ΡƒΠΆΠ΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ Π΄ΠΎΠΊΠ±Π»ΠΎΠΊΠΎΠΌ, Π΄Π°ΠΆΠ΅ Ссли Ρ‚Π°ΠΌ Π΅ΡΡ‚ΡŒ Ρ‚Π΅Π³ΠΈ ΠΈΠ»ΠΈ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ, соотвСтствСнно парсСр ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ это мСсто.

Π”ΠΎΠΊΠ±Π»ΠΎΠΊΠΈ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΠΆΠΈΠ»ΠΈΡΡŒ Π² ΠΊΠΎΠΌΠΌΡŽΠ½ΠΈΡ‚ΠΈ PHP-программистов, Ρ‡Ρ‚ΠΎ Π½Π° ΠΈΡ… основС готовится PSR-5 (PHP Standard Recommendation). На ΠΌΠΎΠΌΠ΅Π½Ρ‚ написания ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΎΠ½ Π΅Ρ‰Π΅ находился Π² Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅.

Π’ PHP с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΎΠΊΠ±Π»ΠΎΠΊΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ элСмСнты:

  • Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ;
  • константы;
  • классы;
  • интСрфСйсы;
  • Ρ‚Ρ€Π΅ΠΉΡ‚Ρ‹;
  • константы классов;
  • свойства;
  • ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

Π’Π°ΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ Π΄ΠΎΠΊΠ±Π»ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Ρ‘Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ структурному элСмСнту. Π’.Π΅. Π½Π° ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ β€” свой Π΄ΠΎΠΊΠ±Π»ΠΎΠΊ, Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ β€” свой, для класса β€” свой.

/**
 * Rabbit Class
 *
 * @version 0.1.0
 */
class Rabbit implements RabbitInterface
{
    const STATUS_RUNNING = 'running';
Β 
    /**
     * @var string $status Status
     */
    private $status;
Β 
    /**
     * Set `running` status for the rabbit
     *
     * @return $this
     */
    public function run()
    {
        $this->status = self::STATUS_RUNNING;
Β 
        return $this;
    }
}

Π’ PHPDoc сущСствуСт ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚Π΅Π³ΠΎΠ², Π½ΠΎ Π½Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‚Π΅Π³ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΊΠΎ всСм структурным элСмСнтам. НиТС прСдоставлСн список ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ‚Π΅Π³ΠΎΠ², ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΈΡ… использования ΠΈ объяснСниС.

  • @api (ΠΌΠ΅Ρ‚ΠΎΠ΄) β€” ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒ свою сСмантику Π΄ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΌΠ°ΠΆΠΎΡ€Π½ΠΎΠ³ΠΎ Ρ€Π΅Π»ΠΈΠ·Π°.
  • @author (Π² любом мСстС) β€” ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ имя ΠΈ ΠΈΠΌΠ΅ΠΉΠ» Π°Π²Ρ‚ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ написал ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄.
  • @copyright (Π² любом мСстС) β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ± ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ свой ΠΊΠΎΠΏΠΈΡ€Π°ΠΉΡ‚ Π² ΠΊΠΎΠ΄Π΅.
  • @deprecated (Π² любом мСстС) β€” ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ Ρ‚Π΅Π³, символизируСт, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ элСмСнт исчСзнСт Π² Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… вСрсиях. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ рядом ΠΏΠΈΡˆΡƒΡ‚, ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π·Π°ΠΌΠ΅Π½. Π’Π°ΠΊΠΆΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ IDE ΠΏΠΎΠ΄ΡΠ²Π΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ использованиС ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ стилСм. Когда Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄Ρ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΉ ΠΊΠΎΠ΄ для Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π΅Π»ΠΈΠ·Π°, Ρ‚ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΏΠΎ этому Ρ‚Π΅Π³Ρƒ.
  • @example (Π² любом мСстС) β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для размСщСния ссылки Π½Π° Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ Π²Π΅Π±-страницу, Π³Π΄Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΊΠΎΠ΄Π°. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ phpDocumentor заявляСт ΠΎ Π½Π΅ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ возмоТностСй этого Ρ‚Π΅Π³Π°.
  • @filesource (Ρ„Π°ΠΉΠ») β€” этот Ρ‚Π΅Π³ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° самом Π½Π°Ρ‡Π°Π»Π΅ php-Ρ„Π°ΠΉΠ»Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚Π΅Π³ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ вСсь ΠΊΠΎΠ΄ Ρ„Π°ΠΉΠ»Π° Π² ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ.
  • @global (пСрСмСнная) β€” Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ этот Ρ‚Π΅Π³ Π½Π΅ поддСрТиваСтся, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… вСрсиях, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ пСрСосмыслСн.
  • @ignore (Π² любом мСстС) β€” Π΄ΠΎΠΊΠ±Π»ΠΎΠΊ, Π³Π΄Π΅ ΡƒΠΊΠ°Π·Π°Π½ этот Ρ‚Π΅Π³, Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π²ΠΎ врСмя Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Π΄Π°ΠΆΠ΅ Ссли Π² Π½Π΅ΠΌ Π΅ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚Π΅Π³ΠΈ.
  • @internal (Π² любом мСстС) β€” Ρ‡Π°Ρ‰Π΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ вмСстС с Ρ‚Π΅Π³ΠΎΠΌ @api, Ρ‡Ρ‚ΠΎΠ± ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ этой части ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ этим Ρ‚Π΅Π³ΠΎΠΌ, Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ.
  • @license (Ρ„Π°ΠΉΠ», класс) β€” Ρ‡Ρ‚ΠΎ ΠΆΠ΅ ΠΎΠ½ Π΅Ρ‰Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ для написанного ΠΊΠΎΠ΄Π°.
  • @link (Π² любом мСстС) β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для вставки ссылок, Π½ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΈΡˆΠ΅Ρ‚ докумСнтация, ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‚Π΅Π³Π° ΠΏΠΎΠΊΠ° Π½Π΅ поддСрТиваСтся.
  • @method (класс) β€” примСняСтся ΠΊ классу ΠΈ слуТит для описания магичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ магичСской Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ __call().
  • @package (Ρ„Π°ΠΉΠ», класс) β€” Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π½Π° логичСскиС ΠΏΠΎΠ΄Π³Ρ€ΡƒΠΏΠΏΡ‹. Когда Π²Ρ‹ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚Π΅ классы Π² ΠΎΠ΄ΠΈΠ½ namespace, Π²Ρ‹ Ρ‚Π΅ΠΌ самым ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΡƒΡŽ ΡΡ…ΠΎΠΆΠ΅ΡΡ‚ΡŒ. Если классы Π»Π΅ΠΆΠ°Ρ‚ Π² Ρ€Π°Π·Π½Ρ‹Ρ… нСймспСйсах, Π½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ логичСский ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ, ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΡΠ³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого Ρ‚Π΅Π³Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли Ρƒ вас классы Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ с ΠΊΠΎΡ€Π·ΠΈΠ½ΠΎΠΉ Π·Π°ΠΊΠ°Π·Π° разбросаны ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ мСстам. Но Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ, ΠΏΠΎ ΠΊΠΎΠ΄ стайлу Symfony, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, этот Ρ‚Π΅Π³ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ.
  • @param (ΠΌΠ΅Ρ‚ΠΎΠ΄, функция) β€” ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для описания входящих ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’Π°ΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ ΡƒΠΆΠ΅ взялись ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ входящиС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· Π΄ΠΎΠΊΠ±Π»ΠΎΠΊΠΈ, Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ всС, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈΠ»ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠΉ.
  • @property (класс) β€” Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ @method, этот Ρ‚Π΅Π³ размСщаСтся Π² Π΄ΠΎΠΊΠ±Π»ΠΎΠΊΠ΅ для класса, Π½ΠΎ описываСт свойства, доступ ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ Ρ‡Π΅Ρ€Π΅Π· магичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ __get() ΠΈ __set().
  • @property-read, @property-write (класс) β€” Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ Ρ‚Π΅Π³Ρƒ, Π½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ магичСский ΠΌΠ΅Ρ‚ΠΎΠ΄, __get() ΠΈΠ»ΠΈ __set() соотвСтствСнно.
  • @return (ΠΌΠ΅Ρ‚ΠΎΠ΄, функция) β€” ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для описания значСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция. МоТно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ‚ΠΈΠΏ, ΠΈ PhpStorm ΠΏΠΎΠ΄Ρ…Π²Π°Ρ‚ΠΈΡ‚ Π΅Π³ΠΎ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ подсказки, Π½ΠΎ ΠΎΠ± этом Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅.
  • @see (Π² любом мСстС) β€” с ΠΏΠΎΠΌΠΎΡ‰ΡŒ этого Ρ‚Π΅Π³Π° ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ссылки Π½Π° внСшниС рСсурсы, ΠΊΠ°ΠΊ ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ @link, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ссылки Π½Π° классы ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.
  • @since (Π² любом мСстС) β€” ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ появился кусок ΠΊΠΎΠ΄Π°.
  • @source (Π² любом мСстС, ΠΊΡ€ΠΎΠΌΠ΅ Π½Π°Ρ‡Π°Π»Π° Ρ„Π°ΠΉΠ»Π°) β€” с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого Ρ‚Π΅Π³Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ участки исходного ΠΊΠΎΠ΄Π° (задаСтся строка Π½Π°Ρ‡Π°Π»Π° ΠΈ ΠΊΠΎΠ½Ρ†Π°).
  • @throws (ΠΌΠ΅Ρ‚ΠΎΠ΄, функция) β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для указания ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Ρ‹ Π² Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
  • @todo (Π² любом мСстС) β€” самый оптимистичСски Ρ‚Π΅Π³, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ программистами, Ρ‡Ρ‚ΠΎΠ± Π½Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ сСбС Π΄ΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, ΠΊΠΎΠ³Π΄Π°-Ρ‚ΠΎ Π² ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ участкС ΠΊΠΎΠ΄Π°. IDE ΡƒΠΌΠ΅ΡŽΡ‚ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Ρ‚ΡŒ этот Ρ‚Π΅Π³ ΠΈ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΡŽΡ‚ всС участки ΠΊΠΎΠ΄Π° Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΎΠΊΠ½Π΅, ΡƒΠ΄ΠΎΠ±Π½ΠΎ для Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ поиска. Π­Ρ‚ΠΎ общСпринятый стандарт ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΡ‡Π΅Π½ΡŒ часто.
  • @uses (Π² любом мСстС) β€” ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для отобраТСния связи ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ участками ΠΊΠΎΠ΄Π°. Он Ρ‡Π΅ΠΌ-Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° @see, Π½ΠΎ Ρ€Π°Π·Π½ΠΈΡ†Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ @see создаСт ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΡƒΡŽ ссылку, Ρ‚.Π΅. послС ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° Π½ΠΎΠ²ΡƒΡŽ страницу Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Ρƒ вас Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ссылки Π½Π°Π·Π°Π΄, Π° @uses Π² процСссС Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ставит ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ссылку, Ρ‚.Π΅. ссылку для ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ.
  • @var (пСрСмСнная) β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для указания Ρ‚ΠΈΠΏΠ° ΠΈ описания ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠ°ΠΊ Ρ‚Π΅Ρ…, Ρ‡Ρ‚ΠΎ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ‚Π°ΠΊ ΠΈ свойств класса. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΡƒΡ‡Π΅ΡΡ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ этим Ρ‚Π΅Π³ΠΎΠΌ ΠΈ Ρ‚Π΅Π³ΠΎΠΌ @param. Π’Π΅Π³ @param ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π΄ΠΎΠΊΠ±Π»ΠΎΠΊΠ°Ρ… для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ описываСт входящиС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Π° @var ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для докумСнтирования ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….
  • @version (Π² любом мСстС) β€” ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ появился Π΄Π°Π½Π½Ρ‹ΠΉ класс, ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ Ρ‚.Π΄.

Π£ΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ Ρ‚Π΅Π³ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, скорСС всСго, Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ:

  • @category (Ρ„Π°ΠΉΠ», класс) β€” использовался для группирования ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² вмСстС.
  • @subpackage (Ρ„Π°ΠΉΠ», класс) β€” использовался для выдСлСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π³Ρ€ΡƒΠΏΠΏ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ….

НС всС Ρ‚Π΅Π³ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ популярны, Ρ‡Π°Ρ‰Π΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ: @var, @param, @return, @todo, @throws, ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ β€” Ρ€Π΅ΠΆΠ΅. А Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ @property ΠΈ @method я Π²ΠΎΠΎΠ±Ρ‰Π΅ Π΅Ρ‰Π΅ Π½Π΅ встрСчал Π² ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Β«Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с магиСй» Π² PHP β€” опасно πŸ™‚

Удобство использования Π΄ΠΎΠΊΠ±Π»ΠΎΠΊΠΎΠ² Π² IDE

Если Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ open source ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Ρ‚ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ API с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΎΠΊΠ±Π»ΠΎΠΊΠΎΠ² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ. Π­Ρ‚ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ваш ΠΊΠΎΠ΄ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π² своих IDE. Π§Ρ‚ΠΎ касаСтся вашСго ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° для аутсорс ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Ρ‚ΠΎ использованиС Π΄ΠΎΠΊΠ±Π»ΠΎΠΊΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ умСстным, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΡΠΎΠ²Π΅Ρ‚ΡƒΡŽ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, это Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ускорит Π²Π°ΡˆΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ.

Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° возьмСм ΡΠ°ΠΌΡƒΡŽ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΡƒΡŽ IDE для PHP β€” PhpStorm. Рассмотрим ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ поиска ΠΊΡ€ΠΎΠ»ΠΈΠΊΠΎΠ²:

$rabbits = $search->findRabbitsInLocations('/Sherwood/');
foreach ($rabbits as $rabbit) {
    $rabbit->doSomething();
}

Π§Ρ‚ΠΎ хранят Π² сСбС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ $rabbits ΠΈ $rabbit? PhpStorm ΠΎΠ± этом Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚. PHP β€” язык слабо Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ, Ρ‚ΠΈΠΏ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ задаСтся ТСстко ΠΈΠ· Π΅Π΅ описания (ΠΏΡ€ΠΈΠ²Π΅Ρ‚ PHP7, Π³Π΄Π΅ это Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ вашСй IDE Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡΠΊΠ°Π·Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΎΠΊΠ±Π»ΠΎΠΊΠΎΠ², ΠΊΠ°ΠΊ вСсти сСбя с Ρ‚Π΅ΠΌ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π΅ΡΡ‚ΡŒ нСсколько. МоТно ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

/** @var Rabbit $rabbit */
foreach ($rabbits as $rabbit) {
    $rabbit->doSomething();
}

Или Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚Π΅Π³ @return Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ findRabbitsInLocations:

/**
 * @return Rabbit[]
 */
public function findRabbitsInLocations($locations)
{
    // some operations here...
    return [];
}

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ Rabbit[], Π° Π½Π΅ Rabbit. ΠšΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки Π΄Π°ΡŽΡ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ возвращаСтся массив ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² класса Rabbit, Ссли ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки ΡƒΠ±Ρ€Π°Ρ‚ΡŒ, Ρ‚ΠΎ это Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ экзСмпляр класса Rabbit. Π•Ρ‰Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ @return null|Rabbit[], Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ ΠΏΠ°Π»ΠΊΠ° ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Β«Π˜Π›Π˜Β», Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Π΅Ρ€Π½Π΅Ρ‚ Π»ΠΈΠ±ΠΎ массив ΠΊΡ€ΠΎΠ»ΠΈΠΊΠΎΠ², Π»ΠΈΠ±ΠΎ null.

НСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ способ указания Ρ‚ΠΈΠΏΠ° Π²Ρ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ, PhpStorm Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ Π²Π°ΠΌ подсказки, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚Π΅ $rabbit-> ΠΈ ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π΅Ρ‚Π΅ ΠΌΠ³Π½ΠΎΠ²Π΅Π½ΠΈΠ΅:

Π’Π°ΠΊ происходит ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ PhpStorm Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ $rabbits возвращаСтся массив ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² класса Rabbit. Π”Π°Π»Π΅Π΅ Π² Ρ†ΠΈΠΊΠ»Π΅ foreach пСрСмСнная $rabbit ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ элСмСнт массива, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся экзСмпляром класса Rabbit ΠΈ PhpStorm ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π²Π°ΠΌ доступныС ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΠ· этого класса.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½Π΅ ΠΎΡ‚Ρ€Ρ‹Π²Π°ΡΡΡŒ ΠΎΡ‚ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ классы с ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ написали ваши ΠΊΠΎΠ»Π»Π΅Π³ΠΈ. PhpStorm Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ Π²Π°ΠΌ подсказки, ΠΈ Ссли ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π°Π·Π²Π°Π½ понятно, Π²Ρ‹ смоТСтС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π΄Π°ΠΆΠ΅ Π±Π΅Π· чтСния Π΅Π³ΠΎ исходного ΠΊΠΎΠ΄Π° ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° полСзная Ρ„ΠΈΡ‡Π° Π΄ΠΎΠΊΠ±Π»ΠΎΠΊΠΎΠ² Π² ΠΏΠ°Ρ€Π΅ с PhpStorm β€” это прСдупрСТдСния ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ…. Π”ΠΎΠΏΠΈΡˆΠ΅ΠΌ Π΄ΠΎΠΊΠ±Π»ΠΎΠΊ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса Rabbit:

/**
 * Run in metres
 *
 * @param int $metres Metres
 */
public function runInMetres($metres)
{
    // some operations here...
}

Π’ΡƒΡ‚ ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π½Π° Π²Ρ…ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ†Π΅Π»ΠΎΠ΅ число (ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅, Π² PHP7 это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π΄Π°Ρ‚ΡŒ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ синтаксиса самого языка). Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Ссли ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΄ΠΈΠΌ Π² этот ΠΌΠ΅Ρ‚ΠΎΠ΄ массив?

PhpStorm Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ Ρ†Π²Π΅Ρ‚ΠΎΠΌ ΠΈ выдаст Π²Π°ΠΌ подсказку, Ρ‡Ρ‚ΠΎ Π½Π° Π²Ρ…ΠΎΠ΄ оТидаСтся int, Π° Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ array. Π£Π΄ΠΎΠ±Π½ΠΎ, ΠΏΡ€Π°Π²Π΄Π°? Π’Π°ΠΊ ΠΆΠ΅ подсказки Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΈ Π½Π° нСсоотвСтствиС классов, интСрфСйсов. Если ваш ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ нСсколько Ρ‚ΠΈΠΏΠΎΠ² для входящих Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Ρ‚ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅ ΠΈΡ… Ρ‚Π°ΠΊΠΆΠ΅ Ρ‡Π΅Ρ€Π΅Π· |. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Ссли ΠΌΠ΅Ρ‚ΠΎΠ΄ runInMetres() Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΌΠ΅Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ массивы, Ρ‚ΠΎ Π² Π΄ΠΎΠΊΠ±Π»ΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Β«@param int|array $metres MetresΒ» ΠΈ PhpStorm пСрСстанСт Ρ€ΡƒΠ³Π°Ρ‚ΡŒΡΡ.

PhpStorm Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΌΠ΅Π΅Ρ‚ сам Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΊΠ±Π»ΠΎΠΊΠΈ. ΠŸΠΎΡΡ‚Π°Π²Ρ‚Π΅ курсор строкой Π²Ρ‹ΡˆΠ΅ Π½Π° объявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, класса ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½Π°Π±Π΅Ρ€ΠΈΡ‚Π΅ /** ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Enter, IDE сгСнСрит Π²Π°ΠΌ Π΄ΠΎΠΊΠ±Π»ΠΎΠΊ ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ, ΠΏΠΎ ТСланию ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ. Π’Π°ΠΊΠΆΠ΅ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ Π΄ΠΎΠΊΠ±Π»ΠΎΠΊΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Alt + Insert.

Как ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ стили коммСнтирования

Π­Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Ссли всС участники ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΡΠΎΠ±Π»ΡŽΠ΄Π°ΡŽΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ для PHPDoc. Но всС ΠΆΠ΅ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ всС Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ‡Π°Π»ΡŒΠ½Π΅Π΅. ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ стандарт получаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρƒ пСрфСкционистов, Π»ΠΈΠ±ΠΎ Ρƒ Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π΄ΠΎΠ»Π³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄ΠΎΠΊΠ±Π»ΠΎΠΊΠ°ΠΌΠΈ ΠΈ это Ρƒ Π½ΠΈΡ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ. Π•ΡΡ‚ΡŒ катСгория программистов-Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΊΠ±Π»ΠΎΠΊΠΈ, Π½ΠΎ Π·Π°Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΈΡ… ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π»ΠΈΠ±ΠΎ Π΅Ρ‰Π΅ Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ с Ρ‚Π΅ΠΌ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹ΠΌ Ρ‚Π΅Π³ΠΎΠΌ. Ну ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, Π΅ΡΡ‚ΡŒ ΡƒΠΏΠ΅Ρ€Ρ‚Ρ‹Π΅ люди, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ это, Π΄Π°ΠΆΠ΅ Ссли ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° согласилась Π΄Π΅Π»Π°Ρ‚ΡŒ.

Π§Ρ‚ΠΎΠ± ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ дискомфорт, Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ участника ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² PhpStorm ΠΈΠ½ΡΠΏΠ΅ΠΊΡ†ΠΈΡŽ Π΄ΠΎΠΊΠ±Π»ΠΎΠΊΠΎΠ² ΠΈ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ‚Π°ΠΌ всС Π³Π°Π»ΠΎΡ‡ΠΊΠΈ:

Π’Π°ΠΊ ΠΆΠ΅ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PHP CodeSniffer (phpcs) с подходящим Π²Π°ΠΌ ΠΊΠΎΠ΄ стайлом. НС ΡƒΠ²Π΅Ρ€Π΅Π½, ΠΊΠ°ΠΊ насчСт всСх ΠΊΠΎΠ΄ стайлов, Π½ΠΎ для Symfony Π΄ΠΎΠΊΠ±Π»ΠΎΠΊΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ phpcs Π² Π¨Ρ‚ΠΎΡ€ΠΌΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ Π²Π°ΠΌ прСдупрСТдСния Π½Π° Π»Π΅Ρ‚Ρƒ. Настройки Π΄Π΅Π»Π°ΡŽΡ‚ΡΡ Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ мСстС, Π° Π²ΠΎΡ‚ Π΅Ρ‰Π΅ Π΅ΡΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ инструкция.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ это нС заставит всСх Π½Π°Β 100% ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€Π°Π²ΠΈΠ». Но особСнных Π»Π΅Π½ΠΈΠ²Ρ†Π΅Π² ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠΉ Ρ†ΠΈΡ‚Π°Ρ‚ΠΎΠΉ ΠΈΠ·Β ΠΊΠ½ΠΈΠ³ΠΈ «Чистый ΠΊΠΎΠ΄Β», ΠΏΡ€Π°Π²Π΄Π°, это большС ΠΎΡ‚Π½ΠΎΡΠΈΡ‚ΡŒΡΡ ΠΊΒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΊΠΎΠ΄Π°, но смысл Ρ‚ΠΎΡ‚Β ΠΆΠ΅:

Β«ΠŸΡ€Π°Π²ΠΈΠ»Π° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒΡΡ всСми участниками Π³Ρ€ΡƒΠΏΠΏΡ‹. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ участник Π³Ρ€ΡƒΠΏΠΏΡ‹ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ достаточно Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ: Π½Π΅Π²Π°ΠΆΠ½ΠΎ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ всС согласились Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠΈΡ…Β ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.Β»

ГСнСрация Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ phpDocumentor

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° всС ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΡ€Π°Π²ΠΈΠ», ΠΈ ваш ΠΊΠΎΠ΄ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ Π΄ΠΎΠΊΠ±Π»ΠΎΠΊΠ°ΠΌΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ. ΠŸΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ всю Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΏΠΎ phpDocumentor Π½Π΅ Π±ΡƒΠ΄Ρƒ, всСго лишь ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС.

Π˜Ρ‚Π°ΠΊ, Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ phpDocumentor. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ глобально Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

$ wget http://www.phpdoc.org/phpDocumentor.phar
$ chmod +x phpDocumentor.phar
$ sudo mv phpDocumentor.phar /usr/local/bin/phpdoc
$ phpdoc --version

Π›ΠΈΠ±ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π² composer.json вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

$ composer require --dev "phpdocumentor/phpdocumentor:2.*"

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, Π½Π°Ρ…ΠΎΠ΄ΡΡΡŒ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΏΠΎΠΊΡ€Ρ‹Π»ΠΈ Π΄ΠΎΠΊΠ±Π»ΠΎΠΊΠ°ΠΌΠΈ, просто запуститС ΠΈΠ· консоли:

$ phpdoc -d src/

Как я ΠΈ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π», это самый ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ дСйствий для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, опция -d src/ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. БгСнСрированная докумСнтация Π±ΡƒΠ΄Π΅Ρ‚ создана Π² ΠΏΠ°ΠΏΠΊΠ΅ output. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, Ρƒ этой ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Π΅ΡΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ ΠΎΠ½Π° ΡƒΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·Π½Ρ‹Π΅ ΡˆΡ‚ΡƒΠΊΠΈ. А Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ сгСнСрированная докумСнтация Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊ, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ шаблон ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свой.

ГСнСрация Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Sami

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ инструмСнт для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ php-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π½Π° основС Π΄ΠΎΠΊΠ±Π»ΠΎΠΊΠΎΠ² β€” ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° Sami. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠ½Π° Π½Π΅ такая извСстная, Π½ΠΎ я Ρ€Π΅ΡˆΠΈΠ» Π΅Π΅ ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Sami гСнСрируСтся докумСнтация нашСй любимой Symfony.

ΠšΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ β€” ДокумСнтация Webasyst

Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Webasyst позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слуТСбныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ посрСдством интСрфСйса ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки сСрвСра (CLI). Π‘Π»ΡƒΠΆΠ΅Π±Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² собствСнных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²: ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ².


Для выполнСния слуТСбных ΠΊΠΎΠΌΠ°Π½Π΄ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ доступ ΠΊ Π²Π΅Π±-сСрвСру, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ установлСн Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, консоль (Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π») ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΈΠ»ΠΈ SSH. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ выполняСтся Π²Ρ‹Π·ΠΎΠ² ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° PHP с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° wa.php, располоТСнного Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°.



  • createApp

    Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ прилоТСния.


  • createPlugin

    Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Π° для прилоТСния.


  • createSystemplugin

    Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ систСмного ΠΏΠ»Π°Π³ΠΈΠ½Π°.


  • createTheme

    Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚Π΅ΠΌΡ‹ Π΄ΠΈΠ·Π°ΠΉΠ½Π°.


  • createWidget

    Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°.


  • generateDb

    Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° описания Ρ‚Π°Π±Π»ΠΈΡ† Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….


  • compress

    ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠΎΠ΄Π° ΠΈ сТатиС исходных Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Π°Ρ€Ρ…ΠΈΠ² для ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½Π΅ Webasyst.

php wa.php

createApp app_id parameters


Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ², Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ прилоТСния Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ wa-apps/[app_id]/.


ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹



  • app_id

    Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ прилоТСния (строка Π² Π½ΠΈΠΆΠ½Π΅ΠΌ рСгистрС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, myapp).


  • parameters

    ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

    • -name: НазваниС прилоТСния; Ссли Π½Π°Π·Π²Π°Π½ΠΈΠ΅ состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… слов, Ρ‚ΠΎ Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ‘My app’.
    • -version: ВСрсия прилоТСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1.0.0.
    • -vendor: Числовой ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.
    • -frontend: Π˜ΠΌΠ΅Π΅Ρ‚ Π»ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ (ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎ доступныС страницы).
    • -themes: ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π»ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΌ Π΄ΠΈΠ·Π°ΠΉΠ½Π° (доступно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ -frontend:).
    • -plugins: ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π»ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ².
    • -cli: Π˜ΠΌΠ΅ΡŽΡ‚ΡΡ Π»ΠΈ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку β€” для выполнСния Π·Π°Π΄Π°Π½ΠΈΠΉ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ° (cron).
    • -api: ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ Π»ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ API.
ΠŸΡ€ΠΈΠΌΠ΅Ρ€


php wa.php createApp myapp -name 'My app' -version 1.0.0 -vendor 123456 -frontend -themes -plugins -cli -api





php wa.php

createPlugin app_id plugin_id parameters


Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ², Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½Π° ΠΊ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ wa-apps/[app_id]/plugins/[plugin_id].


ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹



  • app_id

    Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ прилоТСния (строка Π² Π½ΠΈΠΆΠ½Π΅ΠΌ рСгистрС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, myapp).


  • plugin_id

    Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΠ»Π°Π³ΠΈΠ½Π° (строка Π² Π½ΠΈΠΆΠ½Π΅ΠΌ рСгистрС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, myplugin).


  • parameters

    ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

    • -name: НазваниС ΠΏΠ»Π°Π³ΠΈΠ½Π°; Ссли Π½Π°Π·Π²Π°Π½ΠΈΠ΅ состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… слов, Ρ‚ΠΎ Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ‘My plugin’.
    • -version: ВСрсия ΠΏΠ»Π°Π³ΠΈΠ½Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1.0.0.
    • -vendor: Числовой ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.
    • -frontend: Π˜ΠΌΠ΅Π΅Ρ‚ Π»ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π° (ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎ доступных страниц).
    • -settings: Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π»ΠΈ Π² ΠΏΠ»Π°Π³ΠΈΠ½Π΅ собствСнный интСрфСйс настроСк (Π² качСствС Π·Π°ΠΌΠ΅Π½Ρ‹ стандартному).
ΠŸΡ€ΠΈΠΌΠ΅Ρ€


php wa.php createPlugin someapp myplugin -name 'My plugin' -version 1.0.0 -vendor 123456 -frontend -settings





php wa.php

createSystemplugin type plugin_id parameters


Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ², Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ систСмного ΠΏΠ»Π°Π³ΠΈΠ½Π° ΠΎΠΏΠ»Π°Ρ‚Ρ‹, доставки ΠΈΠ»ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ SMS Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ wa-plugins/[type]/[plugin_id].


ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹



  • type

    Π’ΠΈΠΏ ΠΏΠ»Π°Π³ΠΈΠ½Π°: payment, shipping ΠΈΠ»ΠΈ sms.


  • plugin_id

    Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΠ»Π°Π³ΠΈΠ½Π° (строка Π² Π½ΠΈΠΆΠ½Π΅ΠΌ рСгистрС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, myplugin).


  • parameters

    ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

    • -name: НазваниС ΠΏΠ»Π°Π³ΠΈΠ½Π°; Ссли Π½Π°Π·Π²Π°Π½ΠΈΠ΅ состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… слов, Ρ‚ΠΎ Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ‘My shipping’.
    • -version: ВСрсия ΠΏΠ»Π°Π³ΠΈΠ½Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1.0.0.
    • -vendor: Числовой ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.
    • -settings: ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ Π»ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ интСрфСйс для сохранСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… настроСк.
    • -prototype: Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ установлСнного систСмного ΠΏΠ»Π°Π³ΠΈΠ½Π° Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ°, исходный ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС ΠΎΠ±Ρ€Π°Π·Ρ†Π° для создания Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½Π°.
ΠŸΡ€ΠΈΠΌΠ΅Ρ€


php wa.php createSystemplugin shipping myplugin -name 'My shipping' -version 1.0.0 -vendor 123456 -prototype courier





php wa.php

createTheme app_id[,app_id_2[,…]] theme_id parameters


Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ², Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½ΠΎΠ²ΠΎΠΉ Ρ‚Π΅ΠΌΡ‹ Π΄ΠΈΠ·Π°ΠΉΠ½Π°.


ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹



  • app_id[,app_id_2[,…]]

    Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΠ΄Π½ΠΎΠ³ΠΎ прилоТСния ΠΈΠ»ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ. ВмСсто пСрСчислСния всСх ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π°, доступных Π² Π±Π΅ΠΊΠ΅Π½Π΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ символ * (Π·Π²Ρ‘Π·Π΄ΠΎΡ‡ΠΊΠ°).


  • theme_id

    Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚Π΅ΠΌΡ‹ Π΄ΠΈΠ·Π°ΠΉΠ½Π° (строка Π² Π½ΠΈΠΆΠ½Π΅ΠΌ рСгистрС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, mytheme).


  • parameters

    ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

    • -name: НазваниС Ρ‚Π΅ΠΌΡ‹ Π΄ΠΈΠ·Π°ΠΉΠ½Π°; Ссли Π½Π°Π·Π²Π°Π½ΠΈΠ΅ состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… слов, Ρ‚ΠΎ Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ‘My widget’.
    • -parent: Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ‚Π΅ΠΌΡ‹ Π΄ΠΈΠ·Π°ΠΉΠ½Π°.
    • -version: ВСрсия Ρ‚Π΅ΠΌΡ‹ Π΄ΠΈΠ·Π°ΠΉΠ½Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1.0.0.
    • -vendor: Числовой ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.
    • -prototype: Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ установлСнной Ρ‚Π΅ΠΌΡ‹, которая Π±ΡƒΠ΄Π΅Ρ‚ использована Π² качСствС ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ°. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² качСствС ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π΅ΠΌΠ° Π΄ΠΈΠ·Π°ΠΉΠ½Π° с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ default.
ΠŸΡ€ΠΈΠΌΠ΅Ρ€


php wa.php createTheme site,shop,blog mytheme -name 'My theme' -version 1.0.0 -vendor 123456 -prototype dummy





php wa.php

createWidget app_id widget_id parameters


Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ², Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°.


ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹



  • app_id

    Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ прилоТСния. Если Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ общСсистСмный ΠΏΠ»Π°Π³ΠΈΠ½ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ wa-widgets/, слСдуСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ прилоТСния webasyst.


  • widget_id

    Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° (строка Π² Π½ΠΈΠΆΠ½Π΅ΠΌ рСгистрС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, mywidget).


  • parameters

    ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

    • -name: НазваниС Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°; Ссли Π½Π°Π·Π²Π°Π½ΠΈΠ΅ состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… слов, Ρ‚ΠΎ Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ‘My widget’.
    • -version: ВСрсия Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1.0.0.
    • -vendor: Числовой ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.
    • -settings: ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ Π»ΠΈ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ интСрфСйс для сохранСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… настроСк.
ΠŸΡ€ΠΈΠΌΠ΅Ρ€


php wa.php createWidget shop mywidget -name 'My widget' -version 1.0.0 -vendor 123456 -settings





php wa.php

generateDb app_id/plugin_id tables -update


Π€ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ Π»ΠΈΠ±ΠΎ обновляСт ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» описания Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… прилоТСния ΠΈΠ»ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Π° lib/config/db.php.


ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹



  • app_id

    Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ прилоТСния (строка Π² Π½ΠΈΠΆΠ½Π΅ΠΌ рСгистрС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, myapp).


  • plugin_id

    ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΠ»Π°Π³ΠΈΠ½Π° β€” Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» db.php для ΠΏΠ»Π°Π³ΠΈΠ½Π°, Π° Π½Π΅ прилоТСния.


  • tables

    Бписок Π½Π°Π·Π²Π°Π½ΠΈΠΉ Ρ‚Π°Π±Π»ΠΈΡ†, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ, описания ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Ρ„Π°ΠΉΠ».


  • -update

    ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ содСрТимоС ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ„Π°ΠΉΠ»Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ для прилоТСния


#созданиС Ρ„Π°ΠΉΠ»Π° db.php
php wa.php generateDb myapp myapp_items myapp_types

#ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° db.php
php wa.php generateDb myapp myapp_items myapp_types -update


ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ для ΠΏΠ»Π°Π³ΠΈΠ½Π°


#созданиС Ρ„Π°ΠΉΠ»Π° db.php
php wa.php generateDb someapp/myplugin myplugin_items myplugin_types

#ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° db.php
php wa.php generateDb someapp/myplugin myplugin_items myplugin_types -update





php wa.php

compress slug params


ВыполняСт Π±Π°Π·ΠΎΠ²ΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ сТатиС исходных Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Π°Ρ€Ρ…ΠΈΠ² для ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½Π΅ Webasyst.


ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹


ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹


# ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π±Π΅Π· ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ… сторон ΠΈ ΡΠΆΠ°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Π² Π°Ρ€Ρ…ΠΈΠ²
php wa.php compress someapp/plugins/myplugin

# ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ вмСстС c ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°ΠΌΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ… сторон ΠΈ ΡΠΆΠ°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Π² Π°Ρ€Ρ…ΠΈΠ²
php wa.php compress someapp/plugins/myplugin -style true

# ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π±Π΅Π· ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ… сторон, Π½Π΅ сТимая Ρ„Π°ΠΉΠ»Ρ‹ Π² Π°Ρ€Ρ…ΠΈΠ²
php wa.php compress someapp/plugins/myplugin -skip compress

# ΡΠΆΠ°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Π² Π°Ρ€Ρ…ΠΈΠ² Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ
php wa.php compress someapp/plugins/myplugin -skip test




PHP | Русскоязычная докумСнтация ΠΏΠΎ Ubuntu

Начиная с вСрсии Ubuntu 16.04 (Xenial Xerus) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ PHP вСрсии 7. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ PHP вСрсии 5 (Π² Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΡ… вСрсиях Ubuntu) находится Π½Π° страницС PHP5.

PHP – скриптовый язык программирования ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния, интСнсивно примСняСмый для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

ВСрсии PHP Π² Ubuntu

Ubuntu PHP
12.04 LTS (Precise) 5.3
14.04 LTS (Trusty) 5.5
15.10 (Wily) 5.6
16.04 LTS (Xenial) 7.0
18.04 LTS 7.2

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования PHP

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ PHP поставляСтся Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ… для Ρ€Π°Π·Π½Ρ‹Ρ… способов запуска ΠΈ использования PHP:

ΠœΠΎΠ΄ΡƒΠ»ΡŒ для Apache

Установка

Для установки Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:

sudo apt-get install libapache2-mod-php

Настройка

Π€Π°ΠΉΠ»Ρ‹ настройки PHP модуля для Apache Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ /etc/php/7.0/apache2. Данная дирСктория содСрТит:

  • conf.d — дирСктория с настройками Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… PHP-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ;
  • php.ini — Ρ„Π°ΠΉΠ» настройки PHP.

ПослС измСнСния Ρ„Π°ΠΉΠ»ΠΎΠ² настройки PHP ΠΈΠ»ΠΈ измСнСния PHP-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ трСбуСтся пСрСзапуск сСрвСра Apache:

sudo service apache2 reload

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π’ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ /var/www/html (ΠΈΠ»ΠΈ Π² ΠΊΠΎΡ€Π½Π΅ любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ хоста) создайтС Ρ„Π°ΠΉΠ» test.php ΠΈ Π·Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π² Π½Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ строку:

<?php phpinfo();

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π² своСм Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ страницу http://localhost/test.php. Если Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ описаниС установлСнного PHP, Π·Π½Π°Ρ‡ΠΈΡ‚ Π²Ρ‹ всС настроили ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

php-fpm

FPM (ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ процСссов FastCGI) являСтся Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ PHP FastCGI с нСсколькими Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ возмоТностями, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ для высоконагруТСнных сайтов.

Установка

Для установки Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:

Если установлСн libmod-php Ρ‚ΠΎ Π΅Π³ΠΎ Π½Π°Π΄ΠΎ сначала Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ sudo a2dismod a2dismod php7.2.conf

sudo apt-get install php-fpm
sudo a2enmod proxy_fcgi
sudo a2enconf php7.2-fpm.conf

Настройка

Π€Π°ΠΉΠ»Ρ‹ настройки PHP Π² Π²ΠΈΠ΄Π΅ модуля для Apache Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ /etc/php/7.0/fpm. Данная дирСктория содСрТит:

ПослС измСнСния Ρ„Π°ΠΉΠ»ΠΎΠ² настройки PHP ΠΈΠ»ΠΈ измСнСния PHP-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ трСбуСтся пСрСзапуск FPM:

sudo service php7.0-fpm reload
sudo systemctl restart apache2

CLI

CLI (ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки) прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Π΅ прилоТСния Π½Π° PHP.

Установка

Для установки Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:

sudo apt-get install php-cli

Настройка

Π€Π°ΠΉΠ»Ρ‹ настройки CLI Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ /etc/php/7.0/cli. Данная дирСктория содСрТит:

  • conf.d — дирСктория с настройками Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… PHP-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ;
  • php.ini — Ρ„Π°ΠΉΠ» настройки PHP.

PHP Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» Π² PHP Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ. НСкоторыС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΌΠΎΠ³ΡƒΡ‚ сразу ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒΡΡ с ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ, Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ слСдуСт ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ.

Установка

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊ PHP Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅, Π½Π°Π΄ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ. НиТС ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ установки Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ.

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ GD:

sudo apt-get install php-gd

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ MySQL:

sudo apt-get install php-mysql

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Mcrypt:

sudo apt-get install php-mcrypt

Настройка

Π€Π°ΠΉΠ»Ρ‹ настроСк доступных Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ /etc/php/7.0/mods-available. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° запуска ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° сущСствуСт своя дирСктория conf.d Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находятся ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ссылки Π½Π° Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ.

Установка Π΄Ρ€ΡƒΠ³ΠΈΡ… вСрсий PHP

Π”Π°Π½Π½Ρ‹ΠΉ способ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ PHP, Π½Π΅ Π²Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽ Π² стандартныС Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ вашСй вСрсии Ubuntu. Для установки ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈΠ· PPA.

1. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ список установлСнных ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² PHP для удалСния Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ…:

dpkg -l | grep php| awk '{print $2}' |tr "\n" " "

2. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ PPA Π² список Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π²:

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update

3. УстановитС Π²Π°ΡˆΡƒ Π²Π΅Ρ€ΡΠΈΡŽ PHP.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ установки PHP вСрсии 5.6:

sudo apt-get install php5.6

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ установки Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ для PHP вСрсии 5.6:

sudo apt-get install php5.6-mbstring php5.6-mcrypt php5.6-mysql php5.6-xml

Бсылки

ДокумСнтация/PHP




Β Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹
Β Β PHP скрипты Β Β 
Β Β Flash скрипты Β Β 
Β Β Javascript скрипты Β Β 

Β Π‘ΠΎΡ„Ρ‚
Β Β Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ SEO Β Β 
Β Β Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сайтов Β Β 
Β Β Π‘Π΅Ρ€Π²Π΅Ρ€Π½ΠΎΠ΅ ПО Β Β 

 ДокумСнтация
Β Β MySQL Β Β 
Β Β PHP Β Β 
Β Β HTML Β Β 
Β Β ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ ΠΈ сСрвисы Internet Β Β 

Β Π‘Ρ‚Π°Ρ‚ΡŒΠΈ
Β Β PHP Β Β 
Β Β MySQL Β Β 
Β Β Π‘Π΅Ρ€Π²Π΅Ρ€ Β Β 
Β Β Π΅Ρ‰Π΅… Β Β 

 Услуги ΠΈ сСрвисы
Β Β Π”ΠΎΠΌΠ΅Π½Ρ‹ Β Β 
Β Β Π₯остинги Β Β 
Β Β Π‘Π»ΠΎΠΊΠΈ для сайта Β Β 

 Новости





Β ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹


Β Β icq: 158325531

Β Β email:

  всС ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹: здСсь




Atom всС поступлСния
Π Π°Π·Π΄Π΅Π» Π€Π°ΠΉΠ»Ρ‹
Π Π°Π·Π΄Π΅Π» Услуги ΠΈ сСрвисы
Π Π°Π·Π΄Π΅Π» Новости
Π Π°Π·Π΄Π΅Π» Π‘Ρ‚Π°Ρ‚ΡŒΠΈ




Β ΠŸΠ°Ρ€Ρ‚Π½Π΅Ρ€Ρ‹




Главная / Π€Π°ΠΉΠ»Ρ‹ / ДокумСнтация / PHP










PHP 4 — ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΉ курс Π”.Π“ΠΈΠ»ΠΌΠΎΡ€




PHP 4 — ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΉ курс Π”.Π“ΠΈΠ»ΠΌΠΎΡ€
условия использования: бСсплатно
Π‘Ρ‚Π°Ρ€Ρ‹ΠΉ Π΄ΠΎΠ±Ρ€Ρ‹ΠΉ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ ΠΏΠΎ PHP4. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ для Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ изучСния PHP. Написано всС достаточно просто ΠΈ понятно.Β 






php ΠΌΠ°Π½ΡƒΠ°Π»




Руководство ΠΏΠΎ PHP русский ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄
условия использования: бСсплатно
ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ°Π½ΡƒΠ°Π» ΠΏΠΎ php.

ΠžΡΠ²Π΅Ρ‰Π°Π΅Ρ‚ 4 ΠΈ 5 вСрсии php.

Π­Ρ‚ΠΎ руководство состоит, Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΈΠ· справочника Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π° Ρ‚Π°ΠΊΠΆΠ΅ содСрТит справочник языка, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΊ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹ΠΌ ΠΈΠ· ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… особСнностСй PHP…


















Β 

Β 

Β  Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ

Β 








ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС, докумСнтация, Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°, ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΊ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ систСмС видСорСгистрации ΠΈ аудиозаписи TRASSIR

Trassir-4.2-1147289
4.2-1147289 (4.2.1147265)
06.10.2021 | 901 MB
ServicePack для TRASSIR OS вСрсии 4.2, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‰ΠΈΠΉ ПО Π΄ΠΎ вСрсии 4.2-1147289 (4.2.1147265)
Π½Π° сСрвСрах:
Trassir-4.2-1147287
4.2-1147287 (4.2.1147265)
06.10.2021 | 915 MB
ServicePack для TRASSIR OS вСрсии 4.2, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‰ΠΈΠΉ ПО Π΄ΠΎ вСрсии 4.2-1147287 (4.2.1147265)
Π½Π° сСрвСрах:
Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅! Данная ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠ° Π½Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для обновлСния видСорСгистраторов DuoStation сСрий L12 ΠΈ S126. Для получСния ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ Π² Π½Π°ΡˆΡƒ Ρ‚Π΅Ρ…Π½ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ.
Trassir-4.2-1147288
4.2-1147288 (4.2.1147265)
06.10.2021 | 1.4 GB
ServicePack для TRASSIR OS вСрсии 4.2, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‰ΠΈΠΉ ПО Π΄ΠΎ вСрсии 4.2-1147288 (4.2.1147265)
Π½Π° сСрвСрах:

  • TRASSIR DuoStation AnyIP 16-RE
  • TRASSIR DuoStation AnyIP 24-RE
  • TRASSIR DuoStation AnyIP 32-RE
  • TRASSIR DuoStation AF 16-RE
  • TRASSIR DuoStation AF 32-RE
  • TRASSIR DuoStation 2400R/48
Trassir-4.2-1147291
4.2-1147291 (4.2.1147265)
06.10.2021 | 1.6 GB
ServicePack для TRASSIR OS вСрсии 4.2, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‰ΠΈΠΉ ПО Π΄ΠΎ вСрсии 4.2-1147291 (4.2.1147265)
Π½Π° сСрвСрах:
Trassir-4.2-1147290
4.2-1147290 (4.2.1147265)
06.10.2021 | 1.7 GB
ServicePack для TRASSIR OS вСрсии 4.2, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‰ΠΈΠΉ ПО Π΄ΠΎ вСрсии 4.2-1147290 (4.2.1147265)
Π½Π° сСрвСрах:

  • TRASSIR QuattroStation
  • TRASSIR QuattroStation Pro
Trassir-4.2-1147292
4.2-1147292 (4.2.1147265)
06.10.2021 | 5.1 GB
ServicePack для TRASSIR OS вСрсии 4.2, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‰ΠΈΠΉ ПО Π΄ΠΎ вСрсии 4.2-1147292 (4.2.1147265)
Π½Π° сСрвСрах:
Trassir-4.2-1147296
4.2-1147296 (4.2.1147265)
06.10.2021 | 4.8 GB
ServicePack для TRASSIR OS вСрсии 4.2, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‰ΠΈΠΉ ПО Π΄ΠΎ вСрсии 4.2-1147296 (4.2.1147265)
Π½Π° сСрвСрах:

  • TRASSIR NeuroStation Compact
  • TRASSIR NeuroStation Compact RE
  • TRASSIR NeuroStation 8200/16
  • TRASSIR NeuroStation 8200R/16
  • TRASSIR NeuroStation 8200R/16-S
  • TRASSIR NeuroStation 8216R/TR
Trassir-4.2-1147297
4.2-1147297 (4.2.1147265)
06.10.2021 | 5.1 GB
ServicePack для TRASSIR OS вСрсии 4.2, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‰ΠΈΠΉ ПО Π΄ΠΎ вСрсии 4.2-1147297 (4.2.1147265)
Π½Π° сСрвСрах:

  • TRASSIR NeuroStation 8200R/32-S
Trassir-4.2-1147293
4.2-1147293 (4.2.1147265)
06.10.2021 | 4.9 GB
ServicePack для TRASSIR OS вСрсии 4.2, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‰ΠΈΠΉ ПО Π΄ΠΎ вСрсии 4.2-1147293 (4.2.1147265)
Π½Π° сСрвСрах:

  • TRASSIR NeuroStation
  • TRASSIR NeuroStation Base
  • TRASSIR NeuroStation 8400R/32-S
  • TRASSIR NeuroStation 8800R/64
Trassir-4.2-1147352
4.2-1147352 (4.2.1147265)
06.10.2021 | 6.1 GB
ServicePack для TRASSIR OS вСрсии 4.2, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‰ΠΈΠΉ ПО Π΄ΠΎ вСрсии 4.2-1147352 (4.2.1147265)
Π½Π° сСрвСрах:

  • TRASSIR NeuroStation U
  • TRASSIR NeuroStation 2V
Trassir-4.2-1147295
4.2-1147295 (4.2.1147265)
06.10.2021 | 5.3 GB
ServicePack для TRASSIR OS вСрсии 4.2, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‰ΠΈΠΉ ПО Π΄ΠΎ вСрсии 4.2-1147295 (4.2.1147265)
Π½Π° сСрвСрах:

  • TRASSIR NeuroStation 8400R/48-S
Trassir-4.2-1144424
4.2-1144424 (4.2.1144966)
19.08.2021 | 5.0 GB
ServicePack для TRASSIR OS вСрсии 4.2, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‰ΠΈΠΉ ПО Π΄ΠΎ вСрсии 4.2-1144424 (4.2.1144966)
Π½Π° сСрвСрах:

  • TRASSIR NeuroStation 8800R/160-A8-S
Trassir-4.2-1147298
4.2-1147298 (4.2.1147265)
06.10.2021 | 5.0 GB
ServicePack для TRASSIR OS вСрсии 4.2, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‰ΠΈΠΉ ПО Π΄ΠΎ вСрсии 4.2-1147298 (4.2.1147265)
Π½Π° сСрвСрах:

ДокумСнтация — 3.10

ВнСсти Π²ΠΊΠ»Π°Π΄ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ просто. Π€Π°ΠΉΠ»Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π½Π°
https://github.com/cakephp/docs. НС ΡΡ‚Π΅ΡΠ½ΡΠΉΡ‚Π΅ΡΡŒ произвСсти Ρ„ΠΎΡ€ΠΊ рСпозитория, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ своё
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅/ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅/ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ, Π²Ρ‹Π΄Π°Π² запрос Π½Π° pull request (пСрСнос).
Π’Ρ‹ Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GitHub, Π½Π΅ загруТая
Ρ„Π°ΠΉΠ»Ρ‹ – ΠΊΠ½ΠΎΠΏΠΊΠ° Β«Improve this DocΒ» Π½Π° любой страницС ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ вас ΠΊ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρƒ GitHub для этой страницы.

ДокумСнтация CakePHP
Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ интСгрируСмая,
ΠΈ развёртываСтся послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ запроса pull request, Π½Π° слияниС.

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‹

ΠžΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ ΠΏΠΎ элСктронной ΠΏΠΎΡ‡Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ docs (docs Π½Π° cakephp dot org) ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° IRC
(#cakephp on freenode), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡΡƒΠ΄ΠΈΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ усилия ΠΏΠΎ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρƒ Ссли Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ.

Новый язык ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π°

ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ максимально ΠΏΠΎΠ»Π½Ρ‹. Однако Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ
ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‹, ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° Π΄Π°Π²Π½ΠΎ Π½Π΅ обновлялся.
Π’Ρ‹ всСгда Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π°Π½Π³Π»ΠΈΠΉΡΠΊΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ — ΠΊΠ°ΠΊ Π°Π²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ.

Если ваш язык Π½Π΅ находится Π² спискС Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… языков, ΡΠ²ΡΠΆΠΈΡ‚Π΅ΡΡŒ с Π½Π°ΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π·
Github, ΠΈ ΠΌΡ‹ рассмотрим созданиС для Π½Π΅Π³ΠΎ ΠΏΠ°ΠΏΠΊΠΈ скСлСта. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅
Ρ€Π°Π·Π΄Π΅Π»Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ,
Ρ„Π°ΠΉΠ»Ρ‹ Π½Π΅ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ часто:

НапоминаниС для администраторов Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° всСх языковых ΠΏΠ°ΠΏΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡ‚Ρ€Π°ΠΆΠ°Ρ‚ΡŒ состав английской ΠΏΠ°ΠΏΠΊΠΈ.
Если структура ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° для английской вСрсии, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ
эти измСнСния ΠΈ для Π΄Ρ€ΡƒΠ³ΠΈΡ… языков.

НапримСр, Ссли Π² en/file.rst создан Π½ΠΎΠ²Ρ‹ΠΉ английский Ρ„Π°ΠΉΠ», Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹:

  • Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΈ для Π΄Ρ€ΡƒΠ³ΠΈΡ… языков. : fr/file.rst, zh/file.rst, …

  • Π£Π΄Π°Π»ΠΈΡ‚ΡŒ содСрТимоС, Π½ΠΎ сохраняя ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ title, meta ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ toc-tree элСмСнты.
    Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ, ΠΏΠΎΠΊΠ° Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ ΠΏΠ΅Ρ€Π΅Π²Ρ‘Π» Ρ„Π°ΠΉΠ»:

    File Title
    ##########
    
    .. note::
        The documentation is not currently supported in XX language for this
        page.
    
        Please feel free to send us a pull request on
        `Github <https://github.com/cakephp/docs>`_ or use the **Improve This Doc**
        button to directly propose your changes.
    
        You can refer to the English version in the select top menu to have
        information about this page's topic.
    
    // Если элСмСнты toc-tree находятся Π² английской вСрсии
    .. toctree::
        :maxdepth: 1
    
        one-toc-file
        other-toc-file
    
    .. meta::
        :title lang=xx: File Title
        :keywords lang=xx: title, description,...
    

Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ°ΠΌ

  • Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ваш язык, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ пСрСвСсти ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚, ΠΈ просмотритС Ρ‡Ρ‚ΠΎ ΡƒΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½ΠΎ.

  • НС ΡΡ‚Π΅ΡΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ваш язык, Ссли ΠΎΠ½ ΡƒΠΆΠ΅ сущСствуСт Π² ΠΊΠ½ΠΈΠ³Π΅.

  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΠ΅ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡ‹.

  • ΠŸΠ΅Ρ€Π΅Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ.

  • По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с английским содСрТаниСм, ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ исправлСния,
    (Ссли Π²Ρ‹ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ исправитС, Π½ΠΎ Π½Π΅ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Β«Π²Π²Π΅Ρ€Ρ… ΠΏΠΎ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΡŽΒ» (β€župstreamβ€œ)
    вашС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ принято).

  • Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ английский Ρ‚Π΅Ρ€ΠΌΠΈΠ½, ΠΎΠ±Π΅Ρ€Π½ΠΈΡ‚Π΅ Π΅Π³ΠΎ Π² Ρ‚Π΅Π³ΠΈ <em>.
    НапримСр. Β«asdf asdf Controller asdfΒ» ΠΈΠ»ΠΈ Β«asdf asdf Kontroller (Controller) asfdΒ».

  • НС отправляйтС частичныС(Π½Π΅Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π½Ρ‹Π΅) ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‹.

  • НС Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ€Π°Π·Π΄Π΅Π» ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΠΉ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

  • НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅
    HTML сущности
    для акцСнтирования. Π’ ΠΊΠ½ΠΈΠ³Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° UTF-8.

  • НС мСняйтС Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ (HTML) ΠΈ Π½Π΅ добавляйтС Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚.

  • Если Π² исходном ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π΅ отсутствуСт какая-Π»ΠΈΠ±ΠΎ информация, ΠΎΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅
    Π΅Ρ‘ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ.

Руководство ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ

Новая докумСнтация CakePHP написана с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ
ВСкста Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ReST. ReST
(Re Structured Text) — синтаксис простой тСкстовой Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ markdown (ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ ΡƒΡ†Π΅Π½ΠΊΠΈ), ΠΈΠ»ΠΈ
textile. Для поддСрТания согласованности рСкомСндуСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΊ
CakePHP Π²Ρ‹ слСдовали этим рСкомСндациям, ΠΎ Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ
ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свой тСкст.

Π”Π»ΠΈΠ½Π° строки

Π‘Ρ‚Ρ€ΠΎΠΊΠΈ тСкста Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚Ρ‹ Π² 80 столбцов (80 символов Π½Π° строкС). ЕдинствСнным ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ
Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ URL-адрСса ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠ΄Π°. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΠΎΠ΄-ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ².

Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒΡΡ Π² Π³Π»ΡƒΠ±ΠΈΠ½Ρƒ Π±ΠΎΠ»Π΅Π΅ 5 ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ. ΠŸΠ΅Ρ€Π΅Π΄ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ ΠΈ послС
Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠ΄Ρ‚ΠΈ пустая строка.

ΠŸΠ°Ρ€Π°Π³Ρ€Π°Ρ„Ρ‹

ΠŸΠ°Ρ€Π°Π³Ρ€Π°Ρ„Ρ‹ — это просто Π±Π»ΠΎΠΊΠΈ тСкста, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ всС Π»ΠΈΠ½ΠΈΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅
отступы Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°. ΠŸΠ°Ρ€Π°Π³Ρ€Π°Ρ„Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ ΠΎΠ΄Π½ΠΎΠΉ пустой строкой.

ВстроСнная Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ°

  • Одна Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠ°: тСкст для выдСлСния (курсивом)
    ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π΅Π³ΠΎ для ΠΎΠ±Ρ‰Π΅Π³ΠΎ выдСлСния/Π°ΠΊΡ†Π΅Π½Ρ‚Π°.

  • Π”Π²Π΅ Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠΈ: тСкст для выдСлСния ΠΆΠΈΡ€Π½Ρ‹ΠΌ (ΠΏΠΎΠ»ΡƒΠΆΠΈΡ€Π½Ρ‹ΠΉ)
    ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ для ΠΈΠΌΡ‘Π½ Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ², Ρ‚Π΅ΠΌ списка, ΠΈΠΌΡ‘Π½ Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ
    ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ слово Β«tableΒ».

  • Π”Π²Π΅ косых Ρ‡Π΅Ρ€Ρ‚Ρ‹(засСчки): text для ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠ² ΠΊΠΎΠ΄Π°.
    ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ для ΠΈΠΌΡ‘Π½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΈΠΌΡ‘Π½ столбцов Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΈΠΌΡ‘Π½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²,
    Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ слова Β«objectΒ» ΠΈ для ΠΈΠΌΡ‘Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²/Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ
    – include Β«()Β».

    • ``cascadeCallbacks``, ``true``, ``id``,
      ``PagesController``, ``config()``, etc.

Если Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ тСкстС ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠΈ ΠΈΠ»ΠΈ косыС Ρ‡Ρ‘Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ(засСчки), ΠΈ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒ
Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ, ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ экранированы ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ косой Ρ‡Π΅Ρ€Ρ‚ΠΎΠΉ.

ВстроСнная Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ:

  • Π­Ρ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ.

  • Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ ΠΈΠ»ΠΈ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ: * text* это ошибка.

  • Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»Π΅Π½ΠΎ ΠΎΡ‚ ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰Π΅Π³ΠΎ тСкста non-word символами. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅
    ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΊΠΎΡΡƒΡŽ Ρ‡Π΅Ρ€Ρ‚Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ удалСния ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ²: onelong\ *bolded*\ word.

Бписки

Π Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° списка ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΠΈ. НСупорядочСнныС списки ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ
начиная строку с ΠΎΠ΄Π½ΠΎΠΉ Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠΈ ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π»Π°. НумСрованныС списки ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ
созданны с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π»ΠΈΠ±ΠΎ Ρ†ΠΈΡ„Ρ€, Π»ΠΈΠ±ΠΎ # для автоматичСской Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΠΈ:

* This is a bullet
* So is this. But this line
  has two lines.

1. First line
2. Second line

#. Automatic numbering
#. Will save you some time.

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ списки ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ отступы, ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ ΠΈΡ…
пустой строкой:

* First line
* Second line

    * Going deeper
    * Whoah

* Back to the first level.

Бписки ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

term
    definition
CakePHP
    An MVC framework for PHP

Π’Π΅Ρ€ΠΌΠΈΠ½Ρ‹ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ большС ΠΎΠ΄Π½ΠΎΠΉ строки, Π½ΠΎ опрСдСлСния ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ многострочными ΠΈ всС
Π»ΠΈΠ½ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ постоянный отступ.

Бсылки

БущСствуСт нСсколько Π²ΠΈΠ΄ΠΎΠ² ссылок, ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π²ΠΈΠ΄ ΠΈΠΌΠ΅Π΅Ρ‚ своё собствСнноС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅.

Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ ссылки

Бсылки Π½Π° внСшниС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ (рСсурсы) ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ:

`External Link to php.net <http://php.net>`_

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Π°Ρ ссылка Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ: External Link to php.net

Бсылки Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ страницы
:doc:

Π Π°Π·Π½Ρ‹Π΅ страницы Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ связаны ΠΌΠ΅ΠΆΠ΄Ρƒ собой с использованиСм Ρ€ΠΎΠ»ΠΈ :doc:.
Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ ΠΈΠ»ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ
ΠΏΡƒΡ‚ΡŒ. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ .rst. НапримСр, Ссли Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ core-helpers/html
ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ссылка :doc:`form`, Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° ссылаСтся Π½Π°
core-helpers/form. Если ссылка Π±Ρ‹Π»Π° Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° :doc:`/core-helpers`, Ρ‚ΠΎ ΠΎΠ½Π° всСгда Π±ΡƒΠ΄Π΅Ρ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° /core-helpers, нСзависимо ΠΎΡ‚ мСста Π΅Ρ‘ использования.

ΠŸΠ΅Ρ€Π΅ΠΊΡ€Π΅ΡΡ‚Π½Ρ‹Π΅ ссылки
:ref:

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ пСрСкрёстно ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° любой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π² любом Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ
:ref: Ρ€ΠΎΠ»ΡŒ. Π¦Π΅Π»ΠΈ ссылок Π½Π° ΠΌΠ΅Ρ‚ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π½Π° всём протяТСнии
Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΈ создании ΠΌΠ΅Ρ‚ΠΎΠΊ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса, Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
class-method Π² качСствС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° вашСй ΠΌΠ΅Ρ‚ΠΊΠΈ ссылок.

НаиболСС распространСнно использованиС ΠΌΠ΅Ρ‚ΠΎΠΊ Π½Π°Π΄ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

.. _label-name:

Section heading
---------------

More content here.

Π’ Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ :ref:`label-name`.
ВСкст ссылки Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Π»Π° ссылка. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅
ввСсти тСкст ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ ссылки, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ :ref:`Link text <label-name>`.

ΠŸΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΎΡ‚ Sphinx

Sphinx Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ прСдупрСТдСния, Ссли Ρ„Π°ΠΉΠ» Π½Π΅ ссылаСтся Π² toc-tree. Π­Ρ‚ΠΎ
ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ способ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ ссылку, Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΡƒΡŽ Π½Π° Π½ΠΈΡ…, Π½ΠΎ
ΠΈΠ½ΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ссылку Π½Π° Ρ„Π°ΠΉΠ», Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для Π²Π°ΡˆΠΈΡ…
epub-contents ΠΈ pdf-contents Ρ„Π°ΠΉΠ»ΠΎΠ². Π’ этих случаях Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ
:orphan: Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части Ρ„Π°ΠΉΠ»Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Π°Π²ΠΈΡ‚ΡŒ прСдупрСТдСния ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» Π½Π΅
Π² toc-tree.

ОписаниС классов ΠΈ ΠΈΡ… содСрТания

Π’ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ CakePHP ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ phpdomain для прСдоставлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ…
Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² для описания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ конструкций PHP. ИспользованиС этих Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²
ΠΈ Ρ€ΠΎΠ»Π΅ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ индСксации ΠΈ пСрСкрёстных ссылок.

ОписаниС классов ΠΈ конструкторов

КаТдая Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° описываСт индСкс ΠΈ/ΠΈΠ»ΠΈ пространство ΠΈΠΌΠ΅Π½.

.. php:global:: name

Π­Ρ‚Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ Π½ΠΎΠ²ΡƒΡŽ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ PHP.

.. php:function:: name(signature)

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ Π½ΠΎΠ²ΡƒΡŽ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π²Π½Π΅ класса.

.. php:const:: name

Π­Ρ‚Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ Π½ΠΎΠ²ΡƒΡŽ константу PHP. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΈΠ΅
Π²Π½ΡƒΡ‚Ρ€ΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ класса, для создания констант класса.

.. php:exception:: name

Π­Ρ‚Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ Π½ΠΎΠ²ΠΎΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ пространствС ΠΈΠΌΠ΅Π½.
Подпись ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ конструктора.

.. php:class:: name

ΠžΠΏΠΈΡΡ‹Π²Π°Π΅Ρ‚ класс. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ константы, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ классу,
Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° этой Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹:

.. php:class:: MyClass

    ОписаниС класса

   .. php:method:: method($argument)

    ОписаниС ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

Атрибуты, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ константы Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ. Они Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ просто
ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ класса:

.. php:class:: MyClass

    ВСкст ΠΎ классС

.. php:method:: methodName()

    ВСкст ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅
.. php:method:: name(signature)

ΠžΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ класса, Π΅Π³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ:

.. php:method:: instanceMethod($one, $two)

    :param string $one: The first parameter.
    :param string $two: The second parameter.
    :returns: An array of stuff.
    :throws: InvalidArgumentException

   This is an instance method.
.. php:staticmethod:: ClassName::methodName(signature)

ΠžΠΏΠΈΡˆΠΈΡ‚Π΅ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄, Π΅Π³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ,
см. php:method для использования ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

.. php:attr:: name

ΠžΠΏΠΈΡΠ°Ρ‚ΡŒ свойство/Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ для класса.

ΠŸΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΎΡ‚ Sphinx

Sphinx Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ прСдупрСТдСния, Ссли функция ссылаСтся Π½Π° нСсколько Ρ„Π°ΠΉΠ»ΠΎΠ². Π­Ρ‚ΠΎ
ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ способ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ добавляли Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π΄Π²Π° Ρ€Π°Π·Π°, Π½ΠΎ
ΠΈΠ½ΠΎΠ³Π΄Π° Π²Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² Π΄Π²ΡƒΡ… ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ„Π°ΠΉΠ»Π°Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€.
/development/debugging ссылаСтся Π½Π° /development/debugging ΠΈ Π½Π°
/core-libraries/global-constants-and-functions. Π’ этом случаС Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ
:noindex: ΠΏΠΎΠ΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ debug для подавлСния ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ хотя Π±Ρ‹
ΠΎΠ΄Π½Ρƒ ссылку Π±Π΅Π· :no-index: Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ссылку Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ:

.. php:function:: debug(mixed $var, boolean $showHtml = null, $showFrom = true)
    :noindex:
ΠŸΠ΅Ρ€Π΅ΠΊΡ€Π΅ΡΡ‚Π½Π°Ρ ссылка

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€ΠΎΠ»ΠΈ относятся ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ PHP, Π° ссылки Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ, Ссли
Π½Π°ΠΉΠ΄Π΅Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°:

:php:func:

Бсылка Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ PHP.

:php:global:

Бсылка Π½Π° Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, имя ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ прСфикс $.

:php:const:

Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ константу ΠΈΠ»ΠΈ константу класса. ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹ класса
Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½ΠΈ класса:

DateTime has an :php:const:`DateTime::ATOM` constant.
:php:class:

Бсылка Π½Π° класс ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ:

:php:meth:

Бсылка Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ класса. Π­Ρ‚Π° Ρ€ΠΎΠ»ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±Π° Π²ΠΈΠ΄Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²:

:php:meth:`DateTime::setDate`
:php:meth:`Classname::staticMethod`
:php:attr:

Бсылка Π½Π° свойство ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°:

:php:attr:`ClassName::$propertyName`
:php:exc:

Бсылка Π½Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄

Π‘ΡƒΠΊΠ²Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΏΡƒΡ‚Π΅ΠΌ окончания Π°Π±Π·Π°Ρ†Π° Π½Π° ::. Π›ΠΈΡ‚Π΅Ρ€Π°Π»
Π±Π»ΠΎΠΊΠ° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ отступом, ΠΈ, ΠΊΠ°ΠΊ ΠΈ всС Π°Π±Π·Π°Ρ†Ρ‹, Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒΡΡ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΌΠΈ линиями:

Π­Ρ‚ΠΎ Π°Π±Π·Π°Ρ†::

    while ($i--) {
        doStuff()
    }

Π­Ρ‚ΠΎ снова ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ тСкст.

Π‘ΡƒΠΊΠ²Π΅Π½Π½Ρ‹ΠΉ тСкст Π½Π΅ измСняСтся ΠΈΠ»ΠΈ Π½Π΅ форматируСтся, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ удаляСтся ΠΎΠ΄ΠΈΠ½ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ отступов.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΈ прСдупрСТдСния

Часто Ρ‚Π°ΠΊ Π±Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŽ Π²Π°ΠΆΠ½Ρ‹ΠΉ совСт,
ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ. Упоминания Π² sphinx ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для
этого. Π•ΡΡ‚ΡŒ ΠΏΡΡ‚ΡŒ Π²ΠΈΠ΄ΠΎΠ² ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ.

  • .. tip:: Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для докумСнтирования ΠΈΠ»ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования интСрСсной ΠΈΠ»ΠΈ Π²Π°ΠΆΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ написано ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ всС ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π½Π°ΠΊΠΈ прСпинания.

  • .. note:: ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для докумСнтирования особо Π²Π°ΠΆΠ½ΠΎΠΉ части ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ написано ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ всС ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π½Π°ΠΊΠΈ прСпинания.

  • .. warning:: ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для докумСнтирования ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ°ΠΌΠ½Π΅ΠΉ прСткновСния ΠΈΠ»ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, относящСйся ΠΊ бСзопасности. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ написано Π² ΠΏΠΎΠ»Π½Ρ‹Ρ… прСдлоТСниях ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ всС ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π½Π°ΠΊΠΈ прСпинания.

  • .. versionadded:: X.Y.Z Β«Version addedΒ» Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для отобраТСния ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ вСрсии, X.Y.Z являСтся вСрсиСй с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π»Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° эта функция.

  • .. deprecated:: X.Y.Z Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ Β«version addedΒ», Β«deprecatedΒ» прСдупрСТдСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для увСдомлСния ΠΎΠ± ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, X.Y.Z являСтся вСрсиСй Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ упомянутый ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ устарСл.

ВсС примСчания сдСланы ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ:

.. note::

    ΠžΡ‚ΡΡ‚ΡƒΠΏ ΠΈ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ ΠΈ слСдуСт пустая строка. Π’Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ для ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„Π°.

Π­Ρ‚ΠΎΡ‚ тСкст Π½Π΅ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ примСчания.
ΠžΠ±Ρ€Π°Π·Π΅Ρ†

Π‘ΠΎΠ²Π΅Ρ‚

Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ tid-bit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ вСроятно Π·Π°Π±Ρ‹Π»ΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° это.

ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ опасно.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π² вСрсии 2.6.3: Π­Ρ‚Π° Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ функция Π±Ρ‹Π»Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π² Π²Π΅Ρ€ΡΠΈΡŽ 2.6.3

НС рСкомСндуСтся, начиная с вСрсии 2.6.3: Π­Ρ‚Π° старая функция стала ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅ΠΉ Π² вСрсии 2.6.3

Установка (Laravel 8.x) β€” Laravel Framework Russian Community

Π­Ρ‚ΠΎ скоррСктированный автоматичСский ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄, сдСланный ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ google translate.

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ отстаёт ΠΎΡ‚ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π°

ВстрСчайтС Laravel

Laravel – Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Π²Π΅Π±-прилоТСния с Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, элСгантным синтаксисом. Π’Π΅Π±-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ структуру ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ для создания вашСго прилоТСния, позволяя Π²Π°ΠΌ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° создании Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ, Π½ΠΎ ΠΏΠΎΠΊΠ° ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ Π²Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² Π΄Π΅Ρ‚Π°Π»ΠΈ.

Laravel стрСмится ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΏΠΎΡ‚Ρ€ΡΡΠ°ΡŽΡ‰ΠΈΠΉ ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, прСдоставляя ΠΏΡ€ΠΈ этом ΠΌΠΎΡ‰Π½Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»: Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ зависимостСй, Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ абстракции Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΈ Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ΅ ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ΅ тСстированиС ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

НСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ Π»ΠΈ Π²Ρ‹ Π² PHP, Π²Π΅Π±-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°Ρ… ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎΠ»Π΅Ρ‚Π½ΠΈΠΉ ΠΎΠΏΡ‹Ρ‚, Laravel – это Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ расти вмСстС с Π²Π°ΠΌΠΈ. ΠœΡ‹ ΠΏΠΎΠΌΠΎΠΆΠ΅ΠΌ Π²Π°ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ шаги Π² качСствС Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΈΠ»ΠΈ подскаТСм, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΏΠΎΠ΄Π½ΠΈΠΌΠΈΡ‚Π΅ свой ΠΎΠΏΡ‹Ρ‚ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ. Нам Π½Π΅ тСрпится ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ построитС.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ Laravel?

ΠŸΡ€ΠΈ создании Π²Π΅Π±-прилоТСния Π²Π°ΠΌ доступны Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ инструмСнты ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ. Однако ΠΌΡ‹ считаСм, Ρ‡Ρ‚ΠΎ Laravel – Π»ΡƒΡ‡ΡˆΠΈΠΉ Π²Ρ‹Π±ΠΎΡ€ для создания соврСмСнных ΠΏΠΎΠ»Π½ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

ΠŸΡ€ΠΎΠ³Ρ€Π΅ΡΡΠΈΠ²Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ

Нам нравится Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ Laravel «прогрСссивным» Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠΌ. Под этим ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Laravel растСт вмСстС с Π²Π°ΠΌΠΈ. Если Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ шаги Π² Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, ΠΎΠ±ΡˆΠΈΡ€Π½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, руководств ΠΈ Π²ΠΈΠ΄Π΅ΠΎΡƒΡ€ΠΎΠΊΠΎΠ² Laravel ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ основы, Π½Π΅ пСрСгруТая сСбя.

Если Π²Ρ‹ ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, Laravel ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π²Π°ΠΌ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Π΅ инструмСнты для внСдрСния зависимостСй, ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ³ΠΎ тСстирования, создания ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ, событий Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Laravel ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ для создания ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π³ΠΎΡ‚ΠΎΠ² ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.

ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ

Laravel нСвСроятно ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌ. Благодаря ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΌΡƒ для ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Ρƒ PHP ΠΈ встроСнной ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ быстрых распрСдСлСнных систСм ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Redis, Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с Laravel ΠΎΡ‡Π΅Π½ΡŒ просто. ЀактичСски, прилоТСния Laravel Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΡŽΡ‚ΡΡ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сотСн ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² запросов Π² мСсяц.

ВрСбуСтся ΡΠΊΡΡ‚Ρ€Π΅ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅? Π’Π°ΠΊΠΈΠ΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, ΠΊΠ°ΠΊ Laravel Vapor, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Laravel Π² практичСски Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΌ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π΅ с использованиСм новСйшСй бСссСрвСрной Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ AWS.

Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ сообщСства

Laravel ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π² экосистСмС PHP, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, тысячи Ρ‚Π°Π»Π°Π½Ρ‚Π»ΠΈΠ²Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² со всСго ΠΌΠΈΡ€Π° внСсли свой Π²ΠΊΠ»Π°Π΄ Π² Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. ΠšΡ‚ΠΎ Π·Π½Π°Π΅Ρ‚, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ Π΄Π°ΠΆΠ΅ станСтС соучастником Laravel.

Π’Π°Ρˆ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° Laravel

ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Laravel Π±Ρ‹Π»ΠΎ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‰Π΅. БущСствуСт мноТСство Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ запуска ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Laravel Π½Π° вашСм собствСнном ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅. Π₯отя Π²Ρ‹, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ эти Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ ΠΏΠΎΠ·ΠΆΠ΅, Π½ΠΎ Laravel ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Sail – встроСнноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для запуска вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Laravel с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Docker.

Docker – это инструмСнт для запуска ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ слуТб Π² Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ…, Π»Π΅Π³ΠΊΠΈΡ… Β«ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ…Β», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΌΠ΅ΡˆΠ°ΡŽΡ‚ установлСнному Π½Π° вашСм локальном ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌΡƒ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡŽ ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ»ΠΈ настройкС слоТных инструмСнтов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π²Π΅Π±-сСрвСры ΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° вашСм ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅. Для Π½Π°Ρ‡Π°Π»Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ всСго лишь ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Docker Desktop.

Laravel Sail – это Π»Π΅Π³ΠΊΠΈΠΉ интСрфСйс ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки для взаимодСйствия с ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ Docker ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² Laravel. Sail обСспСчиваСт ΠΎΡ‚Π»ΠΈΡ‡Π½ΡƒΡŽ ΠΎΡ‚ΠΏΡ€Π°Π²Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ для создания прилоТСния Laravel с использованиСм PHP, MySQL ΠΈ Redis Π±Π΅Π· ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠΏΡ‹Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Docker.

Π£ΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌ с Docker? НС Π²ΠΎΠ»Π½ΡƒΠΉΡ‚Π΅ΡΡŒ! ВсС Π² Sail ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„Π°ΠΉΠ»Π° docker-compose.yml, входящСго Π² Laravel.

Начало Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² macOS

Если Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ Π½Π° Mac ΠΈ Docker Desktop ΡƒΠΆΠ΅ установлСн, Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° для создания Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Laravel. НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Laravel Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ example-app, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² своСм Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅:

curl -s https://laravel.build/example-app | bash

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ example-app Π² этом URL Π½Π° Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ. ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ прилоТСния Laravel Π±ΡƒΠ΄Π΅Ρ‚ создан Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹ выполняСтС ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ.

ПослС создания ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ прилоТСния ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Laravel Sail. Laravel Sail ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ простой интСрфСйс ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки для взаимодСйствия с ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ Docker ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² Laravel:

cd example-app

./vendor/bin/sail up

ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ запускС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ up Sail Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ Π±ΡƒΠ΄ΡƒΡ‚ созданы ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Sail. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ нСсколько ΠΌΠΈΠ½ΡƒΡ‚. НС Π²ΠΎΠ»Π½ΡƒΠΉΡ‚Π΅ΡΡŒ, ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Sail Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС.

ПослС запуска ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² прилоТСния Docker, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Π² своСм Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΠΏΠΎ адрСсу: http://localhost.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Laravel Sail, просмотритС Π΅Π³ΠΎ ΠΏΠΎΠ»Π½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ.

Начало Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Windows

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ создадим Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Laravel Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ с Windows, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ установитС Docker Desktop. Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ подсистСма Windows для Linux 2 (WSL2) установлСна ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π°. WSL позволяСт Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ Linux прямо Π² Windows 10. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ WSL2, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π‘Ρ€Π΅Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

ПослС установки ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ WSL2 Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Docker Desktop настроСн Π½Π° использованиС сСрвСрной части WSL2.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свой ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Laravel. ЗапуститС Π’Π΅Ρ€ΠΌΠΈΠ½Π°Π» Windows ΠΈ Π½Π°Ρ‡Π½ΠΈΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ сСанс Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° для вашСй ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы WSL2 Linux. Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° для создания Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Laravel. НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Laravel Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ example-app, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² своСм Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅:

curl -s https://laravel.build/example-app | bash

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ example-app Π² этом URL Π½Π° Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ. ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ прилоТСния Laravel Π±ΡƒΠ΄Π΅Ρ‚ создан Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹ выполняСтС ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ.

ПослС создания ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ прилоТСния ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Laravel Sail. Laravel Sail ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ простой интСрфСйс ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки для взаимодСйствия с ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ Docker ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² Laravel:

cd example-app

./vendor/bin/sail up

ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ запускС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ up Sail Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ Π±ΡƒΠ΄ΡƒΡ‚ созданы ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Sail. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ нСсколько ΠΌΠΈΠ½ΡƒΡ‚. НС Π²ΠΎΠ»Π½ΡƒΠΉΡ‚Π΅ΡΡŒ, ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Sail Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС.

ПослС запуска ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² прилоТСния Docker, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Π² своСм Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΠΏΠΎ адрСсу: http://localhost.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Laravel Sail, просмотритС Π΅Π³ΠΎ ΠΏΠΎΠ»Π½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π² подсистСмС WSL2

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ прилоТСния Laravel, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ созданы Π² вашСй установкС WSL2. Для этого ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Microsoft Visual Studio Code ΠΈ Π΅Π³ΠΎ собствСнноС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Remote Development.

ПослС установки этих инструмСнтов Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ любой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Laravel, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΠΈΠ· ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° вашСго прилоТСния ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ code . с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π’Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° Windows.

Начало Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Linux

Если Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ Π² Linux ΠΈ Docker Desktop ΡƒΠΆΠ΅ установлСн, Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° для создания Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Laravel. НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Laravel Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ example-app, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² своСм Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅:

curl -s https://laravel.build/example-app | bash

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ example-app Π² этом URL Π½Π° Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ. ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ прилоТСния Laravel Π±ΡƒΠ΄Π΅Ρ‚ создан Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹ выполняСтС ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ.

ПослС создания ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ прилоТСния ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Laravel Sail. Laravel Sail ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ простой интСрфСйс ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки для взаимодСйствия с ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ Docker ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² Laravel:

cd example-app

./vendor/bin/sail up

ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ запускС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ up Sail Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ Π±ΡƒΠ΄ΡƒΡ‚ созданы ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Sail. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ нСсколько ΠΌΠΈΠ½ΡƒΡ‚. НС Π²ΠΎΠ»Π½ΡƒΠΉΡ‚Π΅ΡΡŒ, ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Sail Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС.

ПослС запуска ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² прилоТСния Docker, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Π² своСм Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΠΏΠΎ адрСсу: http://localhost.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Laravel Sail, просмотритС Π΅Π³ΠΎ ΠΏΠΎΠ»Π½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ.

Π’Ρ‹Π±ΠΎΡ€ слуТб Sail

ΠŸΡ€ΠΈ создании Π½ΠΎΠ²ΠΎΠ³ΠΎ прилоТСния Laravel Ρ‡Π΅Ρ€Π΅Π· Sail Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚Ρ€ΠΎΠΊΠΎΠ²ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ запроса with, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ слуТбы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ настроСны Π² Ρ„Π°ΠΉΠ»Π΅ docker-compose.yml вашСго Π½ΠΎΠ²ΠΎΠ³ΠΎ прилоТСния. Доступны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ слуТбы mysql, pgsql, mariadb, redis, memcached, meilisearch, selenium ΠΈ mailhog:

curl -s "https://laravel.build/example-app?with=mysql,redis" | bash

Если Π²Ρ‹ Π½Π΅ ΡƒΠΊΠ°ΠΆΠ΅Ρ‚Π΅ ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹Π΅ слуТбы, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ сконфигурирован стСк ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΠ· mysql, redis, meilisearch, mailhog ΠΈ selenium.

Установка Ρ‡Π΅Ρ€Π΅Π· Composer

Если Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΡƒΠΆΠ΅ установлСны PHP ΠΈ Composer, Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Laravel Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Composer. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ создано, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ сСрвСр Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Laravel с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ serve Artisan CLI:

composer create-project laravel/laravel example-app

cd example-app

php artisan serve
Установщик Laravel

Π’ качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ установщик Laravel, Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ² Π΅Π³ΠΎ Π² Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Composer:

composer global require laravel/installer

laravel new example-app

cd example-app

php artisan serve

Π§Ρ‚ΠΎΠ±Ρ‹ исполняСмый Ρ„Π°ΠΉΠ» laravel ΠΌΠΎΠ³ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ вашСй систСмой, ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ΡΡŒ Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ располоТСнии ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° bin ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Composer, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΉ систСмной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $PATH. РасполоТСниС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° зависит ΠΎΡ‚ вашСй ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, Π½ΠΎ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ:

  • macOS: $HOME/.composer/vendor/bin
  • Windows: %USERPROFILE%\AppData\Roaming\Composer\vendor\bin
  • GNU / Linux Distributions: $HOME/.config/composer/vendor/bin ΠΈΠ»ΠΈ $HOME/.composer/vendor/bin

Для удобства установщик Laravel Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Git для вашСго Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Git, ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ Ρ„Π»Π°Π³ --git ΠΏΡ€ΠΈ создании Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

laravel new example-app --git

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Git для вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ автоматичСски зафиксируСт Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ каркас Laravel. Π€Π»Π°Π³ --git ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ установили ΠΈ настроили Git. МоТно Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --branch, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π°Ρ‚ΡŒ имя отвСтвлСния:

laravel new example-app --git --branch="main"

ВмСсто использования Ρ„Π»Π°Π³Π° --git Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --github, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Git ΠΈ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π΅ΠΌΡƒ, частный Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½Π° GitHub:

laravel new example-app --github

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ доступСн ΠΏΠΎ адрСсу https://github.com/<your-account>/example-app. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --github ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ установили GitHub CLI ΠΈ ΠΏΡ€ΠΎΡˆΠ»ΠΈ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ интСрфСйса ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρƒ вас Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ установлСн ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ настроСн git. ΠŸΡ€ΠΈ нСобходимости Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ Ρ„Π»Π°Π³ΠΈ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ GitHub CLI:

laravel new example-app --github="--public"

МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --organization для создания рСпозитория ΠΏΠΎΠ΄ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ GitHub:

laravel new example-app --github="--public" --organization="laravel"

ΠΠ°Ρ‡Π°Π»ΡŒΠ½Π°Ρ конфигурация

ВсС Ρ„Π°ΠΉΠ»Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ для Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Laravel хранятся Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ config. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, поэтому Π½Π΅ ΡΡ‚Π΅ΡΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ Π·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с доступными Π²Π°ΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌΠΈ.

Laravel практичСски Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ настройки ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ! Однако Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„Π°ΠΉΠ» config/app.php ΠΈ Π΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ. Он содСрТит нСсколько ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ часовой пояс ΠΈ локаль, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π² соотвСтствии с вашим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ.

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Π½Π° основС окруТСния

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Laravel ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π»ΠΈ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° локальном ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΈΠ»ΠΈ Π½Π° эксплуатационном Π²Π΅Π±-сСрвСрС, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π²Π°ΠΆΠ½Ρ‹Π΅ значСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„Π°ΠΉΠ»Π° .env, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π² ΠΊΠΎΡ€Π½Π΅ вашСго прилоТСния.

Π’Π°Ρˆ Ρ„Π°ΠΉΠ» .env Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ привязан ΠΊ систСмС контроля вСрсий вашСго прилоТСния, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ / сСрвСру, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅ΠΌΡƒ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ другая конфигурация окруТСния. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, это Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ³Ρ€ΠΎΠ·ΠΎΠΉ бСзопасности Π² случаС, Ссли Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ доступ ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡŽ систСмы управлСния вСрсиями, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π»ΡŽΠ±Ρ‹Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ раскрыты.

Для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π½Π° основС Ρ„Π°ΠΉΠ»Π° .env ΠΈ окруТСния ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с ΠΏΠΎΠ»Π½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°

Laravel всСгда Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠ· корня Β«Π²Π΅Π±-ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Β», настроСнного для вашСго Π²Π΅Π±-сСрвСра. Π’Ρ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Laravel ΠΈΠ· ΠΏΠΎΠ΄Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Β«Π²Π΅Π±-ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Β». Вакая ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ доступ ΠΊ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ создали свой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Laravel, Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ интСрСсно, Ρ‡Π΅ΠΌΡƒ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ дальшС. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΌΡ‹ Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Laravel, ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Π΄Π΅Π»Ρ‹ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ:

Π’ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Laravel, Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги Π½Π° вашСм ΠΏΡƒΡ‚ΠΈ. БущСствуСт мноТСство способов использования Laravel, ΠΈ ΠΌΡ‹ рассмотрим Π΄Π²Π° основных Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° использования Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Π½ΠΈΠΆΠ΅.

Laravel ΠΊΠ°ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрный Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ

Laravel ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрным Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠΌ. Под Β«ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрным Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠΌΒ» ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Laravel для ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ запросов ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΈ отрисовки интСрфСйса Ρ‡Π΅Ρ€Π΅Π· ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ Blade ΠΈΠ»ΠΈ с использованиСм Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ одностраничного прилоТСния, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ Inertia.js. Π­Ρ‚ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнный способ использования Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Laravel.

Если Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Laravel ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с нашСй Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ, прСдставлСниям ΠΈΠ»ΠΈ Eloquent ORM. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ интСрСсно ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ Ρ‚Π°ΠΊΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… сообщСства, ΠΊΠ°ΠΊ Livewire ΠΈ Inertia.js. Π­Ρ‚ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Laravel Π² качСствС Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ стСка, ΠΏΡ€ΠΈ этом ΠΏΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ прСимущСствами UI, прСдоставляСмыми одностраничными JavaScript-прилоТСниями.

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Laravel Π² качСствС Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ стСка, ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π²Π°ΠΌ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ CSS ΠΈ JavaScript вашСго прилоТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Laravel Mix.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ прСимущСство ΠΏΠ΅Ρ€Π΅Π΄ созданиСм своСго прилоТСния, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π°ΡˆΠΈΡ… ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… стартовых ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Laravel Π² качСствС сСрвСра API

Laravel Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ сСрвСрной Ρ‡Π°ΡΡ‚ΡŒΡŽ API для одностраничного JavaScript-прилоТСния ΠΈΠ»ΠΈ мобильного прилоТСния. НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Laravel Π² качСствС сСрвСрной части API для своСго Next.js прилоТСния. Π’ этом контСкстС Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Laravel для обСспСчСния Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ хранСния / получСния Π΄Π°Π½Π½Ρ‹Ρ… для вашСго прилоТСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ прСимущСствами ΠΌΠΎΡ‰Π½Ρ‹Ρ… слуТб Laravel, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, элСктронная ΠΏΠΎΡ‡Ρ‚Π°, увСдомлСния ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

Если Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Laravel ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ, Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с нашСй Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΏΠ°ΠΊΠ΅Ρ‚Ρƒ Laravel Sanctum ΠΈ Eloquent ORM.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΈ гСнСрация Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ PHP

Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½Ρ‹ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² ΠΊΠΎΠ΄Π΅? Как ΠΈΡ… Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ? Π“Π΄Π΅ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹, Π° Π³Π΄Π΅ Π½Π΅Ρ‚? Как ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄? Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΅Π΄ΠΈΠ½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ для всСх Ρ‡Π»Π΅Π½ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹? КакиС Π΅ΡΡ‚ΡŒ инструмСнты для создания Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ? Π― ΠΏΠΎΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° всС вопросы ΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ с Π²Π°ΠΌΠΈ своими мыслями ΠΏΠΎ этому ΠΏΠΎΠ²ΠΎΠ΄Ρƒ.

Π˜Ρ‚Π°ΠΊ, сущСствуСт Π΄Π²Π° Ρ‚ΠΈΠΏΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Ρ‚ΠΈΠΏ — Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π² самом ΠΊΠΎΠ΄Π΅. Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ — ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ сторонний инструмСнт ΠΈΠ»ΠΈ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ WIKI-Π΄Π²ΠΈΠΆΠΎΠΊ, Π³Π΄Π΅ описаны ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования, ΠΌΠΎΠ΄ΡƒΠ»ΠΈ взаимодСйствия, Π° Ρ‚Π°ΠΊΠΆΠ΅ прСдставлСны Π±Π»ΠΎΠΊ-схСмы ΠΈ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹, Π² ΠΎΠ±Ρ‰Π΅ΠΌ всС, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² ΠΊΠΎΠ΄Π΅.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ располоТСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ

НачнСм с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Однако это Π½Π΅ являСтся Ρ†Π΅Π»ΡŒΡŽ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ.Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΌΡ‹ часто ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΡΡ‚Π°Ρ‚ΡŒΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ хранятся Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄. НапримСр, Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Ρ„Π°Π»ΡŒΡˆΠΈΠ²Ρ‹Ρ… фикстур PHP докумСнтация находится Π² Ρ„Π°ΠΉΠ»Π΅ README, ΠΈ Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Π΅ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°, Π²Π°ΠΌ придСтся Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΈΡ‚ΡŒ. Π’ популярном HTTP-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ для PHP Guzzle Π΅ΡΡ‚ΡŒ инструкции ΠΏΠΎ использованию. хранится Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ. Π₯Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Π±Π»ΠΈΠ·ΠΊΠΎ ΠΊ ΠΊΠΎΠ΄Ρƒ — это Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ. Π‘ΠΊΠ°Ρ‡Π°Π² ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΏΠ°ΠΊΠ΅Ρ‚ поставщиков, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ.Если ваша Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½Π΅Π²Π΅Π»ΠΈΠΊΠ°, Ссли ΠΎΠ½Π° ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π° ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ частых ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ API Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ постоянному ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Π½ΠΈΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ бСзопасно Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Но всСму Π΅ΡΡ‚ΡŒ Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹Π΅ ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹. НапримСр, Ссли Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свой собствСнный Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, написанный ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ постоянныС выпуски, Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½, ΠΈ, Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, докумСнтация Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π° Π½Π° нСсколько языков.Π’ этом случаС ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π΅ совсСм ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ постоянныС исправлСния, обновлСния, ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‹ ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π²ΠΏΠΎΠ»Π½Π΅ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹. Они Π²Ρ‹Π·ΠΎΠ²ΡƒΡ‚ большоС количСство ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² — исправлСний, портящих ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Навигация ΠΏΠΎ истории ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², ΠΊΠΎΠ³Π΄Π° измСнСния ΠΊΠΎΠ΄Π° потСряны, измСнСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ слоТны ΠΈ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½Ρ‹.

Π’ этом случаС Π»ΡƒΡ‡ΡˆΠ΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ для Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊ это Π±Ρ‹Π»ΠΎ сдСлано для Symfony.GitHub, GitLab, Bitbucket Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ встроСнный инструмСнт WIKI, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½ ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ ΠΈ Π½Π΅ являСтся Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹ΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ. Но Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ доступ Ρ‡Π΅Ρ€Π΅Π· Git, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всю Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π°ΠΌ большС нравится, Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ измСнСния Π² ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΡ… Π½Π° сСрвСр ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ WIKI для D3.js. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π±-сайт для ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° ΠΈ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Ρ‚Π°ΠΌ Π΅Π³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ.Но Ссли Π²Ρ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· описанных Π²Ρ‹ΡˆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Π²Ρ‹ смоТСтС ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π²Π΅Π±-страницы Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈΠ· рСпозитория Git ΠΈΠ»ΠΈ WIKI — для этого Π΅ΡΡ‚ΡŒ инструмСнты. Если Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ комплСксныС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Π²Π°ΠΌ стоит ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Confluence ΠΎΡ‚ Atlassian. Π£ Π½Π΅Π³ΠΎ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС возмоТностСй, Ρ‡Π΅ΠΌ Ρƒ WIKI-Π΄Π²ΠΈΠΆΠΊΠ°.

Код коммСнтария Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ΄Π°

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ вСрнСмся ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΊΠΎΠ΄Π° Π² самом ΠΊΠΎΠ΄Π΅. Π― ΠΏΠΈΡˆΡƒ эту ΡΡ‚Π°Ρ‚ΡŒΡŽ, ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° собствСнном ΠΎΠΏΡ‹Ρ‚Π΅, Π½ΠΎ Π½Π΅Π΄Π°Π²Π½ΠΎ я ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π» «Чистый ΠΊΠΎΠ΄Β» Π ΠΎΠ±Π΅Ρ€Ρ‚Π° ΠœΠ°Ρ€Ρ‚ΠΈΠ½Π°, поэтому я Π±ΡƒΠ΄Ρƒ Ρ†ΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эту ΠΊΠ½ΠΈΠ³Ρƒ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° умСстна.ΠŸΠ΅Ρ€Π²ΠΎΠ΅ сообщСниС ΠΎΡ‚ Π ΠΎΠ±Π΅Ρ€Ρ‚Π° ΠœΠ°Ρ€Ρ‚ΠΈΠ½Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ — ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ Π½Π΅ΡƒΠ΄Π°Ρ‡ΠΈ. ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΏΠΈΡˆΡƒΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π° ΠΎΡˆΠΈΠ±ΠΊΡƒ программиста, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΌΠΎΠ³ Ρ‡Π΅Ρ‚ΠΊΠΎ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ свою идСю с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ языка программирования. ΠŸΡ€ΠΎΡ†Π΅ΡΡ Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° — ΠΎΡ‡Π΅Π½ΡŒ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ΅ понятиС, выходящСС Π΄Π°Π»Π΅ΠΊΠΎ Π·Π° Ρ€Π°ΠΌΠΊΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ. Но ΠΏΠΎΠ·Π²ΠΎΠ»ΡŒΡ‚Π΅ ΠΌΠ½Π΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ с Π²Π°ΠΌΠΈ ΡƒΠ»ΠΎΠ²ΠΊΠΎΠΉ для написания Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°: Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ это Π±Ρ‹Π»ΠΈ прСдлоТСния. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅, ΡˆΠΈΡ€ΠΎΠΊΠΎ распространСнная ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° имСнования классов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π³Π»Π°Π³ΠΎΠ»ΠΎΠ² Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ СстСствСнным.НапримСр, Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΊΡ€ΠΎΠ»ΠΈΠΊ, ΠΈ Π΄Π°Π²Π°ΠΉΡ‚Π΅ опишСм Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π΅Π³ΠΎ основных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ интСрфСйсом:

 интСрфСйс RabbitInterface
{
    публичная функция run ();
    публичная функция jump ();
    публичная функция stop ();
    публичная функция hide ();
} 

ΠœΡ‹ просто создаСм ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ· Rabbit class:

 $ ΠΊΡ€ΠΎΠ»ΠΈΠΊ = Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΡ€ΠΎΠ»ΠΈΠΊ ();
$ rabbit-> Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ();
$ ΠΊΡ€ΠΎΠ»ΠΈΠΊ-> стоп (); 

Код Π»Π΅Π³ΠΊΠΎ читаСтся. ΠœΠ΅Ρ‚ΠΎΠ΄ run запускаСт rabbit , ΠΌΠ΅Ρ‚ΠΎΠ΄ stop — ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятная ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΎΠ½Π° останавливаСт ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ дСйствиС, ΠΈ ΠΊΡ€ΠΎΠ»ΠΈΠΊ останавливаСтся.Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°ΡƒΡ‡ΠΈΠΌ нашСго ΠΊΡ€ΠΎΠ»ΠΈΠΊΠ° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Ρ‚Ρ€ΡŽΠΊΠ°ΠΌ ΠΈ заставим Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ±Π΅ΠΆΠ°Ρ‚ΡŒ фиксированноС расстояниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΄ΠΈΠΌ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ run .

 $ ΠΊΡ€ΠΎΠ»ΠΈΠΊ-> Π±Π΅Π³ (100); 

И ΠΎΠ½ ΠΏΠΎΠ±Π΅ΠΆΠ°Π» … Но ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ 100. ΠžΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π»ΠΈ это число ΠΌΠΈΠ½ΡƒΡ‚Ρ‹, ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈΠ»ΠΈ Ρ„ΡƒΡ‚Ρ‹? Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ исправлСно с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ коммСнтария:

 // ΠšΡ€ΠΎΠ»ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΎΠ±Π΅ΠΆΠ°Ρ‚ΡŒ 100 ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²
$ rabbit-> Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ (100); 

Если ΠΊΡ€ΠΎΠ»ΠΈΠΊ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Β«Π±Π΅Π³Π°Ρ‚ΡŒΒ» Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… мСстах ΠΈ ​​строках вашСго ΠΊΠΎΠ΄Π°, ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ· Π½ΠΈΡ… Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ.ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ сразу Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… мСстах. ΠŸΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π², — это Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ число Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ.

 $ ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² = 100;
$ rabbit-> run ($ ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²); 

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π½Π΅ Π½ΡƒΠΆΠ΅Π½, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° станСт Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡƒΡ‡ΡˆΠ΅, ΠΈ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΊΡ€ΠΎΠ»ΠΈΠΊ ΠΏΡ€ΠΎΠ±Π΅Π³Π°Π΅Ρ‚ ΠΏΠΎ ΠΊΠΎΠ΄Ρƒ 100 ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Но Π»ΡƒΡ‡ΡˆΠΈΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ контСкст ΠΊ ΠΈΠΌΠ΅Π½ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

 $ ΠΊΡ€ΠΎΠ»ΠΈΠΊ-> runInMetres (100); 

ΠšΡ€ΠΎΠ»ΠΈΠΊ — ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅, Π±Π΅Π³, — Π½Π°Ρ€Π΅Ρ‡ΠΈΠ΅, Π² ΠΌΠ΅Ρ‚Ρ€Π°Ρ…, — контСкст, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ добавляСм Π² ΠΌΠ΅Ρ‚ΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΡƒΠ»Π°Π²Π»ΠΈΠ²Π°Π» ΡΡƒΡ‚ΡŒ.По этой схСмС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

 $ ΠΊΡ€ΠΎΠ»ΠΈΠΊ-> runInSeconds (25);
$ rabbit-> runTillTime (Π½ΠΎΠ²Ρ‹ΠΉ \ DateTime ('Π·Π°Π²Ρ‚Ρ€Π°'));
$ rabbit-> runTillTheEndOfForest ($ sherwood); 

Они охватят ΡΡƒΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π². ΠŸΡ€ΠΎΡΡ‚ΠΎ Π΄Π°ΠΉΡ‚Π΅ своим ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π°, ΠΈ Π²Ρ‹ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚Π΅ количСство Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π² своСм ΠΊΠΎΠ΄Π΅. Π ΠΎΠ±Π΅Ρ€Ρ‚ ΠœΠ°Ρ€Ρ‚ΠΈΠ½ Π΄Π°Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ совСт ΠΏΠΎ этому ΠΏΠΎΠ²ΠΎΠ΄Ρƒ:

НС Ρ‚Ρ€Π°Ρ‚ΡŒΡ‚Π΅ врСмя Π½Π° написаниС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π², Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ созданный Π²Π°ΠΌΠΈ бСспорядок, — ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΡŒΡ‚Π΅ Π΅Π³ΠΎ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ это.

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ слишком Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ? Как ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°? НС Π½ΡƒΠΆΠ½ΠΎ Π±ΠΎΡΡ‚ΡŒΡΡ Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… ΠΈΠΌΠ΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Π”Π»ΠΈΠ½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ сути ΠΈ Π½Π΅ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² Π½Π΅Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ тСкст. Π’ этом ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ подходят ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹:

 $ ΠΊΡ€ΠΎΠ»ΠΈΠΊ-> runUntilFindVegetables ();
$ rabbit-> runForwardAndTurnBackIfMeet ([$ wolf, $ hunter]); 

Π­Ρ‚ΠΎ ΡƒΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€:

 $ rabbit-> runForwardUntilFindCarrotOrCabbageAndTurnBackIfMeetWolfOrHunter (); 

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠ»ΠΎΡ…ΠΎ читаСтся, Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°.Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊ:

 $ conditions = new Condition ();

$ untilCondition = (Π½ΠΎΠ²ΠΎΠ΅ условиС \ Π”ΠΎ ()) -> findVegetables ('ΠΌΠΎΡ€ΠΊΠΎΠ²ΡŒ', 'капуста');
$ turnBackCondition = (Π½ΠΎΠ²ΠΎΠ΅ условиС \ TurnBack ()) -> ifMeet ('Π²ΠΎΠ»ΠΊ', 'ΠΎΡ…ΠΎΡ‚Π½ΠΈΠΊ');

$ условия-> Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ($ untilCondition) -> Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ($ turnBackCondition);
$ rabbit-> run (НаправлСниС :: Π’ΠŸΠ•Π Π•Π”, $ условия); 

Π•ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² Π΄Π»ΠΈΠ½Π΅ ΠΈΠΌΠ΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². НапримСр, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ спСцификации для phpSpec, Ρƒ вас ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π½Π° Π΄Π»ΠΈΠ½Ρƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π³Π»Π°Π²Π½ΠΎΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ваш ΠΊΠΎΠ΄ ΡƒΠ»Π°Π²Π»ΠΈΠ²Π°Π» ΡΡƒΡ‚ΡŒ.Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ phpSpec:

 класс MovieSpec Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ ObjectBehavior
{
    функция it_should_have_john_smith_in_the_cast_with_a_lead_role ()
    {
        $ this-> getCast () -> shouldHaveKeyWithValue ('leadRole', 'Π”ΠΆΠΎΠ½ Π‘ΠΌΠΈΡ‚');
    }
} 

Π’ спСцификациях ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΈΠΌΠ΅Π½Π°Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΈ Ρ‚Π°ΠΊ Π»Π΅Π³Ρ‡Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ прСдлоТСния. Он Π½Π΅ соотвСтствуСт стандарту PSR, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ camelCase , Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΡ‹ΠΌ для удобочитаСмости тСстов.

ΠžΡ‰ΡƒΡ‰Π΅Π½ΠΈΠ΅ Π½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰Π΅ΠΉ Π΄Π»ΠΈΠ½Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΏΡ€ΠΈΠ΄Π΅Ρ‚ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΈ ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΠ· популярных Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ характСристики

Π£ΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΉ

ΠžΡ‡Π΅Π½ΡŒ часто программисты ΠΌΠ΅Π½ΡΡŽΡ‚ ΠΊΠΎΠ΄, Π½ΠΎ Π·Π°Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ. ОсобСнно, ΠΊΠΎΠ³Π΄Π° Π½Π°Π΄ ΠΎΠ΄Π½ΠΈΠΌ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ нСсколько программистов. Π•ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Π½ΠΎ ΠΎΠ½ΠΈ написаны ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· программистов, Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π½Π΅ ΠΎΡΠΌΠ΅Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, написанныС Π΄Ρ€ΡƒΠ³ΠΈΠΌ программистом, Π»ΠΈΠ±ΠΎ слишком Π»Π΅Π½ΠΈΠ²Ρ‹ для этого, Π»ΠΈΠ±ΠΎ просто Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ внимания.Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ эти старыС ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°ΠΏΡƒΡ‚Π°ΡŽΡ‚ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°. РСшСниС этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ довольно простоС. Как Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, всСгда ΠΎΠ±Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π², Π½ΠΎ это ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ вашСго внимания ΠΈ усилий. Или просто ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ старыС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ. НСт ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π»ΡƒΡ‡ΡˆΠ΅ старых ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π².

Π Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Π—Π½Π°Ρ‡ΠΈΡ‚, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ излишний ΠΈ ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ Ρ‚Π°ΠΌ, Π³Π΄Π΅ всС понятно Π±Π΅Π· коммСнтария. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ коммСнтариями:

 // Π Π°Π·Ρ€Π΅Π·Π°Ρ‚ΡŒ ΠΌΠΎΡ€ΠΊΠΎΠ²ΡŒ Π½Π° 4 части
$ pieceOfCarrot = $ ΠΌΠΎΡ€ΠΊΠΎΠ²ΡŒ / 4;
// ΠŸΡƒΡΡ‚ΡŒ ΠΊΡ€ΠΎΠ»ΠΈΠΊ ΡΡŠΠ΅ΡΡ‚ всС кусочки ΠΌΠΎΡ€ΠΊΠΎΠ²ΠΈ ΠΎΠ΄ΠΈΠ½ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ
foreach ($ pieceOfCarrot as $ pieceOfCarrot) {
    $ rabbit-> ΡΡŠΠ΅ΡΡ‚ΡŒ ($ pieceOfCarrot); // ΠšΡ€ΠΎΠ»ΠΈΠΊ Сст ΠΌΠΎΡ€ΠΊΠΎΠ²ΡŒ
} 

Если ΠΌΡ‹ ΡƒΠ΄Π°Π»ΠΈΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, ΠΊΠΎΠ΄ останСтся чистым:

 $ ΡˆΡ‚ΡƒΠΊ ΠΌΠΎΡ€ΠΊΠΎΠ²ΠΈ = $ ΠΌΠΎΡ€ΠΊΠΎΠ²ΡŒ / 4;
foreach ($ pieceOfCarrot as $ pieceOfCarrot) {
    $ rabbit-> ΡΡŠΠ΅ΡΡ‚ΡŒ ($ pieceOfCarrot);
} 

ΠΠ΅Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ

ΠŸΡ€ΠΈ написании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ быстро Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свою идСю, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π² ΠΊΠΎΠ΄.Когда ΠΏΠΎΠ·ΠΆΠ΅ Π²Ρ‹ Π²Π΅Ρ€Π½Π΅Ρ‚Π΅ΡΡŒ ΠΊ этому Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρƒ, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ Π²Π°ΠΌ ΠΎ вашСй мысли, ΠΈ Π²Ρ‹ смоТСтС ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ваша идСя Π±Ρ‹Π»Π° ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π΅Π½Π° Π² ΠΊΠΎΠ΄, Π²Π°ΠΌ слСдуСт ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π½Π΅ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΈΠ»ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Π½Π΅ заставляйтС Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉ Π³Π°Π΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΈΠΌΠ΅Π»ΠΈ Π² Π²ΠΈΠ΄Ρƒ. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ с описания Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Сст ΠΊΡ€ΠΎΠ»ΠΈΠΊ:

 общСствСнноС мСроприятиС Π΅ΡΡ‚ΡŒ ($ food)
{
    switch ($ food) {
        футляр 'ΠΌΠΎΡ€ΠΊΠΎΠ²ΡŒ':
            $ this-> getCalories (50);
            ΠΏΠ΅Ρ€Π΅Ρ€Ρ‹Π²;
        Ρ‡Π΅Ρ…ΠΎΠ» 'капуста':
            $ this-> getCalories (100);
            ΠΏΠ΅Ρ€Π΅Ρ€Ρ‹Π²;
        Π΄Π΅Ρ„ΠΎΠ»Ρ‚:
            // Если ΠΊΡ€ΠΎΠ»ΠΈΠΊ ΡΡŠΠ΅ΡΡ‚ Π½Π΅ΠΈΠ·Π²Π΅ΡΡ‚Π½ΡƒΡŽ Π΅Π΄Ρƒ - ΠΎΠ½ ΠΏΠΎΠ³ΠΈΠ±Π½Π΅Ρ‚ :(
            ΠΏΠ΅Ρ€Π΅Ρ€Ρ‹Π²;
    }
} 

Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Β«ΠΊΡ€ΠΎΠ»ΠΈΠΊ ΡƒΠΌΡ€Π΅Ρ‚Β»? ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° это происходит Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ.А Ρ‡Ρ‚ΠΎ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ? Π§Ρ‚ΠΎ Ρ…ΠΎΡ‚Π΅Π» Π΄Π΅Π»Π°Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΡ€ послС этого? ΠžΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π·Π°Π½ΡΡ‚ΡƒΡŽ ΠΊΡ€ΠΎΠ»ΠΈΠΊΠΎΠΌ? Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Π° Π·Π°Ρ‚Π΅ΠΌ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΊΠΎΠ΄Π°? Π’ этом ΠΊΠΎΠ΄Π΅ с ΠΊΡ€ΠΎΠ»ΠΈΠΊΠΎΠΌ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ происходит, ΠΊΡ€ΠΎΠ»ΠΈΠΊ просто Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹Ρ… ΠΊΠ°Π»ΠΎΡ€ΠΈΠΉ, ΠΊΠΎΠ³Π΄Π° Сст Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ, ΠΊΡ€ΠΎΠΌΠ΅ ΠΌΠΎΡ€ΠΊΠΎΠ²ΠΈ ΠΈ капусты. Но для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, авторская идСя останСтся нСпонятной. Π’ΠΏΠΎΠ»Π½Π΅ вСроятно, Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ ΡƒΠ΄Π°Π»ΠΈΡ‚ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΈ сдСлаСт Π΅Π³ΠΎ ΠΏΠΎ-своСму.

ΠΠ΅Π΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€Π½ΠΎΡΡ‚ΡŒ

ВсС люди ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡˆΠΈΠ±Π°Ρ‚ΡŒΡΡ.Но программисты вносят ΠΈΡ… Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΊΠΎΠ΄, Π½ΠΎ ΠΈ Π² Π±Π»ΠΎΠΊΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π². Из-Π·Π° Π½Π΅Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, усталости ΠΈΠ»ΠΈ нСзнания иностранного языка ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈ ΡΠ±ΠΈΠ²Π°ΡŽΡ‚ с Ρ‚ΠΎΠ»ΠΊΡƒ Π΄Ρ€ΡƒΠ³ΠΈΡ…. К соТалСнию, Π±Ρ‹Π²Π°Π΅Ρ‚. ЕдинствСнный совСт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я ΠΌΠΎΠ³Ρƒ Π²Π°ΠΌ Π΄Π°Ρ‚ΡŒ, — это нСсти ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π·Π° свои ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ. Если Π²Ρ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ, ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. ΠŸΡ€ΠΈ написании ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ пСрфСкционистом.

ΠΠ΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ

Когда Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ части ΠΊΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ нСизвСстныС ΠΈΠ»ΠΈ Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹.

 // Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ коэффициСнт роста ΠΊΡ€ΠΎΠ»ΠΈΠΊΠ° Π² дСнь, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ зависит ΠΎΡ‚ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ²
$ rabbit-> growInSize (); 

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ рост ΠΊΡ€ΠΎΠ»ΠΈΠΊΠ° опрСдСляСтся Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ зависит ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ². Π’ этом Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΊΠΎΠ΄Π° нСясно, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ индСкс роста ΠΊΡ€ΠΎΠ»ΠΈΠΊΠ° ΠΈ ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΅Π³ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ. Π›ΡƒΡ‡ΡˆΠ΅ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ этот ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΈ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ послС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π—Π½Π°Ρ‡ΠΈΡ‚, ΠΌΡ‹ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Π½Π΅ Ρ‚Π°ΠΊ Π»ΠΈ?

ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡ… Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ, Π½ΠΎ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ нСсти Π·Π° Π½ΠΈΡ… ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ.Π‘Ρ‹Π²Π°ΡŽΡ‚ отвСтствСнныС ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹.

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Π°Ρ Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ

КоС-Π³Π΄Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ. Когда Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° Π³Ρ€ΡƒΠΏΠΏΠ΅ программистов ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Β«Ρ…Π°ΠΊΠΈΒ» Π² ΠΊΠΎΠ΄Π΅ ΠΈ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΏΠΎ этому ΠΏΠΎΠ²ΠΎΠ΄Ρƒ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ это Π±Ρ‹Π»ΠΎ сдСлано, ΠΎ Ρ‡Π΅ΠΌ ΠΈΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ ΠΈ ΠΊΠΎΠ³Π΄Π° Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ. Но Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° для Π²Π°ΡˆΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

ΠžΡ‚ рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ я ΠΎΡ†Π΅ΠΏΠ΅Π½Π΅Π», ΠΈ ΠΌΠ½Π΅ приходится Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… ΠΏΠΎΠ½ΡΡ‚ΡŒ.Π’ этом случаС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ лишнСй.

 // НайдитС всСх ΠΊΡ€ΠΎΠ»ΠΈΠΊΠΎΠ² Π² мСстах,
// ΠΊΠΎΠ½Π΅Ρ† Π½Π°: ΠΏΠΎΠ»Π΅, ΠΏΠΎΠ»Π΅, лСс
// начинаСтся: ΠΆΠ΅Π»Ρ‚Ρ‹ΠΉ, Π·Π΅Π»Π΅Π½Ρ‹ΠΉ
// ΠΈ Π½Π΅ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ ΠΊ рСгистру
// Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π‘Π»ΡΠΊΡˆΠΈΡ€, Π“Ρ€ΠΈΠ½Ρ„ΠΈΠ»Π΄, Π¨Π΅Ρ€Π²ΡƒΠ΄, Π¨Π•Π Π’Π£Π”, Π΄Π΅Ρ€Π΅Π²ΠΎ, ЙСллоустон
$ locationRegExp = '/ \ b (ΠΆΠ΅Π»Ρ‚Ρ‹ΠΉ | Π·Π΅Π»Π΅Π½Ρ‹ΠΉ) \ w * | \ w * (ΡˆΠΈΡ€ | ΠΏΠΎΠ»Π΅ | лСс) \ b / i';
$ rabbits = $ search-> findRabbitsInLocations (locationsRegExp); 

НамСрСния

Π•ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ способов Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ Π·Π°Π΄Π°Ρ‡Ρƒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ программиста свой ΡΡ‚ΠΈΠ»ΡŒ программирования, поэтому Π΅ΠΌΡƒ Π±Ρ‹Π²Π°Π΅Ρ‚ слоТно ΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, написанный ΠΊΠ΅ΠΌ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ.Если Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ программирования ΠΈΠ»ΠΈ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π²Π°ΠΌΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ, помСститС тСкст справки ΠΏΠ΅Ρ€Π΅Π΄ слоТным Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠΌ ΠΊΠΎΠ΄Π°.

УвСдомлСния ΠΈ прСдупрСТдСния

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

  • Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π½Π΅ Π±Ρ‹Π»ΠΎ установлСно Π² производствСнной срСдС ΠΈΠ»ΠΈ поставщик Π½Π΅ Π±Ρ‹Π» ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½;
  • для выполнСния ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ трСбуСтся слишком ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ Π»ΡƒΡ‡ΡˆΠ΅ Π½Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π΅Π΅;
  • ΠΈΠ·-Π·Π° высоких Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ рСсурсам Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ» большС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ количСства Ρ€Π°Π·.

Если Π²Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½Π΅Ρ‚Π΅ΡΡŒ с Ρ‚Π°ΠΊΠΎΠΉ ситуациСй, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π²Π°ΠΌ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹.

ΠŸΡ€ΠΈΡ€ΠΎΡΡ‚

Когда опрСдСлСнная строка ΠΊΠΎΠ΄Π° Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π°ΠΆΠ½Π°, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π΅Π»ΡΡ‚ΡŒ Π΅ΠΉ особоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅. ΠžΠ΄Π½Π°ΠΆΠ΄Ρ‹ я столкнулся с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π΅ Π±Ρ‹Π»ΠΎ настроСно Π½Π° постановку, ΠΈ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΠ» ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° поиск ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Когда ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π±Ρ‹Π»Π° Ρ€Π΅ΡˆΠ΅Π½Π°, я Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π² свой ΠΊΠΎΠ΄ руководство ΠΏΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ с ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ, ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‰ΠΈΠΌ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я это сдСлал:

 // УстановитС ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ MB Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ случаи, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π° Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ
mb_internal_encoding ('UTF-8'); 

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ совСт ΠΎΡ‚ Π”ΠΈΠ½Π° ΠœΠ°Ρ€Ρ‚ΠΈΠ½Π°:

НС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΠΊΠΎΠ΄ — ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡˆΠΈΡ‚Π΅ Π΅Π³ΠΎ.

Когда Π²Ρ‹ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π΅Ρ‚Π΅ΡΡŒ с нСпонятным ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΏΡ‹Ρ‚Π°ΡΡΡŒ Π΅Π³ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Π° Π·Π°Ρ‚Π΅ΠΌ оставляСтС нСсколько ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ Π½Π΅ станСт Π»ΡƒΡ‡ΡˆΠ΅. Π’ этой ситуации, Ссли Π²Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅ ΠΊΠΎΠ΄, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ провСсти Π΅Π³ΠΎ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΌ. Π”Π΅Π²ΠΈΠ· бойскаута: Β«ΠžΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΏΠ°Π»Π°Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ Π»Π°Π³Π΅Ρ€ΡŒ (ΠΊΠΎΠ΄) Ρ‡ΠΈΡ‰Π΅, Ρ‡Π΅ΠΌ Π²Ρ‹ Π΅Π³ΠΎ нашли».

ΠžΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ doc.blocks

БущСствуСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²ΠΈΠ΄ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² PHP, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ свой собствСнный стандарт — ΠΎΠ½ называСтся DocBlock).БущСствуСт инструмСнт phpDocumentor (Ρ‚Π°ΠΊΠΆΠ΅ извСстный ΠΊΠ°ΠΊ phpDoc) для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π±Π»ΠΎΠΊΠΎΠ² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Он ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄ΠΎΠΊΠ±Π»ΠΎΠΊΠΈ ΠΈΠ· ΠΊΠΎΠ΄Π° ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π° ΠΈΡ… основС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ. DocBlock — это комбинация DocComment ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½Ρ‹Ρ… Π² Π½Π΅ΠΌ описаний Π½Π° основС стандарта PHPDoc. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ многострочный ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Ρ‚ΠΈΠΏΠ° C (DocComment):

 / *
 * Π­Ρ‚ΠΎ
 * ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π² стилС C Π² PHP
 * / 

DocBlock выдСляСтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠΎΠΉ / ** Π² Π½Π°Ρ‡Π°Π»Π΅ коммСнтария.

 / **
 * Π­Ρ‚ΠΎ
 * Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ PHP
 * / 

DocBlock ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ строку, Π½ΠΎ, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с / ** .

 / ** Π­Ρ‚ΠΎ Ρ‚ΠΎΠΆΠ΅ Π΄ΠΎΠΊΠ±Π»ΠΎΠΊ * / 

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ PHP Doc для Π”ΠžΠšΠ£ΠœΠ•ΠΠ’ΠΠ¦Π˜Π˜ ΠšΠžΠ”Π PHP основан Π½Π° javaDoc для Java. Π’Π°ΠΆΠ½Ρ‹ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ Docbloc ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚Π΅Π³ΠΈ ΠΈ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ сСмантичСскими. НапримСр, Ρ‚Π΅Π³ ΠΈΠ»ΠΈ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с @ .

 / **
 * Π’Ρ…ΠΎΠ΄ ΠΏΠΎ элСктронной ΠΏΠΎΡ‡Ρ‚Π΅ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŽ
 *
 * @param Request $ request Запрос
 *
 * @return ΠžΡ‚Π²Π΅Ρ‚
 *
 * @throws BadRequestHttpException
 * @throws UnauthorizedHttpException
 *
 * @Rest \ Post ("/ Π²Ρ…ΠΎΠ΄")
 * /
общСдоступная функция loginAction (запрос $ request)
{
} 

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ @param , @return ΠΈ @throws ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚Π΅Π³Π°ΠΌΠΈ PHPDoc, ΠΈ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ phpDocrumentor. @Rest \ Post ("/ login") — это аннотация ΠΊ FOSRestBundle. Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ аннотациями ΠΈ Ρ‚Π΅Π³Π°ΠΌΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅Π³ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ΄ PHP, Π° Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ ΠΊΠΎΠ΄. ΠžΡ‚Π»ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ PHP ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с аннотациями Java являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Java ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ Java, Π° Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ PHP ΡΠ²Π»ΡΡŽΡ‚ΡΡ коммСнтариями, ΠΈ для ΠΈΡ… использования Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ станут Ρ‡Π°ΡΡ‚ΡŒΡŽ PHP, Π½ΠΎ Π² настоящСС врСмя для ΠΈΡ… чтСния Π²Π°ΠΌ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот парсСр. Π’Π°ΠΊΠΆΠ΅ стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ссли ΠΌΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ Π½Π°Ρ‡Π°Π»ΠΎ Π΄ΠΎΠΊ-Π±Π»ΠΎΠΊΠ° с / ** Π½Π° / * , ΠΎΠ½ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠΊ-Π±Π»ΠΎΠΊΠΎΠΌ, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ содСрТит Ρ‚Π΅Π³ΠΈ ΠΈΠ»ΠΈ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ, ΠΈ синтаксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ.

Π”ΠΎΠΊ-Π±Π»ΠΎΠΊΠΈ

Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² сообщСствС программистов PHP, Ρ‡Ρ‚ΠΎ PSR-5 (стандартная рСкомСндация PHP) готовится Π½Π° основС Π΄ΠΎΠΊ-Π±Π»ΠΎΠΊΠΎΠ². Когда я писал эту ΡΡ‚Π°Ρ‚ΡŒΡŽ, это Π±Ρ‹Π» Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊ.

Π’ PHP с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΎΠΊ-Π±Π»ΠΎΠΊΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнты:

  • Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ;
  • ΠΊΠΎΠ½ΠΊΡ‚Π°Π½Ρ‚ΠΎΠ²;
  • классов;
  • интСрфСйсов;
  • Ρ‡Π΅Ρ€Ρ‚;
  • констант класса;
  • ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² нСдвиТимости;
  • ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

Π’Π°ΠΊΠΆΠ΅ Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π΄ΠΎΠΊ-Π±Π»ΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ элСмСнту конструкции. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ класса Π΅ΡΡ‚ΡŒ собствСнный Π΄ΠΎΠΊ-Π±Π»ΠΎΠΊ.

 / **
 * Класс ΠΊΡ€ΠΎΠ»ΠΈΠΊΠ°
 *
 * @ вСрсия 0.1.0
 * /
класс Rabbit Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ RabbitInterface
{
    const STATUS_RUNNING = 'Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚';

    / **
     * @var string $ status Бтатус
     * /
    частный статус $;

    / **
     * Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ статус "Π±Π΅Π³" для ΠΊΡ€ΠΎΠ»ΠΈΠΊΠ°
     *
     * @return $ this
     * /
    публичная функция run ()
    {
        $ this-> status = self :: STATUS_RUNNING;

        Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ $ this;
    }
} 

Π’ PHPDoc ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚Π΅Π³ΠΎΠ², Π½ΠΎ Π½Π΅ всС Ρ‚Π΅Π³ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎ всСм элСмСнтам структуры.НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ список ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ‚Π΅Π³ΠΎΠ², ΠΈΡ… использованиС ΠΈ объяснСниС.

  • @api (method) опрСдСляСт ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ общСдоступныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, сСмантика ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ измСнится Π΄ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ основного выпуска.
  • @author (Π² любом мСстС) опрСдСляСт имя ΠΈΠ»ΠΈ адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ Π°Π²Ρ‚ΠΎΡ€Π°, написавшСго ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄.
  • @copyright (Π² любом мСстС) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для обозначСния Π²Π°ΡˆΠΈΡ… авторских ΠΏΡ€Π°Π² Π² ΠΊΠΎΠ΄Π΅.
  • @deprecated (Π² любом мСстС) — ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ Ρ‚Π΅Π³, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ этот элСмСнт исчСзнСт Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… вСрсиях.ΠžΠ±Ρ‹Ρ‡Π½ΠΎ вмСсто ΠΊΠΎΠ΄Π° Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ IDE Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ΡΡ мСста, Π³Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ старыС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Когда Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΉ ΠΊΠΎΠ΄ для Π½ΠΎΠ²ΠΎΠΉ вСрсии, поиск ΠΏΠΎ этому Ρ‚Π΅Π³Ρƒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ‰Π΅.
  • @example (Π² любом мСстС) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для вставки ссылки Π½Π° Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ Π²Π΅Π±-страницу, Π³Π΄Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΊΠΎΠ΄Π°. Π’ настоящСС врСмя phpDocumentor ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ этот Ρ‚Π΅Π³ Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ поддСрТиваСтся.
  • @filesource (file) — это Ρ‚Π΅Π³, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² самом Π½Π°Ρ‡Π°Π»Π΅ php Ρ„Π°ΠΉΠ»Π°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ этот Ρ‚Π΅Π³ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ вСсь ΠΊΠΎΠ΄ Π² ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ.
  • @global (пСрСмСнная) — Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ этот Ρ‚Π΅Π³ Π½Π΅ поддСрТиваСтся, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… вСрсиях ΠΏΡ€ΠΈ Π΅Π³ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅.
  • @ignore (Π² любом мСстС) — Π΄ΠΎΠΊ-Π±Π»ΠΎΠΊ с этим Ρ‚Π΅Π³ΠΎΠΌ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ создании Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Π΄Π°ΠΆΠ΅ Ссли Π΅ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚Π΅Π³ΠΈ.
  • @internal (Π² любом мСстС) — часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ с Ρ‚Π΅Π³ΠΎΠΌ @api, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ этой части ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ с этим Ρ‚Π΅Π³ΠΎΠΌ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ.
  • @license (Ρ„Π°ΠΉΠ», класс) ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ написанного ΠΊΠΎΠ΄Π°.
  • @link (Π² любом мСстС) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для добавлСния ссылок, Π½ΠΎ согласно Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ этот Ρ‚Π΅Π³ Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ поддСрТиваСтся.
  • @method (class) примСняСтся ΠΊ классу ΠΈ описываСт ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ __call () .
  • @package (Ρ„Π°ΠΉΠ», класс) Π΄Π΅Π»ΠΈΡ‚ ΠΊΠΎΠ΄ Π½Π° логичСскиС ΠΏΠΎΠ΄Π³Ρ€ΡƒΠΏΠΏΡ‹. Когда Π²Ρ‹ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚Π΅ классы Π² ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ пространство ΠΈΠΌΠ΅Π½, Π²Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ Π½Π° ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ сходство.Если классы ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ ΠΊ Ρ€Π°Π·Π½Ρ‹ΠΌ пространствам ΠΈΠΌΠ΅Π½, Π½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ логичСскиС характСристики, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ сгруппированы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого Ρ‚Π΅Π³Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, это относится ΠΊ классам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ всС Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с Ρ‚Π΅Π»Π΅ΠΆΠΊΠΎΠΉ покупатСля, Π½ΠΎ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ ΠΊ Ρ€Π°Π·Π½Ρ‹ΠΌ пространствам ΠΈΠΌΠ΅Π½). Но Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ситуации. НапримСр, ΡΡ‚ΠΈΠ»ΡŒ ΠΊΠΎΠ΄Π° Symfony Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ этот Ρ‚Π΅Π³.
  • @param (ΠΌΠ΅Ρ‚ΠΎΠ΄, функция) описываСт входящиС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ описываСтС входящиС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΎΠΊ-Π±Π»ΠΎΠΊΠΎΠ², Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ всС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π΄Π²Π°.
  • @property (class) — ΠΊΠ°ΠΊ ΠΈ @method этот Ρ‚Π΅Π³ помСщаСтся Π² Π΄ΠΎΠΊ-Π±Π»ΠΎΠΊ класса, Π½ΠΎ Π΅Π³ΠΎ функция — ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ свойства, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ осущСствляСтся доступ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ магичСских Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ __get () ΠΈ __set () .
  • @ property-read, @ property-write (class) Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ Ρ‚Π΅Π³Ρƒ, Π½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ магичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ __get () ΠΈΠ»ΠΈ __set () .
  • @return (ΠΌΠ΅Ρ‚ΠΎΠ΄, функция) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для описания значСния, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ.Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ‚ΠΈΠΏ, ΠΈ PhpStorm Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚ Π΅Π³ΠΎ ΠΈ даст Π²Π°ΠΌ Ρ€Π°Π·Π½Ρ‹Π΅ совСты, Π½ΠΎ Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎΠ± этом ΠΏΠΎΠ·ΠΆΠ΅.
  • @see (Π² любом мСстС) — с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого Ρ‚Π΅Π³Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ссылки Π½Π° внСшниС рСсурсы (ΠΊΠ°ΠΊ ΠΈ Π² случаС с @link ), Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ позволяСт Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ссылки Π½Π° классы ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.
  • @since (Π² любом мСстС) — ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ появился кусок ΠΊΠΎΠ΄Π°.
  • @source (Π² любом мСстС, ΠΊΡ€ΠΎΠΌΠ΅ Π½Π°Ρ‡Π°Π»Π°) — с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого Ρ‚Π΅Π³Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ куски исходного ΠΊΠΎΠ΄Π° (Π²Ρ‹ Π·Π°Π΄Π°Π΅Ρ‚Π΅ Π½Π°Ρ‡Π°Π»ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ† строки ΠΊΠΎΠ΄Π°)
  • @throws (функция ΠΌΠ΅Ρ‚ΠΎΠ΄Π°) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для указания ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Ρ‹ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ.
  • @todo (Π² любом мСстС) — Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ оптимистичный Ρ‚Π΅Π³, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ программистами ΠΊΠ°ΠΊ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΊΠΎΠ΄Π°. Π’ IDE Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ этот Ρ‚Π΅Π³ ΠΈ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС части ΠΊΠΎΠ΄Π° Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΎΠΊΠ½Π΅, Ρ‡Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ для дальнСйшСго поиска. Π­Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ стандарт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΡ‡Π΅Π½ΡŒ часто.
  • @uses (Π² любом мСстС) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для отобраТСния связи ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ частями ΠΊΠΎΠ΄Π°. Он ΠΏΠΎΡ…ΠΎΠΆ Π½Π° @see .Π Π°Π·Π½ΠΈΡ†Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ @see создаСт ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΡƒΡŽ ссылку, ΠΈ послС ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° Π½ΠΎΠ²ΡƒΡŽ страницу Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Ρƒ вас Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ссылки, Π° @uses прСдоставит Π²Π°ΠΌ ссылку для ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ.
  • @var (пСрСмСнная) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для указания ΠΈ описания ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ для свойств класса. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒ этот Ρ‚Π΅Π³ ΠΈ @param . Π’Π΅Π³ @param ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π΄ΠΎΠΊ-Π±Π»ΠΎΠΊΠ°Ρ… для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ описываСт входящиС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Π° @var ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для описания ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….
  • @version (Π² любом мСстС) ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ появляСтся этот класс, ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ Ρ‚. Π”.

Π£ΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ Ρ‚Π΅Π³ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, скорСС всСго, Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ:

  • @category (Ρ„Π°ΠΉΠ», класс) использовался для Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² вмСстС.
  • @subpackage (Ρ„Π°ΠΉΠ», класс) использовался для обозначСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π³Ρ€ΡƒΠΏΠΏ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅.

НС всС Ρ‚Π΅Π³ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ популярны. @var, @param, @return, @todo, @throws Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ.ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Π½Π΅Π΅ популярны. А Ρ‚Π°ΠΊΠΈΡ… Ρ‚Π΅Π³ΠΎΠ², ΠΊΠ°ΠΊ @property ΠΈ @method я Π½Π΅ встрСчал, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΌΠ°Π³ΠΈΠ΅ΠΉ опасно!

ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° использования Π΄ΠΎΠΊ-Π±Π»ΠΎΠΊΠΎΠ² Π² IDE

Если Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ общСдоступный API с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΎΠΊ-Π±Π»ΠΎΠΊΠΎΠ². Π­Ρ‚ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π°Π΅Ρ‚ Π²Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ позволяСт Π΄Ρ€ΡƒΠ³ΠΈΠΌ программистам с ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ваш ΠΊΠΎΠ΄ Π² своСй срСдС IDE. Π§Ρ‚ΠΎ касаСтся вашСго частного ΠΊΠΎΠ΄Π° для аутсорсингового ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, использованиС Π΄ΠΎΠΊ-Π±Π»ΠΎΠΊΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ нСумСстным, Π½ΠΎ Π² любом случаС я ΡΠΎΠ²Π΅Ρ‚ΡƒΡŽ Π²Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ…, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ускорят Π²Π°ΡˆΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ.

Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ ΡΠ°ΠΌΡƒΡŽ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΡƒΡŽ PHP IDE для PHP — PhpStorm. И посмотритС Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ поиска ΠΊΡ€ΠΎΠ»ΠΈΠΊΠ°:

 $ ΠΊΡ€ΠΎΠ»ΠΈΠΊΠΎΠ² = $ search-> findRabbitsInLocations ('/ Sherwood /');
foreach ($ ΠΊΡ€ΠΎΠ»ΠΈΠΊΠΈ ΠΊΠ°ΠΊ $ ΠΊΡ€ΠΎΠ»ΠΈΠΊ) {
    $ rabbit-> doSomething ();
} 

Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ $ ΠΊΡ€ΠΎΠ»ΠΈΠΊΠΈ ΠΈ $ ΠΊΡ€ΠΎΠ»ΠΈΠΊ ? PhpStorm Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΎΠ± этом Π½Π΅ Π·Π½Π°Π΅Ρ‚. PHP слабо Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½, ΠΈ Ρ‚ΠΈΠΏ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ строго Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ Π² описании (ΠΏΡ€ΠΈΠ²Π΅Ρ‚, PHP 7, Π³Π΄Π΅ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½).Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ своСй срСдС IDE, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ частями ΠΊΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΎΠΊ-Π±Π»ΠΎΠΊΠΎΠ². Π•ΡΡ‚ΡŒ нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ². МоТно Ρ‚Π°ΠΊ:

 / ** @var Rabbit $ rabbit * /
foreach ($ ΠΊΡ€ΠΎΠ»ΠΈΠΊΠΈ ΠΊΠ°ΠΊ $ ΠΊΡ€ΠΎΠ»ΠΈΠΊ) {
    $ rabbit-> doSomething ();
} 

Или Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ‚Π΅Π³ @return Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ findRabbitsInLocations :

 / **
 * @return Rabbit []
 * /
общСдоступная функция findRabbitsInLocations ($ location)
{
    // здСсь ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ...
    Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ [];
} 

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Rabbit [] , Π° Π½Π΅ Rabbit .Π‘ΠΊΠΎΠ±ΠΊΠΈ ΠΏΠΎΡΡΠ½ΡΡŽΡ‚, Ρ‡Ρ‚ΠΎ возвращаСтся массив ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² класса. Если ΠΌΡ‹ ΡƒΠ±Π΅Ρ€Π΅ΠΌ скобки, это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ класса Rabbit. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ это Ρ‚Π°ΠΊ: @return null | Rabbit [] , Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ ΠΏΠ°Π»ΠΊΠ° ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ OR, Π² этом случаС ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Π΅Ρ€Π½Π΅Ρ‚ массив ΠΊΡ€ΠΎΠ»ΠΈΠΊΠΎΠ² ΠΈΠ»ΠΈ null .

НСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ способ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Π²Ρ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ PHPStorm ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Π²Π°ΠΌ нСсколько подсказок ΠΈ подсказок послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ Π½Π°Π±Π΅Ρ€Π΅Ρ‚Π΅ $ rabbit-> ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π΅Ρ‚Π΅.

Π­Ρ‚ΠΎ происходит ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ PHPStorm Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π² $ rabbits пСрСмСнная возвращаСтся массивом ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Rabbit . Π—Π°Ρ‚Π΅ΠΌ Π² foreach cycle $ rabbit пСрСмСнная ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ элСмСнт массива, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ класса Rabbit , Π° PHPStorm ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π²Π°ΠΌ всС доступныС общСдоступныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΠ· этого класса. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ классы с общСдоступными ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, написанными вашими ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ, Π½Π΅ отрывая Ρ€ΡƒΠΊ ΠΎΡ‚ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹.

PHPStorm прСдоставит Π²Π°ΠΌ подсказки, ΠΈ Ссли Ρƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π΅ΡΡ‚ΡŒ понятноС имя, Π²Ρ‹ смоТСтС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ, Π΄Π°ΠΆΠ΅ Π½Π΅ читая исходный ΠΊΠΎΠ΄ ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ.

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° полСзная функция, доступная Π²Π°ΠΌ ΠΏΡ€ΠΈ использовании Π΄ΠΎΠΊ-Π±Π»ΠΎΠΊΠΎΠ² с PHPStorm, — это прСдупрСТдСния ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… доступа. Π—Π°ΠΊΠΎΠ½Ρ‡ΠΈΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄ΠΎΠΊ-Π±Π»ΠΎΠΊ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса Rabbit :

 / **
 * ΠŸΡ€ΠΎΠ±Π΅Π³ Π² ΠΌΠ΅Ρ‚Ρ€Π°Ρ…
 *
 * @param int $ meter ΠœΠ΅Ρ‚Ρ€Ρ‹
 * /
публичная функция runInMetres ($ meter)
{
    // здСсь Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ...
} 

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π»ΠΎΠ΅ число для доступа (Π² PHP 7 ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ число с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ синтаксиса). Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Ссли ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΄ΠΈΠΌ Π² этот ΠΌΠ΅Ρ‚ΠΎΠ΄ массив?

PHPStorm выдСляСт это ΠΈ Π΄Π°Π΅Ρ‚ Π½Π°ΠΌΠ΅ΠΊ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ int здСсь ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ массив . ΠžΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, ΠΏΡ€Π°Π²Π΄Π°? Подсказки Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ для Π½Π΅ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΡ… классов ΠΈ интСрфСйсов. Если ваш ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ нСсколько Ρ‚ΠΈΠΏΠΎΠ² входящих Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅ ΠΈΡ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ |.Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Ссли ΠΌΠ΅Ρ‚ΠΎΠ΄ runInMetres () ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с массивами, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ @param int | array $ meter Meters , ΠΈ Π΄ΠΎΠΊΠ±Π»ΠΎΠΊ пСрСстанСт ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ прСдупрСТдСния.

PhpStorm Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΊ-Π±Π»ΠΎΠΊΠΈ. ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ курсор Π² строку Π½Π°Π΄ объявлСниСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, класса ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ / ** ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π’Π²Π΅Π΄ΠΈΡ‚Π΅ . IDE сгСнСрируСт шаблон Π΄ΠΎΠΊ-Π±Π»ΠΎΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, Ссли Ρ…ΠΎΡ‚ΠΈΡ‚Π΅. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ созданиС Π΄ΠΎΠΊ-Π±Π»ΠΎΠΊΠ°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Alt + Insert.

Как ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ стилям коммСнтирования

Π₯ΠΎΡ€ΠΎΡˆΠΎ, Ссли всС Ρ‡Π»Π΅Π½Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΡΠΎΠ±Π»ΡŽΠ΄Π°ΡŽΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π° коммСнтирования PHPDoc.Но Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ это случаСтся Ρ€Π΅Π΄ΠΊΠΎ. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π° ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ пСрфСкционисты, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Π΅, ΠΊΡ‚ΠΎ Π΄Π°Π²Π½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄ΠΎΠΊ-Π±Π»ΠΎΠΊΠ°ΠΌΠΈ, ΠΈ это вошло для Π½ΠΈΡ… Π² ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡ΠΊΡƒ. НСкоторыС Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ программисты хотят ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΊ-Π±Π»ΠΎΠΊΠΈ, Π½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π·Π°Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ Ρ‚Π΅Π³ΠΈ. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π΅ΡΡ‚ΡŒ ΠΊΡ€Π΅ΠΏΠΊΠΈΠ΅ ΠΎΡ€Π΅ΡˆΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π΄ΠΎΠΊ-Π±Π»ΠΎΠΊΠΈ, Π΄Π°ΠΆΠ΅ Ссли ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ дискомфорт, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‡Π»Π΅Π½ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π΄ΠΎΠΊ-Π±Π»ΠΎΠΊΠΎΠ² Π² PhpStorm: Настройки> Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€> Π˜Π½ΡΠΏΠ΅ΠΊΡ†ΠΈΠΈ> PHPDoc ΠΈ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ всС Ρ„Π»Π°ΠΆΠΊΠΈ:

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, всСх ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° нСльзя.Для самых Π»Π΅Π½ΠΈΠ²Ρ‹Ρ… я Ρ…ΠΎΡ‡Ρƒ Π΅Ρ‰Π΅ Ρ€Π°Π· Π΄Π°Ρ‚ΡŒ совСт ΠΈΠ· «Чистого ΠΊΠΎΠ΄Π°Β» (Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π°, Π½ΠΎ послСдствия Ρ‚Π΅ ΠΆΠ΅):

ΠŸΡ€Π°Π²ΠΈΠ»Π° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒΡΡ всСми Ρ‡Π»Π΅Π½Π°ΠΌΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‡Π»Π΅Π½ Π³Ρ€ΡƒΠΏΠΏΡ‹ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ достаточно Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ расставлСны Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ всС Π½Π΅ согласились Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΈΡ… ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ phpDocumentor

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° всС ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ ΠΈ ваш ΠΊΠΎΠ΄ ΠΏΠΎΠ»ΠΎΠ½ Π΄ΠΎΠΊ-Π±Π»ΠΎΠΊΠΎΠ², Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ.Π― ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΈΡˆΡƒ ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ phpDocumentor, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ самыС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ php-ΠΊΠΎΠ΄Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС.

Π˜Ρ‚Π°ΠΊ, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ phpDocumentor. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ глобально ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

 $ wget http://www.phpdoc.org/phpDocumentor.phar
$ chmod + x phpDocumentor.phar
$ sudo mv phpDocumentor.phar / usr / Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ / bin / phpdoc
$ phpdoc - вСрсия 

Или Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π΅Π³ΠΎ ΠΊΠ°ΠΊ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊ composer.json вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

 $ composer require --dev "phpdocumentor / phpdocumentor: 2. *" 

И Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ Π΄ΠΎΠΊ-Π±Π»ΠΎΠΊΠ°ΠΌΠΈ, просто запуститС Π΅Π³ΠΎ с консоли.

 $ phpdoc -d src / 

Как я ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π», это самый Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΎΠΏΡ†ΠΈΠΉ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, опция -d src / ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. БгСнСрированная информация Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ output .ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ρƒ этой ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Ρ€Π°Π·Π½Ρ‹Π΅ характСристики ΠΈ мноТСство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° PHPDocumentor, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ шаблон ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свой собствСнный.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Sami

O Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ инструмСнт для докумСнтирования PHP Π½Π° основС Π΄ΠΎΠΊ-Π±Π»ΠΎΠΊΠΎΠ² — это ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° Sami. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, это Π½Π΅ Ρ‚Π°ΠΊ популярно, Π½ΠΎ я Ρ€Π΅ΡˆΠΈΠ» ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ ΠΎΠ± этом, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ докумСнтация Symfony создаСтся с использованиСм Sami. И Fabien Potencier, создавший эту ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ, ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ ΠΎΠ± этом Π² своСм Π±Π»ΠΎΠ³Π΅.

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Sami отличаСтся ΠΎΡ‚ phpDocumentor Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ конфигурация хранится Π² Ρ„Π°ΠΉΠ»Π°Ρ… PHP. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, Ρƒ Π½Π΅Π³ΠΎ большС возмоТностСй для настройки, Ρ‡Π΅ΠΌ Ρƒ phpDocumentor, Π½ΠΎ Π²Π°ΠΌ придСтся Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ всС это Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄. Π’Ρ‹ Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π·Π° созданиС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. ВсС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° TWIG, плюс ΠΈΡ… Π»Π΅Π³ΠΊΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ. Для получСния Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π‘Π°ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° страницу GitHub.

PHPDoc ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ | PhpStorm

Для ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ PhpStorm прСдоставляСт Π°Π²Ρ‚ΠΎΠ·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. PhpStorm создаСт Π·Π°Π³Π»ΡƒΡˆΠΊΠΈ Π±Π»ΠΎΠΊΠΎΠ² PHPDoc, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π²Π²ΠΎΠ΄ΠΈΡ‚Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Ρ‚Π΅Π³ / ** ΠΈ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚Π΅ , Π²Π²ΠΎΠ΄ΠΈΡ‚Π΅ ΠΈΠ»ΠΈ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚Π΅ Alt + Insert ΠΈ Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚Π΅ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΊΠΎΠ΄Π° (класс, ΠΌΠ΅Ρ‚ΠΎΠ΄, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ Ρ‚. Π”.) Для Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚. Π’ зависимости ΠΎΡ‚ вашСго Π²Ρ‹Π±ΠΎΡ€Π° PhpStorm создаст Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ‚Π΅Π³ΠΈ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ ΠΏΡƒΡΡ‚ΡƒΡŽ Π·Π°Π³Π»ΡƒΡˆΠΊΡƒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Π΅Π³ΠΈ, спСцифичныС для PHP, PhpStorm обСспСчиваСт Π°Π²Ρ‚ΠΎΠ·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π° Ρ‚Π΅Π³ΠΎΠ², Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹Π΅ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ контСкстС.Если ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ‚Π΅Π³ ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° прСдоставляСт список доступных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

Π’ коммСнтариях PHPDoc PhpStorm ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ форматирования Π² соотвСтствии с ZEND, PEAR ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ стандартами кодирования.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ PHPDoc Π² исходном ΠΊΠΎΠ΄Π΅ доступны для быстрого поиска Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ быстро ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для любого Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ символа. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΈΡ… для просмотра Π² ΠΎΠΊΠ½Π΅ инструмСнта Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Π½Π°ΠΆΠ°Π² Ctrl + Q .

Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ

  1. НаТмитС Ctrl + Alt + S , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ настройки IDE ΠΈ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Editor | ΠžΠ±Ρ‰ΠΈΠ΅ | Π£ΠΌΠ½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ.
  2. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ Β«Π’Π²ΠΎΠ΄Β» установитС ΠΈΠ»ΠΈ снимитС Ρ„Π»Π°ΠΆΠΎΠΊ Β«Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π·Π°Π³Π»ΡƒΡˆΠΊΡƒ коммСнтария ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈΒ».

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠ° PHPDoc для конструкции ΠΊΠΎΠ΄Π°

  1. Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ созданиС Π±Π»ΠΎΠΊΠ° PHPDoc, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… дСйствий:

    • ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ курсор ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠΉ конструкциСй ΠΊΠΎΠ΄Π° (класс, ΠΌΠ΅Ρ‚ΠΎΠ΄, функция ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅), Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌΡƒ Π±Π»ΠΎΠΊΡƒ / ** ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π’Π²Π΅Π΄ΠΈΡ‚Π΅ .

    • Π’ контСкстном мСню Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΊΠΎΠ΄Π°, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄ΡƒΡ‚ созданы ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ PHPDoc.

    • НаТмитС Alt + Insert , Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Β«Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π±Π»ΠΎΠΊΠΈ PHPDocΒ» ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΊΠΎΠ΄Π°, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄ΡƒΡ‚ созданы ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ PHPDoc.

    PhpStorm Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΊΠΎΠ΄Π°, ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π΅ΠΉ, Π³Π΄Π΅ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈ Π½Π° этой основС Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π·Π°Π³Π»ΡƒΡˆΠΊΡƒ Π±Π»ΠΎΠΊΠ° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

  2. ΠžΠΏΠΈΡˆΠΈΡ‚Π΅ пСрСчислСнныС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ, ΠΏΡ€ΠΈ нСобходимости, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ значСния. PhpStorm провСряСт ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ синтаксис Π² коммСнтариях Π² соотвСтствии с настройками ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΊΠΎΠ΄Π°.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚Π΅Π³ΠΎΠ² Π² Π±Π»ΠΎΠΊΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² PHPDoc

PhpStorm Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΊΠΎΠ΄Π°, ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π΅ΠΉ, Π³Π΄Π΅ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈ Π½Π° этой основС Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π·Π°Π³Π»ΡƒΡˆΠΊΡƒ Π±Π»ΠΎΠΊΠ° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΈ нСобходимости Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.

  1. Π’ Π±Π»ΠΎΠΊΠ΅ PHPDoc Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΏΡƒΡΡ‚ΡƒΡŽ строку ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Ctrl + ΠŸΡ€ΠΎΠ±Π΅Π» .

  2. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ‚Π΅Π³ ΠΈΠ· списка ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

  3. Если Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Ρ‚Π΅Π³ ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Ctrl + ΠŸΡ€ΠΎΠ±Π΅Π» ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π½ΡƒΠΆΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· списка ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

НастройтС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² PHPDoc

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ внСшний Π²ΠΈΠ΄ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² PHPDoc, прСдставлСниС ΠΈΠΌΠ΅Π½ классов ΠΈ порядок сортировки Ρ‚Π΅Π³ΠΎΠ² ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ‚Π΅Π³ свойств большС Π½Π΅ настраиваСтся, Ρ‚Π΅Π³ @var ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ вставляСтся автоматичСски. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ см. Https://github.com/phpDocumentor/fig-standards/pull/55.

  1. Π’ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ «Настройки / ΠŸΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΡΒ» Ctrl + Alt + S ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ.

  2. ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ PHPDoc ΠΈ настройтС ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ внСшнСго Π²ΠΈΠ΄Π°, установив ΠΈΠ»ΠΈ сняв Ρ„Π»Π°ΠΆΠΊΠΈ.

  3. Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅, ΠΊΠ°ΠΊ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ PhpStorm прСдставлял ΠΈΠΌΠ΅Π½Π° классов для свойств, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ… ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ Ρ‚. Π”., Установив ΠΈΠ»ΠΈ сняв Ρ„Π»Π°ΠΆΠΎΠΊ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° классов.

  4. ΠŸΡ€ΠΈ нСобходимости ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ способ сортировки сгСнСрированных Ρ‚Π΅Π³ΠΎΠ² PHPDoc, установив Ρ„Π»Π°ΠΆΠΎΠΊ Β«Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅Π³ΠΈ PHPDocΒ».

    Π’Π΅Π³ΠΈ PHPDoc, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² список, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΠΎΠ΄ пСрСчислСнными.

ИспользованиС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ ΠΊΠΎΠ΄Π° PHPDoc

PhpStorm прСдоставляСт Π½Π°Π±ΠΎΡ€ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ ΠΊΠΎΠ΄Π°, Π½Π°Ρ†Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π½Π° Π±Π»ΠΎΠΊΠΈ PHPDoc. Π­Ρ‚ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚, ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π»ΠΈ классы, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ константы с ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ PHPDoc ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π»ΠΈ Ρ‚Π΅Π³ΠΈ Π² ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ элСмСнту.

Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ PHPDoc

  1. Π’ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ «Настройки / ΠŸΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΡΒ» Ctrl + Alt + S Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅.

  2. На ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΉΡΡ страницС Inspections Ρ€Π°Π·Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ ΡƒΠ·Π΅Π» PHPDoc Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ PHP.

  3. Π’ ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΌΡΡ спискС ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ, установив ΠΈΠ»ΠΈ сняв Ρ„Π»Π°ΠΆΠΎΠΊ рядом с Π½Π΅ΠΉ.

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ PHPDoc прСдоставлСны для конструкций ΠΊΠΎΠ΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.

  1. Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ отсутствия ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² PHPDoc.

  2. Π’ области Β«ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹Β» установитС Ρ„Π»Π°ΠΆΠΊΠΈ рядом с Π½ΡƒΠΆΠ½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ элСмСнта: класс, ΠΌΠ΅Ρ‚ΠΎΠ΄, функция, пСрСмСнная ΠΈΠ»ΠΈ константа.

    Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Π°Π²ΠΈΡ‚ΡŒ сообщСниС ΠΎΠ± ошибкС Β«ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΠ΅Ρ‚ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ PHPDocΒ», Ссли ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ»ΠΈ функция Π½Π΅ содСрТит Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈΠ»ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, установитС Ρ„Π»Π°ΠΆΠΎΠΊ Β«Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ PHPDoc Π±Π΅Π· @ param / @ returnΒ».

ПослСднСС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅: 8 ΠΌΠ°Ρ€Ρ‚Π° 2021 Π³.

PHP | Sentry Documentation

На этой страницС ΠΌΡ‹ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠΌ вас с PHP SDK ΠΎΡ‚ Sentry, автоматичСски сообщая ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΡ… Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

Если Ρƒ вас Π΅Ρ‰Π΅ Π½Π΅Ρ‚ ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи ΠΈ установлСнного ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Sentry, ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ часовой.io, Π·Π°Ρ‚Π΅ΠΌ Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ Π½Π° эту страницу.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ? ВзглянитС Π½Π° наши ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ руководства, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

Sentry PHP SDK обСспСчиваСт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ PHP 7.2 ΠΈΠ»ΠΈ Π½ΠΎΠ²Π΅Π΅.

Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ

Sentry собираСт Π΄Π°Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ SDK Π²ΠΎ врСмя выполнСния вашСго прилоТСния. Они зависят ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Sentry Π³Π»ΡƒΠ±ΠΎΠΊΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ PHP SDK, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Composer Π² своСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎ Composer см. Π’ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Composer.

Bash

Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΎ

  composer require sentry / sdk  

ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚Π΅ настройку ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Sentry, Sentry выдаст Π²Π°ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ DSN ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Π½Π΅ΠΌ источника Π΄Π°Π½Π½Ρ‹Ρ…. Он ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° стандартный URL, Π½ΠΎ это просто прСдставлСниС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ для Sentry SDK. Он состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… частСй, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡, адрСс сСрвСра ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС ошибки, Π΄Π°ΠΆΠ΅ Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ Π²ΠΎ врСмя запуска вашСго прилоТСния, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ скорСС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Sentry PHP SDK.

PHP

Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΎ

  \ Sentry \ init (['dsn' => 'https: //[email protected]/0']);  

ИспользованиС

Π’ PHP Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈΠ±ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Π»ΠΈΠ±ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ послСднюю ΠΎΡˆΠΈΠ±ΠΊΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ captureLastError.

PHP

Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΎ

  ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ {
    $ this-> functionFailsForSure ();
} catch (\ Throwable $ exception) {
    \ Sentry \ captureException (ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ $);
}



\ Sentry \ captureLastError ();  

ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

ΠŸΡ€ΠΎΡΡ‚ΠΎ установитС для traces_sample_rate Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ большС 0.0 послС этого Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

PHP

Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΎ

  \ Sentry \ init ([
  'dsn' => 'https: //[email protected]/0',
  'traces_sample_rate' => 1.0
]);  

Π”Π°Π½Π½Ρ‹Π΅ ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ с использованиСм Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° событий, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Β«Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈΒ», ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π² РаспрСдСлСнной трассировкС. Для Π·Π°Ρ…Π²Π°Ρ‚Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ SDK, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° traces_sample_rate Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ пСрСдаСтся 100% Π·Π°Ρ…Π²Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… трасс. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚Π΅ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² производствСнной срСдС, ΠΈΠ½Π°Ρ‡Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ быстро ΠΈΠ·Ρ€Π°ΡΡ…ΠΎΠ΄ΠΎΠ²Π°Ρ‚ΡŒ свою ΠΊΠ²ΠΎΡ‚Ρƒ.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ Π²Ρ‹Π±ΠΎΡ€ΠΊΠ΅ см. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ ИспользованиС SDK для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ событий.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги

  • ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ

    Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ для SDK.

  • ИспользованиС

    Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ SDK, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ошибки ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ события.

  • Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ

    Π£Π·Π½Π°ΠΉΡ‚Π΅ ΠΎΠ± автоматичСских интСграциях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прСдоставляСт Sentry, ΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΡ… Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ.

  • УстранСниС Π½Π΅ΠΏΠΎΠ»Π°Π΄ΠΎΠΊ

    ДСйствия ΠΏΠΎ ΡƒΡΡ‚Ρ€Π°Π½Π΅Π½ΠΈΡŽ Π½Π΅ΠΏΠΎΠ»Π°Π΄ΠΎΠΊ для PHP

  • ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

    НастройтС Π½Π°ΡˆΡƒ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² соотвСтствии с потрСбностями вашСй ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ домашнюю страницу ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ для поиска ΠΈΠ»ΠΈ просмотра Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ.

  • Π Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰ΠΈΠ΅ события

    ΠžΠ±ΠΎΠ³Π°Ρ‰Π°ΠΉΡ‚Π΅ события Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ контСкстом, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ.

  • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ

    УправляйтС своими событиями ΠΏΡƒΡ‚Π΅ΠΌ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ, очистки ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈ Π΅Π΅ пСрСсылки Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ систСмы.

ΠŸΠΎΠΌΠΎΠ³ΠΈΡ‚Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ этот ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚
Наша докумСнтация ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ исходный ΠΊΠΎΠ΄ ΠΈ доступна Π½Π° GitHub. Π’Π°Ρˆ Π²ΠΊΠ»Π°Π΄ привСтствуСтся, Π±ΡƒΠ΄ΡŒ Ρ‚ΠΎ исправлСниС ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ (Ρ‡Π΅Ρ€Ρ‚ возьми!) Или ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ обновлСния (Β«Π΄Π°, это Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅Β»).

Elasticsearch-PHP [7.x] | Π Π΅Π·ΠΈΠ½ΠΊΠ°

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹

ΠžΠ±Π·ΠΎΡ€ Β»


  • PHP API: master7.x (тСкущая) Π΄Ρ€ΡƒΠ³ΠΈΠ΅ вСрсии Π΄Ρ€ΡƒΠ³ΠΈΠ΅ вСрсии: master7.x (тСкущая) 6.x5.x2.x1.x0.4
  • ΠžΠ±Π·ΠΎΡ€
    • DSL сообщСства
    • БообщСство ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ
    • ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ измСнСния ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с 6.x
  • Установка
  • ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅
  • ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ
    • Π Π°Π±ΠΎΡ‚Π° с массивами ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ JSON Π² PHP
    • ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ хоста
    • Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Π΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ
    • HTTP ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅
    • Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ рСгистратора
    • ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ HTTP
    • ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½
    • ΠŸΡƒΠ» ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ
    • Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€Ρ‹
    • Π‘Π΅Ρ€ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹
    • Настройка настраиваСмой Ρ„Π°Π±Ρ€ΠΈΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ
    • Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ
    • ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ΠΏΠΎ запросу
    • Future Mode (Π Π΅ΠΆΠΈΠΌ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ)
  • ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ
    • ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ управлСния индСксами
    • ΠŸΠΎΠΈΡΠΊΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ
    • Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²
    • ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²
    • ОбновлСниС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²
    • Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²
  • Бсылка — ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ
    • Elasticsearch \ ΠšΠ»ΠΈΠ΅Π½Ρ‚
    • Elasticsearch \ ClientBuilder
    • Elasticsearch \ Namespaces \ AsyncSearchNamespace
    • Elasticsearch \ Namespaces \ AutoscalingNamespace
    • Elasticsearch \ Namespaces \ CatNamespace
    • Elasticsearch \ Namespaces \ CcrNamespace
    • Elasticsearch \ Namespaces \ ClusterNamespace
    • Elasticsearch \ Namespaces \ DanglingIndicesNamespace
    • Elasticsearch \ Namespaces \ DataFrameTransformDeprecatedNamespace
    • Elasticsearch \ Namespaces \ EnrichNamespace
    • Elasticsearch \ Namespaces \ EqlNamespace
    • Elasticsearch \ Namespaces \ FeaturesNamespace
    • Elasticsearch \ Namespaces \ GraphNamespace
    • Elasticsearch \ Namespaces \ IlmNamespace
    • Elasticsearch \ Namespaces \ IndicesNamespace
    • Elasticsearch \ Namespaces \ IngestNamespace
    • Elasticsearch \ Namespaces \ LicenseNamespace
    • Elasticsearch \ Namespaces \ LogstashNamespace
    • Elasticsearch \ Namespaces \ MigrationNamespace
    • Elasticsearch \ Namespaces \ MlNamespace
    • Elasticsearch \ Namespaces \ MonitoringNamespace
    • Elasticsearch \ Namespaces \ NodesNamespace
    • Elasticsearch \ Namespaces \ RollupNamespace
    • Elasticsearch \ Namespaces \ SearchableSnapshotsNamespace
    • Elasticsearch \ Namespaces \ SecurityNamespace
    • Elasticsearch \ Namespaces \ SlmNamespace
    • Elasticsearch \ Namespaces \ SnapshotNamespace
    • Elasticsearch \ Namespaces \ SqlNamespace
    • Elasticsearch \ Namespaces \ SslNamespace
    • Elasticsearch \ Namespaces \ TasksNamespace
    • Elasticsearch \ Namespaces \ TextStructureNamespace
    • Elasticsearch \ Namespaces \ TransformNamespace
    • Elasticsearch \ Namespaces \ WatcherNamespace
    • Elasticsearch \ Namespaces \ XpackNamespace
  • ΠŸΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ²
  • ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΊ выпуску

ΠžΠ±Π·ΠΎΡ€ Β»

Π‘ΠΠœΠžΠ• ΠŸΠžΠŸΠ£Π›Π―Π ΠΠžΠ•

  • Начало Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Elasticsearch: Π²ΠΈΠ΄Π΅ΠΎ
  • Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΊΠΈΠ±Π°Π½Ρƒ: Π²ΠΈΠ΄Π΅ΠΎ
  • ELK для ΠΆΡƒΡ€Π½Π°Π»ΠΎΠ² ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ: Π²ΠΈΠ΄Π΅ΠΎ

PHP Быстрый старт | Google Docs API | Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Google

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ шаги, описанныС Π½Π° ΠΎΡΡ‚Π°Π²ΡˆΠ΅ΠΉΡΡ части этой страницы, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ простой PHP
ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄Π΅Π»Π°Π΅Ρ‚ запросы ΠΊ Google Docs API.

ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ трСбования

Для запуска этого ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ³ΠΎ руководства Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ условия:

  • PHP 5.4 ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅ с интСрфСйсом ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки (CLI) ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ JSON
    установлСно
  • Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ управлСния зависимостями Composer
  • ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Google Cloud Platform с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ API. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ
    Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ API, см.
    Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ API

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π’ этом ΠΊΡ€Π°Ρ‚ΠΊΠΎΠΌ руководствС Π²Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚Π΅ Β«Google Docs APIΒ».2,0

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ установку Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ
страница для Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹
Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ установки.

Π¨Π°Π³ 2: НастройтС ΠΎΠ±Ρ€Π°Π·Π΅Ρ†

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ quickstart.php Π² своСм Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΈ скопируйтС Π΅Π³ΠΎ Π²
ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

Π¨Π°Π³ 3. ЗапуститС ΠΎΠ±Ρ€Π°Π·Π΅Ρ†

ЗапуститС ΠΎΠ±Ρ€Π°Π·Π΅Ρ†, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

  PHP quickstart.php 
 

ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ запускС ΠΎΠ±Ρ€Π°Π·Ρ†Π° Π²Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ доступ:

  1. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ URL-адрСсу Π² своСм Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅.

    Если Π²Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ вошли Π² свою ΡƒΡ‡Π΅Ρ‚Π½ΡƒΡŽ запись Google, Π²Ρ‹
    ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π²ΠΎΠΉΡ‚ΠΈ Π² систСму. Если Π²Ρ‹ вошли Π² нСсколько ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… записСй Google, Π²Ρ‹
    прСдлагаСтся Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΡƒΡ‡Π΅Ρ‚Π½ΡƒΡŽ запись для Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ.

  2. НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠŸΡ€ΠΈΠ½ΡΡ‚ΡŒ .
  3. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ прСдоставлСнный ΠΊΠΎΠ΄, Π²ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π΅Π³ΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅
    Π’Π²Π΅Π΄ΠΈΡ‚Π΅ .

Π‘Π°Π½ΠΊΠ½ΠΎΡ‚Ρ‹

  • Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ хранится Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС, поэтому ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅
    ΠΊΠ°Π·Π½ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ.
  • ΠŸΡ€ΠΎΡ†Π΅ΡΡ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ для ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.
    заявлСниС. Для получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ Π² сСти
    ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, см.
    ИспользованиС OAuth 2.0 для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²Π΅Π±-сСрвСра.

Поиск ΠΈ устранСниС нСисправностСй

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ описаны Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ
пытаСтся Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ это ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ руководство ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с сСртификатом SSL: Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ сСртификат мСстного эмитСнта

Π­Ρ‚Π° ошибка ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΠΈΠΆΠ΅Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ HTTP Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΠΉΡ‚ΠΈ сСртификат.
store, ΠΈ поэтому Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ SSL-соСдинСниС с сСрвСрами Google.Π‘ΠΌ. Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Guzzle
для получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ сСртификатов Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅.

Uncaught InvalidArgumentException: отсутствуСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ URI пСрСнаправлСния

Π­Ρ‚Π° ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ„Π°ΠΉΠ» credentials.json содСрТит ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°
ID Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Для этого ΠΊΠΎΠ΄Π° трСбуСтся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° OAuth Ρ‚ΠΈΠΏΠ° Π”Ρ€ΡƒΠ³ΠΎΠ΅ ,
ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ создан для вас ΠΏΡ€ΠΈ использовании ΠΊΠ½ΠΎΠΏΠΊΠΈ Π½Π° шагС 1. Если Π²Ρ‹ создаСтС свой
собствСнный ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ.

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ

Если Π½Π° экранС согласия OAuth отобраТаСтся ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅
Β«Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΎΒ», вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ области, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚
доступ ΠΊ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Если вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ области, ваш
вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ процСсс ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ
Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ это ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ограничСния. На этапС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅
ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ послС этого прСдупрСТдСния, Π½Π°ΠΆΠ°Π²
Advanced> ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ {Project Name} (нСбСзопасно) .

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°

Xdebug: ДокумСнтация »ВсС настройки

НастраиваСт Ρ„Π°ΠΉΠ» ΠΆΡƒΡ€Π½Π°Π»Π° Xdebug.

Xdebug Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π² этот Ρ„Π°ΠΉΠ» всС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с созданиСм Ρ„Π°ΠΉΠ»ΠΎΠ², пошаговая ΠΎΡ‚Π»Π°Π΄ΠΊΠ°.
ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, сбои ΠΈ отладочная связь.

Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π·Π°Π΄Π°Π² Π² качСствС значСния Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ. УбСдись
Ρ‡Ρ‚ΠΎ систСмный ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ PHP (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, www-data , Ссли Π²Ρ‹
Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Apache) ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π² Ρ„Π°ΠΉΠ».

Π€Π°ΠΉΠ» ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ добавлСния,
ΠΈ поэтому Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ пСрСзаписан ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. НСт ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°
имССтся Π·Π°Ρ‰ΠΈΡ‚Π°.

Π€Π°ΠΉΠ» ΠΆΡƒΡ€Π½Π°Π»Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ Xdebug
Π΄Π΅Π»Π°Π΅Ρ‚ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ IDE:

[2693358] Π–ΡƒΡ€Π½Π°Π» ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ 2020-09-02 07:19: 09.616195
[2693358] [Step Debug] ИНЀОРМАЦИЯ: ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ настроСнному адрСсу / ΠΏΠΎΡ€Ρ‚Ρƒ: localhost: 9003.
[2693358] [Step Debug] ERR: Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. ΠŸΡ€ΠΎΠ±ΠΎΠ²Π°Π»: localhost: 9003 (Ρ‡Π΅Ρ€Π΅Π· xdebug.client_host / xdebug.client_port) :-(
[2693358] [Profiler] ERR: НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» '/foo/cachegrind.out.2693358'.
[2693358] [ΠŸΡ€ΠΎΡ„Π°ΠΉΠ»Π΅Ρ€] ΠŸΠ Π•Π”Π£ΠŸΠ Π•Π–Π”Π•ΠΠ˜Π•: / foo: Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π½Π΅Ρ‚
[2693358] [Врассировка] ΠžΠ¨Π˜Π‘ΠšΠ: Π€Π°ΠΉΠ» '/ foo / trace.1485761369 'Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ.
[2693358] [Врассировка] ΠŸΠ Π•Π”Π£ΠŸΠ Π•Π–Π”Π•ΠΠ˜Π•: / foo: Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π½Π΅Ρ‚
[2693358] Π—Π°ΠΏΠΈΡΡŒ Π·Π°ΠΊΡ€Ρ‹Ρ‚Π° 02.09.2020, 07:19: 09.617510
 

Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ врСмя открытия ( 2020-09-02 07: 19: 09.616195 ),
IP / имя хоста ΠΈ ΠΏΠΎΡ€Ρ‚, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Xdebug пытаСтся ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ
( localhost: 9003 ), ΠΈ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π»ΠΈ ( ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ ΠΊ
ΠΊΠ»ΠΈΠ΅Π½Ρ‚ :-)
). Число Π² скобках ( [2693358] ) — это
Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ процСсса.

Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚:

[2693358]
ID процСсса Π² скобках
02.09.2020 07:19:09.616195
врСмя открытия

Для пошаговой ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ:

ИНЀОРМАЦИЯ: ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ настроСнному адрСсу / ΠΏΠΎΡ€Ρ‚Ρƒ: localhost: 9003.
ΠžΠ¨Π˜Π‘ΠšΠ: Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. ΠŸΡ€ΠΎΠ±ΠΎΠ²Π°Π»: localhost: 9003 (Ρ‡Π΅Ρ€Π΅Π· xdebug.client_host / xdebug.client_port) :-(
 

Для профилирования:

ΠžΠ¨Π˜Π‘ΠšΠ: Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» '/foo/cachegrind.out.2693358'.
ΠŸΠ Π•Π”Π£ΠŸΠ Π•Π–Π”Π•ΠΠ˜Π•: / foo: Π½Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°
 

Для трассировки Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

ΠžΠ¨Π˜Π‘ΠšΠ: Π€Π°ΠΉΠ» '/ foo / trace.1485761369 'Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ.
ΠŸΠ Π•Π”Π£ΠŸΠ Π•Π–Π”Π•ΠΠ˜Π•: / foo: Π½Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°
 

ВсС прСдупрСТдСния ΠΈ ошибки описаны Π½Π° страницС «ОписаниС ошибок» с
ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ инструкции ΠΏΠΎ ΡƒΡΡ‚Ρ€Π°Π½Π΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Ссли это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ВсС ошибки всСгда Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ
Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ вСдСния ΠΆΡƒΡ€Π½Π°Π»Π° PHP (настроСн с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ error_log
Π² php.ini ). ВсС прСдупрСТдСния ΠΈ ошибки Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π²
ΠΆΡƒΡ€Π½Π°Π» диагностики, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Π²Ρ‹Π·Π²Π°Π² xdebug_info ().

Бвязь с ΠΏΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹ΠΌ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ

Π–ΡƒΡ€Π½Π°Π» ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Xdebug ΠΈ IDE.Π­Ρ‚ΠΎ сообщСниС осущСствляСтся Π² XML ΠΈ начинаСтся с XML.
элСмСнт:


         
         
         
         

 

Атрибут fileuri пСрСчисляСт Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ…ΠΎΠ΄Π° вашСго
ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ с breakpoint_set
ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π»ΠΈ настроСны сопоставлСния ΠΏΡƒΡ‚Π΅ΠΉ.

Помимо элСмСнта , Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ
особСнности:

<- Π½Π°Π±ΠΎΡ€_Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ -i 4 -n Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅_свойства -v 1
-> <ΠΎΡ‚Π²Π΅Ρ‚
       xmlns = "urn: debugger_protocol_v1" xmlns: xdebug = "https: // xdebug.org / dbgp / xdebug "
       command = "feature_set" transaction_id = "4" feature = "extended_properties" success = "1">
   
 

И ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ продолТСния:

<- step_into -i 9
-> <ΠΎΡ‚Π²Π΅Ρ‚
       xmlns = "urn: debugger_protocol_v1" xmlns: xdebug = "https://xdebug.org/dbgp/xdebug"
       command = "step_into" transaction_id = "9"
       status = "break" cause = "ok">
           
           
   
 

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎ DBGP - ΠΎΠ±Ρ‰Π΅ΠΉ спСцификации ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° Π½Π° ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ страницС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ xdebug.log_level управляСт объСмом ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.
зарСгистрирован.

МногиС дистрибутивы Linux Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ systemd, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ
Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ частных tmp ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ². Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° PHP
запускаСтся Ρ‡Π΅Ρ€Π΅Π· Π²Π΅Π±-сСрвСр ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ PHP-FPM, ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ / tmp
с прСфиксом, ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌ Π½Π°:

/tmp/systemd-private-ea3cfa882b4e478993e1994033fc5feb-apache.service-FfWZRg
 

Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π·
XDEBUG_CONFIG
пСрСмСнная окруТСния.

ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ настройки PHP | Руководство Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Adobe Commerce

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ обсуТдаСтся, ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ PHP.

Π‘ΠΌ. БистСмныС трСбования для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… вСрсий PHP.

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ PHP установлСн

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ разновидностСй Linux ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ установлСн PHP.
Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ прСдполагаСтся, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡƒΠΆΠ΅ установили PHP.
Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, установлСн Π»ΠΈ ΡƒΠΆΠ΅ PHP, Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС Π²Π²Π΅Π΄ΠΈΡ‚Π΅:

Если установлСн PHP, отобраТаСтся сообщСниС, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ:

  
 1
2
3
 
 PHP 7.4.0 (cli) (построСно: 14 августа 2019 16:42:46) (NTS)
АвторскиС ΠΏΡ€Π°Π²Π° (c) 1997-2018 Π“Ρ€ΡƒΠΏΠΏΠ° PHP
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies с Zend OPcache v7.1.6, Copyright (c) 1999-2018, Zend Technologies
 

Magento 2.4 совмСстим с PHP 7.3, Π½ΠΎ ΠΌΡ‹ тСстируСм ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PHP 7.4.

Если PHP Π½Π΅ установлСн ΠΈΠ»ΠΈ трСбуСтся ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ вСрсии, установитС Π΅Π³ΠΎ, слСдуя инструкциям для вашСго ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Linux.Π’ CentOS ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ дСйствия.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ установлСнныС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ

Magento Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ установки Π½Π°Π±ΠΎΡ€Π° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ.

Magento с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ:

  • ext-bcmath
  • Π΄ΠΎΠ±-cΡ‚ΠΈΠΏ
  • внСшн. Π—Π°Π²ΠΈΡ‚ΠΎΠΊ
  • Π΄ΠΎΠ±-Π΄ΠΎΠΌ
  • ext-fileinfo
  • ext-gd
  • ext-hash
  • ext-iconv
  • Π΄ΠΎΠ±. ΠœΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Ρ‹ΠΉ
  • ext-json
  • ext-libxml
  • ext-mbstring
  • ext-openssl
  • Π΄ΠΎΠ±-ПК
  • ext-pdo_mysql
  • ext-simplexml
  • внСшнСС ΠΌΡ‹Π»ΠΎ
  • Ρ€ΠΎΠ·Π΅Ρ‚ΠΊΠΈ
  • Π΄ΠΎΠ±-Π½Π°Ρ‚Ρ€ΠΈΠΉ
  • ext-xmlwriter
  • Π΄ΠΎΠ±-xsl
  • ext-zip
  • Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°-libxml
  • Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°-openssl

Adobe Commerce:

  • ext-bcmath
  • Π΄ΠΎΠ±-cΡ‚ΠΈΠΏ
  • внСшн. Π—Π°Π²ΠΈΡ‚ΠΎΠΊ
  • Π΄ΠΎΠ±-Π΄ΠΎΠΌ
  • ext-fileinfo
  • ext-gd
  • ext-hash
  • ext-iconv
  • Π΄ΠΎΠ±. ΠœΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Ρ‹ΠΉ
  • ext-json
  • ext-libxml
  • ext-mbstring
  • ext-openssl
  • Π΄ΠΎΠ±-ПК
  • ext-pdo_mysql
  • ext-simplexml
  • внСшнСС ΠΌΡ‹Π»ΠΎ
  • Ρ€ΠΎΠ·Π΅Ρ‚ΠΊΠΈ
  • Π΄ΠΎΠ±-Π½Π°Ρ‚Ρ€ΠΈΠΉ
  • ext-spl
  • ext-xmlwriter
  • Π΄ΠΎΠ±-xsl
  • ext-zip
  • Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°-libxml
  • Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°-openssl

Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ установлСнных Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ:

  1. Бписок установлСнных ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.

  2. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ установлСны всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ.
  3. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ использовался для установки PHP. НапримСр, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ yum для установки PHP, ΠΌΠΎΠ΄ΡƒΠ»ΠΈ PHP 7.4 ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ:

      
     1
     
     yum -y install php74u-pdo php74u-mysqlnd php74u-opcache php74u-xml php74u-gd php74u-devel php74u-mysql php74u-intl php74u-mbstring php74u-bcmath-soap php74u-soap php74u-soap php74u-soap php74u-soap php74u-soap php74u
     

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ настройки PHP

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ PHP 7.4.20, установитС pcre.jit = 0 Π² вашСм Ρ„Π°ΠΉΠ»Π΅ php.ini . Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ ΠΎΡˆΠΈΠ±ΠΊΡƒ PHP, ΠΏΡ€Π΅ΠΏΡΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ CSS.

  • Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ систСмный часовой пояс для PHP; Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ошибки, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ Π²ΠΎ врСмя установки, ΠΈ связанныС со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ cron, ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ:
  
 1
 
 PHP ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: date (): ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° настройки часового пояса систСмы нСбСзопасно. [ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ сообщСния]
 

  • УстановитС ΠΏΡ€Π΅Π΄Π΅Π» памяти PHP.

    Наши ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ:

    • ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ статичСских Π°ΠΊΡ‚ΠΈΠ²ΠΎΠ², 1G
    • ΠžΡ‚Π»Π°Π΄ΠΊΠ°, 2G
    • ВСстированиС, ~ 3-4G
  • Π£Π²Π΅Π»ΠΈΡ‡ΡŒΡ‚Π΅ значСния для PHP realpath_cache_size ΠΈ realpath_cache_ttl Π΄ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Ρ… настроСк:

      
     1
    2
     
     realpath_cache_size = 10M
    realpath_cache_ttl = 7200
     

    Π­Ρ‚ΠΈ настройки ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ процСссам PHP ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΠΈ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΈΡ… ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ страницы.Π‘ΠΌ. Π Π°Π·Π΄Π΅Π» «Настройка ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈΒ» Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ PHP.

  • Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ opcache.save_comments , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ трСбуСтся для Magento 2.1 ΠΈ Π½ΠΎΠ²Π΅Π΅.

    ΠœΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π²Π°ΠΌ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ PHP OPcache ΠΈΠ· сообраТСний ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. OPcache Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… дистрибутивах PHP.

    Magento 2.1 ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΠ΅ вСрсии ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΊΠΎΠ΄Π° PHP для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π²ΠΎ врСмя установки ΠΈ обновлСния, ΠΌΡ‹ Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π²Π°ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ настройки PHP ΠΊΠ°ΠΊ ΠΊ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки PHP, Ρ‚Π°ΠΊ ΠΈ ΠΊ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΠΎΠ³ΠΎ модуля Π²Π΅Π±-сСрвСра PHP.Для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ см. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·Π΄Π΅Π».

Π¨Π°Π³ 1. НайдитС Ρ„Π°ΠΉΠ»Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ PHP

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ обсуТдаСтся, ΠΊΠ°ΠΊ Π½Π°ΠΉΡ‚ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для обновлСния Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

НайдитС

Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ php.ini

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Π²Π΅Π±-сСрвСра, запуститС Ρ„Π°ΠΉΠ» phpinfo.php Π² своСм Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΠΈ Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки PHP, Π²Π²Π΅Π΄ΠΈΡ‚Π΅

  
 1
 
 php --ini | grep "Π—Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ"
 

Если Ρƒ вас Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ php.ini , внСситС Π² Π½Π΅Π³ΠΎ измСнСния. Если Ρƒ вас Π΅ΡΡ‚ΡŒ Π΄Π²Π° Ρ„Π°ΠΉΠ»Π° php.ini , внСситС измСнСния Π² Π²ΠΎ всС Ρ„Π°ΠΉΠ»Ρ‹ . НСсоблюдСниС этого ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ нСпрСдсказуСмой Ρ€Π°Π±ΠΎΡ‚Π΅.

НайдитС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ OPcache

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ PHP OPcache ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ находятся Π² php.ini ΠΈΠ»ΠΈ opcache.ini . РасполоТСниС ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ вашСй ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы ΠΈ вСрсии PHP. Π€Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ OPcache ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π» opcache ΠΈΠ»ΠΈ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΊΠ°ΠΊ opcache.Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ .

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ Π΅Π³ΠΎ:

  • Π’Π΅Π±-сСрвСр Apache:

    Для Ubuntu с Apache настройки OPcache ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ находятся Π² php.ini .

    Для CentOS с Apache ΠΈΠ»ΠΈ nginx настройки OPcache ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ находятся Π² /etc/php.d/opcache.ini

    Если Π½Π΅Ρ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ Π΅Π³ΠΎ:

      
     1
     
     sudo find / -name 'opcache.ini '
     

  • Π’Π΅Π±-сСрвСр

    nginx с PHP-FPM: /etc/php/7.2/fpm/php.ini

Если Ρƒ вас Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ opcache.ini , ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΈΡ… всС.

Π¨Π°Π³ 2: Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ PHP

Для установки ΠΎΠΏΡ†ΠΈΠΉ PHP:

  1. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» php.ini Π² тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅.
  2. НайдитС часовой пояс вашСго сСрвСра Π² доступных настройках часового пояса
  3. НайдитС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈ ΠΏΡ€ΠΈ нСобходимости раскоммСнтируйтС Π΅Π³ΠΎ:

  4. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ настройку часового пояса, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ нашли Π½Π° шагС 2.

  5. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ memory_limit Π½Π° ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π² Π½Π°Ρ‡Π°Π»Π΅ этого Ρ€Π°Π·Π΄Π΅Π»Π°.

    НапримСр,

  6. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ realpath_cache , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° соотвСтствовала ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ значСниям:

      
     1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ;
    ; Π£Π²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ кСша realpath
    ;
    realpath_cache_size = 10 ΠœΠ‘
    
    ;
    ; Π£Π²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ кСш Realpath ttl
    ;
    realpath_cache_ttl = 7200
     

  7. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ измСнСния ΠΈ Π²Ρ‹ΠΉΠ΄ΠΈΡ‚Π΅ ΠΈΠ· тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°.

  8. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΎΠΉ php.ini (Ссли ΠΎΠ½ΠΈ Ρ€Π°Π·Π½Ρ‹Π΅) ΠΈ внСситС Π² Π½Π΅Π³ΠΎ Ρ‚Π΅ ΠΆΠ΅ измСнСния.

Π¨Π°Π³ 3. УстановитС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ OPcache

Для установки ΠΎΠΏΡ†ΠΈΠΉ opcache.ini :

  1. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ OPcache Π² тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅:

    • opcache.ini (CentOS)
    • php.ini (Ubuntu)
    • /etc/php/7.2/fpm/php.ini (Π²Π΅Π±-сСрвСр nginx (CentOS ΠΈΠ»ΠΈ Ubuntu))
  2. НайдитС opcache.save_comments ΠΈ ΠΏΡ€ΠΈ нСобходимости раскоммСнтируйтС.
  3. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ для Π½Π΅Π³ΠΎ установлСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1 .
  4. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ измСнСния ΠΈ Π²Ρ‹ΠΉΠ΄ΠΈΡ‚Π΅ ΠΈΠ· тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°.
  5. ΠŸΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ Π²Π΅Π±-сСрвСр:

    • Apache, Ubuntu: пСрСзапуск слуТбы apache2
    • Apache, CentOS: пСрСзапуск слуТбы httpd
    • nginx, Ubuntu ΠΈ CentOS: пСрСзапуск слуТбы nginx

Поиск ΠΈ устранСниС нСисправностСй

Π‘ΠΌ.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *