Как ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π² php

Π’ΠΎ врСмя написания скриптов Π½Π° PHP пСриодичСски трСбуСтся для Ρ†Π΅Π»Π΅ΠΉ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈΠ»ΠΈ для указания коммСнтария, ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ строки ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ. Π’ языкС программирования PHP имССтся 2 Π²ΠΈΠ΄Π° Ρ‚Π°ΠΊΠΈΡ… ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²:

ΠžΠ΄Π½ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π² PHP.

ΠžΠ΄Π½ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π² PHP примСняСтся:

Π›ΡŽΠ±ΠΎΠΉ тСкст, ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится Π·Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ символов // Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ PHP ΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠ΄Π° Π²Ρ‹ΡˆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ такая строка:

ΠœΠ½ΠΎΠ³ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’ случаС, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ ΠΎΠ΄Π½ΠΎΠΉ строкой Π½Π΅ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ, Ρ‚ΠΎ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ многострочный ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ. Π•Π³ΠΎ синтаксис ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

Π›ΡŽΠ±ΠΎΠΉ тСкст ΠΈΠ»ΠΈ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½, ΠΌΠ΅ΠΆΠ΄Ρƒ симовалами /* ΠΈ */ воспринимаСтся ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½.

Π“ΠΎΡ€Π°Π·Π΄ΠΎ Ρ‡Π°Ρ‰Π΅ многострочный ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ:

Π’Π°ΠΊΠΆΠ΅ многострочный ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ записан Π² ΠΎΠ΄Π½Ρƒ строку:

НаиболСС часто Π² ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π½Π° PHP Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сами, многострочныС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² стилС PHPDoc (для Ρ‡Π΅Π³ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ, ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅):

Как ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠ΄Π° Π²Ρ‹ΡˆΠ΅, Ρ‚Π°ΠΊΠΎΠΉ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ многострочный ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ описываСт Ρ‚ΠΈΠΏ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² (array), ΠΈ Ρ‚ΠΈΠΏ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния (float ΠΈΠ»ΠΈ int) для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ getSum().

Π‘ΡƒΠ΄ΡƒΡ‚ Π»ΠΈ Π²ΠΈΠ΄Π½Ρ‹ Π’Π°ΡˆΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅?

Написанный Π²Π°ΠΌΠΈ PHP ΠΊΠΎΠ΄ выполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° сСрвСрС, ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ любого скрипта PHP этот тСкст, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ отдаСтся Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€. Π’ случаС Π’Π•Π‘ программирования Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ PHP скриптов, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ являСтся сгСнСрированыый HTML Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ с Ρ‚Π΅Π³Π°ΠΌΠΈ. И самоС Π³Π»Π°Π²Π½ΠΎΠ΅, Ρ‡Ρ‚ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ php, выполняя скрипт, ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ всС строки Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π² символы ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π².

А Π·Π½Π°Ρ‡ΠΈΡ‚ Π½ΠΈ ΠΎΠ΄Π½Π° строчка ΠΈΠ»ΠΈ строчки вашСго ΠΊΠΎΠ΄Π°, ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Π΅ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹, Π° ΠΈΡ… содСрТимоС Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ доступно Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ Ρƒ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Π Π΅Π·ΡŽΠΌΠΈΡ€ΡƒΠ΅ΠΌ.

ΠŸΡ€ΠΈ написании ΠΊΠΎΠ΄Π° Π½Π° языкС программирования PHP принято ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ однострочныС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ (//………) ΠΈ многострочныС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ (/* ………………… */).

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π˜Π·ΡƒΡ‡Π°Π΅ΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² PHP

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² PHP ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ скрипта ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ прСпроцСссором, ΠΈ Π½ΡƒΠΆΠ½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для людСй. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ часто ΠΏΡ€Π΅Π½Π΅Π±Ρ€Π΅Π³Π°ΡŽΡ‚ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄Π°.

Π‘Ρ€Π΅Π΄ΠΈ программистов Π±Ρ‹Ρ‚ΡƒΠ΅Ρ‚ ΠΌΠ½Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ вспомнят, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠΎΠ΄, ΠΈ Ρ‡Π΅Ρ€Π΅Π· ΡˆΠ΅ΡΡ‚ΡŒ мСсяцСв ΠΈ Ρ‡Π΅Ρ€Π΅Π· Π³ΠΎΠ΄. Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Π½Π΅ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ β€” ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ написан, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ясСн ΠΈ Π±Π΅Π· пояснСний. Но Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ созданныС скрипты PHP Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя послС написания.

НС ΠΌΠ΅Π½Π΅Π΅ ваТная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° коммСнтирования ΠΊΠΎΠ΄Π° β€” ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ послСдоватСли ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π²Π°ΡˆΠ΅ΠΌΡƒ Ρ‚Π²ΠΎΡ€Π΅Π½ΠΈΡŽ. Они Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ ΠΏΠΎΠ»ΡŒΠ·Ρƒ ΠΎΡ‚ чтСния оставлСнных ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π².

ΠžΠ΄Π½ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² PHP

ΠŸΠ΅Ρ€Π΅Π΄ коммСнтариями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ находятся Π½Π° ΠΎΠ΄Π½ΠΎΠΉ строкС, Π² PHP ставятся Π΄Π²Π° символа косой Ρ‡Π΅Ρ€Ρ‚Ρ‹ ( // ).

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ содСрТит однострочный PHP ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π² ΠΊΠΎΠ΄Π΅:

ΠžΠ΄Π½ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ строкС, ΠΈΠ»ΠΈ добавляСтся Π² ΠΊΠΎΠ½Π΅Ρ† строки ΠΊΠΎΠ΄Π°:

ΠžΠ΄Π½ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ строки ΠΊΠΎΠ΄Π° ΠΈΠ· ΠΏΠΎΡ‚ΠΎΠΊΠ° выполнСния. НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ PHP ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ всю ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ echo Π²ΠΎ врСмя выполнСния:

ΠœΠ½ΠΎΠ³ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² PHP

ΠœΠ½ΠΎΠ³ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ для сайта PHP ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚Ρ‹ раздСлитСлями / * ΠΈ * /. Π—Π½Π°ΠΊ /* ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π½Π°Ρ‡Π°Π»ΠΎ Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π², Π° */ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π΅Π³ΠΎ ΠΊΠΎΠ½Π΅Ρ†. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ дСмонстрируСт использованиС многострочного коммСнтирования:

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

Π˜Ρ‚ΠΎΠ³ΠΈ

ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ваши мнСния ΠΏΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ‚Π΅ΠΌΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ. ΠœΡ‹ ΠΎΡ‡Π΅Π½ΡŒ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΠΌ вас Π·Π° ваши ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠΈ, Π»Π°ΠΉΠΊΠΈ, Π΄ΠΈΠ·Π»Π°ΠΉΠΊΠΈ, подписки!

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Как Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° врСмя ΠΊΠΎΠ΄ HTML, CSS ΠΈΠ»ΠΈ PHP, JS

Как ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π² php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π² php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π² php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π² php. Π€ΠΎΡ‚ΠΎ Как ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π² php

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

(Π² Ρ„ΠΈΠ½Π°Π»Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ Π²ΠΈΠ΄Π΅ΠΎ ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ… ΠΈ способах коммСнтирования ΠΊΠΎΠ΄ΠΎΠ²)

Но ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ Π² html ΠΈ php… А вСдь Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… ΠΏΡƒΡ‚Π°ΡŽΡ‚ΡΡ Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ этапС своСй Ρ€Π°Π±ΠΎΡ‚Π΅ с сайтом ΠΈ Π½Π΅ Π·Π½Π°ΡŽΡ‚, ΠΊΠ°ΠΊ Π΄ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ сСбС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ пояснСния. Π’Π΅Π΄ΡŒ Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΆΠ΅ Ρ‚Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Π°ΠΌ потрСбуСтся Π½Π° ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ врСмя Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ html, Π° ΠΏΠΎΡ‚ΠΎΠΌ снова Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ β€” это запросто Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ссли Π²Ρ‹ сдСлали сСбС ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΠΈ Π½Π° «полях», Π΄Π° ΠΌΠ°Π»ΠΎ Π»ΠΈ Ρ‡Ρ‚ΠΎ.

Но Ρ‡Ρ‚ΠΎ слСдуСт ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ «коммСнтариях» Π²ΠΎΠΎΠ±Ρ‰Π΅ β€” Ρ‚ΡƒΡ‚ всё Π² строгой зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, с ΠΊΠ°ΠΊΠΈΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ, Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈ ΠΊΠΎΠ΄ примСнСния Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½.

ошибки Π² коммСнтариях ΠΊ ΠΊΠΎΠ΄Ρƒ β€” ΠΏΠΎ вСрсиям php

php 8

врСмя ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ языки программирования ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ (ΠΈΡ… вСрсии), Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅ΡΡŒ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Π΅Π΅ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΈ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚Π΅!

Как извСстно, Π½Π΅ Ρ‚Π°ΠΊ Π΄Π°Π²Π½ΠΎ Π²Ρ‹ΡˆΠ»Π° вСрсия php 8 β€” Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ!

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ коснСмся, скаТСм Ρ‚Π°ΠΊ, синтаксиса β€” правописания))…

НапримСр, Ссли ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Π² самом Ρ„ΠΈΠ½Π°Π»Π΅ ΠΊΠΎΠ΄Π°, Ρ‚ΠΎ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ соотвСтствСнно Π·Π°ΠΊΡ€Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ! ΠΈΠ½Π°Ρ‡Π΅, Π² Π½ΠΎΠ²Π΅ΠΉΡˆΠΈΡ… вСрсиях php (ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΊΠ°ΡΠ°ΡŽΡ‚ΡΡ ΠΌΠ½ΠΎΠ³ΠΈΡ… ЯПов) бСсконСчно Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ошибки! Π‘Π΅Π»Ρ‹ΠΉ экран.

Как ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π² php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π² php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π² php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π² php. Π€ΠΎΡ‚ΠΎ Как ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π² php

…далСС: Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π›Π•ΠŸΠ˜Π’Π• Π΄Ρ€ΡƒΠ³ ΠΊ Π΄Ρ€ΡƒΠΆΠΊΠ΅ символы ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΊ Ρ‚Π΅Π³Π°ΠΌ ΠΊΠΎΠ΄Π°. Π½Π΅Ρ€ΡΡˆΠ΅ΡΡ‚Π²ΠΎ Π² ΠΊΠΎΠ΄Π΅, ΠΊΠ°ΠΊ ΠΈ Π² ΠΆΠΈΠ·Π½ΠΈ, Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½Ρ‹Π΅ ошибки.

На ΠΌΠΎΠΉ взгляд, Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ нСсколько Π»ΠΈΡˆΠ½ΠΈΡ… ΠΌΠΈΠ½ΡƒΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡ΠΈΡΡ‚Π΅Π½ΡŒΠΊΠΈΠΉ ΠΈ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ. Π­Ρ‚ΠΎ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ сэкономит массу Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ!

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Как Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строку с HTML, PHP, CSS ΠΊΠΎΠ΄ΠΎΠΌ?

Как ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π² php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π² php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π² php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π² php. Π€ΠΎΡ‚ΠΎ Как ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π² php

ΠŸΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽ, всСх Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉ β€” Sozdaiblog.ru!

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽ Π’Π°ΡˆΠ΅ΠΌΡƒ вниманию ΠΌΠΈΠ½ΠΈ пост, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ я ΠΏΠΎΠΊΠ°ΠΆΡƒ, ΠΊΠ°ΠΊ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ HTML, PHP, CSS строчки ΠΊΠΎΠ΄Π°.

Для Π½Π°Ρ‡Π°Π»Π°, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Π—Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ HTML ΠΊΠΎΠ΄, ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Π΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

Π§Ρ‚ΠΎΠ±Ρ‹ Π’Π°ΠΌ Π±Ρ‹Π»ΠΎ Π±ΠΎΠ»Π΅Π΅ понятно ΠΎ Ρ‡Ρ‘ΠΌ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΈΠ΄Ρ‘Ρ‚ Ρ€Π΅Ρ‡ΡŒ, ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² использования этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Допустим, Ρ€Π΅ΡˆΠΈΠ»ΠΈ Π’Ρ‹ Π½Π° своём сайтС ΠΈΠ»ΠΈ Π±Π»ΠΎΠ³Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚. Нашли подходящий ΠΊΠΎΠ΄ Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅, ΠΎΡ‚ΠΊΡ€Ρ‹Π»ΠΈ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ² Π’Π°ΡˆΠ΅ΠΉ Ρ‚Π΅ΠΌΡ‹ оформлСния ΠΈ внСсли своё Π½ΠΎΠ²ΡˆΠ΅ΡΡ‚Π²ΠΎ. Но, Π²Π΄Ρ€ΡƒΠ³ Π·Π°Π·Π²ΠΎΠ½ΠΈΠ» Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ ΠΈ Вас срочно Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° Π΄Π΅Π»ΠΎΠ²ΡƒΡŽ встрСчу.

ΠŸΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π΅Ρ‚, Π° ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ, Ρ‚ΠΎΠΆΠ΅ Π½Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π΅Π³ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈ смСло ΠΈΠ΄Ρ‚ΠΈ Π½Π° встрСчу, Π½ΠΎ Π΅ΡΡ‚ΡŒ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π’Ρ‹ Π΅Π³ΠΎ потСряСтС, ΠΈΠ»ΠΈ Π·Π°Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π³Π΄Π΅ нашли.

Как Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ HTML, PHP, CSS.

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ HTML строчки ΠΊΠΎΠ΄Π°, ΠΎΠ±Π΅Ρ€Π½ΠΈΡ‚Π΅ ΠΈΡ… символами – Β« Β».

Π—Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ PHP, ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ символы – Β« /* ΠΈ */ Β».

Π’ случаС с CSS, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ‚Π΅ ΠΆΠ΅ символы, Ρ‡Ρ‚ΠΎ ΠΈ Ρƒ PHP β€” Β« /* ΠΈ */ Β».

По Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΡŽ ΠΊ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π’Π°ΡˆΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ², просто ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ поставлСнныС символы ΠΈ спокойно Π·Π°Π½ΠΈΠΌΠ°ΠΉΡ‚Π΅ΡΡŒ Π½ΠΎΠ²Ρ‹ΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°ΠΌΠΈ.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Вас Π΅Ρ‰Ρ‘ заинтСрСсуСт:

НадСюсь, Ρ‡Ρ‚ΠΎ Π’Π°ΠΌ Π±Ρ‹Π»Π° ΠΏΠΎΠ»Π΅Π·Π½Π° информация ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ HTML!

Π”Ρ€ΡƒΠ·ΡŒΡ, Π² ΠΊΠΎΠ½Ρ†Π΅ поста Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π»ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½ΠΎΠ΅ Π²ΠΈΠ΄Π΅ΠΎ, ΡΠΎΠ²Π΅Ρ‚ΡƒΡŽ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ. НСбольшая ΠΏΡ€ΠΎΠΌΡ‹Π²ΠΊΠ° ΠΌΠΎΠ·Π³Π°, Π½ΠΎ Π½Π°Π΄ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Π΅Ρ‰Π°ΠΌΠΈ стоит Π·Π°Π΄ΡƒΠΌΠ°Ρ‚ΡŒΡΡ!

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ИзбавляСмся ΠΎΡ‚ дублирования сквозного ΠΊΠΎΠ΄Π° Π² PHP: Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΊΠΎΠ΄Π° с АОП

Π”ΡƒΠΌΠ°ΡŽ, ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ программисту Π·Π½Π°ΠΊΠΎΠΌ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ СдинствСнной отвСтствСнности, Как ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π² php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π² php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π² php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π² php. Π€ΠΎΡ‚ΠΎ Как ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π² phpвСдь Π½Π΅ зря ΠΎΠ½ сущСствуСт: соблюдая Π΅Π³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π»ΡƒΡ‡ΡˆΠ΅, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ понятным, Π΅Π³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π»Π΅Π³Ρ‡Π΅ Π΄ΠΎΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ.

Но Ρ‡Π΅ΠΌ большС ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· нас Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΊΠΎΠ΄ΠΎΠΌ, Ρ‚Π΅ΠΌ большС ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ языка β€” ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ β€” этого ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. А ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ Π½Π°ΠΌ Π² соблюдСнии ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° СдинствСнной отвСтствСнности Ρ‚Π°ΠΊΠΎΠΉ Ρ„Π°ΠΊΡ‚, ΠΊΠ°ΠΊ сквозная Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ дублирования сквозного ΠΊΠΎΠ΄Π°, ΠΈ ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ‡ΡƒΡ‚ΠΎΡ‡ΠΊΡƒ Π»ΡƒΡ‡ΡˆΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ АОП.

Бквозная Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ Β«ΠΌΠΎΠΊΡ€Ρ‹ΠΉΒ» ΠΊΠΎΠ΄

Π‘ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠΊΠΎΠ»ΠΎ 95% Π² любом ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ куски сквозной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прячутся Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΎΠ΄ Π²ΠΈΠ΄ΠΎΠΌ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, логирования, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ контроля ΠΈ разграничСния ΠΏΡ€Π°Π² доступа. Как Π²Ρ‹ ΡƒΠΆΠ΅ догадались ΠΈΠ· названия, эта Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΆΠΈΠ²Π΅Ρ‚ Π½Π° всСх слоях прилоТСния (Ρƒ вас ΠΆΠ΅ Π΅ΡΡ‚ΡŒ слои?) ΠΈ Π²Ρ‹Π½ΡƒΠΆΠ΄Π°Π΅Ρ‚ нас Π½Π°Ρ€ΡƒΡˆΠ°Ρ‚ΡŒ нСсколько Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ²: DRY ΠΈ KISS. ΠΠ°Ρ€ΡƒΡˆΠ°Ρ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ DRY, Π²Ρ‹ автоматичСски Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ WET ΠΈ ΠΊΠΎΠ΄ становится Β«ΠΌΠΎΠΊΡ€Ρ‹ΠΌΒ», Ρ‡Ρ‚ΠΎ отраТаСтся Π² Π²ΠΈΠ΄Π΅ увСличСния ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ Lines of Code (LOC), Weighted Method Count (WMC), Cyclomatic Complexity (CCN).

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

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ Π»ΠΎΠ³ΠΈΠΊΠ° самого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, которая содСрТит Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΠΈ Π΄ΠΎΡΡ‚Π°Ρ‚ΠΎΡ‡Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ:

… послС этого добавляСм Π΅Ρ‰Π΅ 3 строчки ΠΊΠΎΠ΄Π° Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΏΡ€Π°Π² доступа

… ΠΏΠΎΡ‚ΠΎΠΌ Π΅Ρ‰Π΅ 2 строчки для логирования Π½Π°Ρ‡Π°Π»Π° ΠΈ ΠΊΠΎΠ½Ρ†Π° выполнСния ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

Π£Π·Π½Π°Π΅Ρ‚Π΅ свой ΠΊΠΎΠ΄? Π•Ρ‰Π΅ Π½Π΅Ρ‚? Π’ΠΎΠ³Π΄Π° Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Ρ‚ΡƒΠ΄Π° Π΅Ρ‰Π΅ 5 строчСк ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ситуации с нСскольким Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ. Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ…, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΡ… Π΄Π°Π½Π½Ρ‹Π΅, ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒΡΡ Π΅Ρ‰Π΅ 5 строчСк для сохранСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π² кэшС. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΈΠ· 4 строчСк ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ порядка 20 строк ΠΊΠΎΠ΄Π°. Π§Π΅ΠΌ это Π³Ρ€ΠΎΠ·ΠΈΡ‚, Π΄ΡƒΠΌΠ°ΡŽ понятно β€” ΠΌΠ΅Ρ‚ΠΎΠ΄ становится слоТнСС, Π΅Π³ΠΎ Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ, дольшС приходится Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ‚, слоТнСС Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ приходится ΠΏΠΎΠ΄ΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠΎΠΊΠΈ для Π»ΠΎΠ³Π΅Ρ€Π°, кэша ΠΈ Ρ‚.Π΄. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π±Ρ‹Π» для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Ρ‚ΠΎ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ утвСрТдСния ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° справСдливы ΠΈ для класса, ΠΈ для всСй систСмы Π² Ρ†Π΅Π»ΠΎΠΌ. Π§Π΅ΠΌ ΡΡ‚Π°Ρ€ΡˆΠ΅ ΠΊΠΎΠ΄ систСмы, Ρ‚Π΅ΠΌ большС ΠΎΠ½ обрастаСт ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ мусором ΠΈ становится всС тяТСлСС ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° Π½ΠΈΠΌ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ сквозной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Чистота β€” Π·Π°Π»ΠΎΠ³ Π·Π΄ΠΎΡ€ΠΎΠ²ΡŒΡ! Π—Π΄ΠΎΡ€ΠΎΠ²ΡŒΠ΅ ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго!

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ всСми силами ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π² чистотС. КакиС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΈ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ?

Π”Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Ρ‹

Π”Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Ρ‹ β€” ΠΏΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π½Π° ΡƒΠΌ. Π”Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ β€” структурный шаблон проСктирования, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для динамичСского ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ повСдСния ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ. Π¨Π°Π±Π»ΠΎΠ½ Π”Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ прСдоставляСт Π³ΠΈΠ±ΠΊΡƒΡŽ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρƒ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ создания подклассов с Ρ†Π΅Π»ΡŒΡŽ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Когда Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎΠ± АОП, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ вопрос, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π·Π°Π΄Π°ΡŽΡ‚ ООП-программисты β€” ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€? И это ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ! ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΡ‡Ρ‚ΠΈ всС Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ дСлаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ АОП, но… ΠšΠΎΠ½Ρ‚Ρ€-ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Ρ‡Ρ‚ΠΎ Ссли ΠΌΡ‹ сдСлаСм LoggingDecorator ΠΏΠΎΠ²Π΅Ρ€Ρ… CachingDecorator, Π° послСдний, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΏΠΎΠ²Π΅Ρ€Ρ… основного класса? Бколько ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Π² этих Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π°Ρ…? Бколько Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… классов Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎ всСй систСмС?

Π›Π΅Π³ΠΊΠΎ ΠΏΡ€ΠΈΠΊΠΈΠ½ΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ссли Ρƒ нас 100 классов, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΡ… 100 интСрфСйсов, Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΡΡˆΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ Π½Π°ΠΌ Π² систСму Π΅Ρ‰Π΅ 100 классов. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, это Π½Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² соврСмСнном ΠΌΠΈΡ€Π΅ (заглянитС Π² ΠΏΠ°ΠΏΠΊΡƒ cache любого большого Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°), Π½ΠΎ Π·Π°Ρ‡Π΅ΠΌ Π½Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ эти 100 ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Ρ… классов? НСпонятно, ΡΠΎΠ³Π»Π°ΡΠΈΡ‚Π΅ΡΡŒ?

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΡƒΠΌΠ΅Ρ€Π΅Π½Π½ΠΎΠ΅ использованиС Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½Π½ΠΎ.

ΠŸΡ€ΠΎΠΊΡΠΈ-классы

ΠŸΡ€ΠΎΠΊΡΠΈ-классы β€” Π²Ρ‚ΠΎΡ€ΠΎΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π½Π° ΡƒΠΌ. ΠŸΡ€ΠΎΠΊΡΠΈ β€” шаблон проСктирования, прСдоставляСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ доступ ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, пСрСхватывая всС Π²Ρ‹Π·ΠΎΠ²Ρ‹ (выполняСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°).

НС ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ с ΠΌΠΎΠ΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния, Π½ΠΎ Ρƒ всСх Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π½Π° слуху ΠΊΡΡˆΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ прокси, поэтому ΠΈΡ… Ρ‚Π°ΠΊ часто ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒ Π² прилоТСниях. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ нСдостатки: ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ скорости Ρ€Π°Π±ΠΎΡ‚Ρ‹ (часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ __call, __get, __callStatic, call_user_func_array), Π° Ρ‚Π°ΠΊΠΆΠ΅ ломаСтся Ρ‚Π°ΠΉΠΏΡ…ΠΈΠ½Ρ‚ΠΈΠ½Π³, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ вмСсто Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ прокси-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Если ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π·Π°Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΊΡΡˆΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ прокси ΠΏΠΎΠ²Π΅Ρ€Ρ… Π»ΠΎΠ³ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ, Π° Ρ‚ΠΎΡ‚, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΏΠΎΠ²Π΅Ρ€Ρ… основного класса, Ρ‚ΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΡƒΠΏΠ°Π΄Π΅Ρ‚ Π½Π° порядок.

Но Π΅ΡΡ‚ΡŒ ΠΈ плюс: Π² случаС 100 классов ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΊΡΡˆΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ прокси Π½Π° всС классы. Но! Π¦Π΅Π½ΠΎΠΉ ΠΎΡ‚ΠΊΠ°Π·Π° ΠΎΡ‚ Ρ‚Π°ΠΉΠΏΡ…ΠΈΠ½Ρ‚ΠΈΠ½Π³Π° ΠΏΠΎ 100 интСрфСйсам, Ρ‡Ρ‚ΠΎ катСгоричСски Π½Π΅ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ соврСмСнных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Бобытия ΠΈ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ ΠΠ°Π±Π»ΡŽΠ΄Π°Ρ‚Π΅Π»ΡŒ

Π’Ρ€ΡƒΠ΄Π½ΠΎ Π½Π΅ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½, ΠΊΠ°ΠΊ ΠΠ°Π±Π»ΡŽΠ΄Π°Ρ‚Π΅Π»ΡŒ. ΠΠ°Π±Π»ΡŽΠ΄Π°Ρ‚Π΅Π»ΡŒ (Observer) β€” повСдСнчСский шаблон проСктирования. Π’Π°ΠΊΠΆΠ΅ извСстСн ΠΊΠ°ΠΊ Β«ΠΏΠΎΠ΄Ρ‡ΠΈΠ½Ρ‘Π½Π½Ρ‹Π΅Β» (Dependents), Β«ΠΈΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ-подписчик» (Publisher-Subscriber).

Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… извСстных Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ со сквозной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Π‘Ρ‹Π»ΠΎ испробовано ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅ΠΉ, ΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· самых ΡƒΠ΄Π°Ρ‡Π½Ρ‹Ρ… ΠΈ понятных стала модСль событий ΠΈ подписчиков Π½Π° эти события. Добавляя ΠΈΠ»ΠΈ удаляя подписчиков Π½Π° события, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ основного ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π° измСняя ΠΈΡ… порядок с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠ² β€” Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π² Π½ΡƒΠΆΠ½ΠΎΠΌ порядкС. Π’Π΅ΡΡŒΠΌΠ° Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ, ΠΏΠΎΡ‡Ρ‚ΠΈ АОП!

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

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, нСсмотря Π½Π° всС ΠΏΠ»ΡŽΡΡ‹, Π΅ΡΡ‚ΡŒ нСсколько Π±ΠΎΠ»ΡŒΡˆΠΈΡ… минусов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΠ΅Ρ€Π΅Π²Π΅ΡˆΠΈΠ²Π°ΡŽΡ‚ ΠΏΠ»ΡŽΡΡ‹. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ минус Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°Ρ€Π°Π½Π΅Π΅ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈ Π³Π΄Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒΡΡ Π² вашСй систСмС. К соТалСнию, Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ это нСизвСстно. Π’Ρ‚ΠΎΡ€ΠΎΠΉ минус Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ особым ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, добавляя ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹Π΅ строки Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ события ΠΈ Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· Symfony2):

Π‘ΠΈΠ³Π½Π°Π»Ρ‹ ΠΈ слоты

Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½, ΠΏΠΎ своСй сути, являСтся Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° ΠΠ°Π±Π»ΡŽΠ΄Π°Ρ‚Π΅Π»ΡŒ, Π½ΠΎ позволяСт ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ количСство ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰Π΅Π³ΠΎΡΡ ΠΊΠΎΠ΄Π°.

Из самых интСрСсных Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ этого ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° я Π±Ρ‹ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠ» ядро Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Lithium, ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ. Если Π²ΠΊΡ€Π°Ρ‚Ρ†Π΅, Ρ‚ΠΎ Lithium позволяСт Π½Π°Π²Π΅ΡˆΠΈΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° Π½Π° Π»ΡŽΠ±Ρ‹Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² систСмС ΠΈ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ. Π–Π΅Π»Π°Π΅Ρ‚Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π»ΠΎΠ³ запросов ΠΊ Π±Π°Π·Π΅ Π² Ρ„Π°ΠΉΠ» Π² ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ β€” Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅:

ΠΠ°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с систСмой Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ², ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ рСализация Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² Π² Lithium максимально ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΊ аспСктно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ для вас Ρ‚Π΅ΠΌ Ρ‚ΠΎΠ»Ρ‡ΠΊΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΎΠΊΡƒΠ½ΡƒΡ‚ΡŒΡΡ Π² ΠΌΠΈΡ€ АОП ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.

АспСктно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ подошли ΠΊ самому интСрСсному β€” ΠΊ использованию аспСктно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования для Π±ΠΎΡ€ΡŒΠ±Ρ‹ с Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ сквозного ΠΊΠΎΠ΄Π°. На Ρ…Π°Π±Ρ€Π΅ ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΈ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΏΠΎ АОП, Π² Ρ‚ΠΎΠΌ числС ΠΈ для PHP, поэтому я Π½Π΅ Π±ΡƒΠ΄Ρƒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ этот ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» ΠΈ Π΄Π°Π²Π°Ρ‚ΡŒ опрСдСлСния Ρ‚Π΅Ρ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ² ΠΈ Ρ‚Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ АОП. Если Π²Ρ‹ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°ΠΌΠΈ ΠΈ понятиями АОП, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ дальнСйшим Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ со ΡΡ‚Π°Ρ‚ΡŒΠ΅ΠΉ ΠΏΡ€ΠΎ АОП Π½Π° Π’ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ.

Π˜Ρ‚Π°ΠΊ, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ Π² Lithium ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΊΡƒΠ΄Π° ΡƒΠ³ΠΎΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ вынСсти ΠΊΠΎΠ΄ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, логирования, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΡ€Π°Π² доступа Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ замыкания. Казалось Π±Ρ‹, Π²ΠΎΡ‚ ΠΎΠ½Π°, сСрСбряная пуля. Но всС Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠΆ Π³Π»Π°Π΄ΠΊΠΎ. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, для использования Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ вСсь Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для этого Π½Π΅Ρ‚, Π° Таль. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹-замыкания (Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… АОП β€” совСты) разбросаны ΠΏΠΎΠ²ΡΡŽΠ΄Ρƒ ΠΈ Π·Π° Π½ΠΈΠΌΠΈ ΠΎΡ‡Π΅Π½ΡŒ слоТно ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ. Π’-Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…, ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ написан ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ интСрфСйсы, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹. Π­Ρ‚ΠΈ Ρ‚Ρ€ΠΈ минуса Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ Π² качСствС АОП Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… прилоТСниях ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°Ρ….

Π’ΠΎΡ‚ здСсь Ρƒ мСня ΠΈ появилась идСя β€” Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, которая Π΄Π°Π»Π° Π±Ρ‹ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ АОП Π² любом ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π½Π° PHP. Π”Π°Π»ΡŒΡˆΠ΅ Π±Ρ‹Π»Π° Π±ΠΈΡ‚Π²Π° с PHP, ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅Ρ…Π½ΠΈΠΊ ускорСния ΠΊΠΎΠ΄Π°, Π±ΠΎΡ€ΡŒΠ±Π° с Π±Π°Π³Π°ΠΌΠΈ ΠΎΠΏΠΊΠΎΠ΄-ускоритиСлСй ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ-ΠΌΠ½ΠΎΠ³ΠΎ интСрСсного. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ€ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Go! AOP PHP, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒΡΡ Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ доступныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π²ΠΎ всСх классах ΠΈ вынСсти ΠΈΠ· Π½ΠΈΡ… ΡΠΊΠ²ΠΎΠ·Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π° нСсколько тысяч строк ΠΊΠΎΠ΄Π° Π² ΠΏΠ°Ρ€Ρƒ дСсятков строк совСтов.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Go! AOP PHP

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ отличия ΠΎΡ‚ всСх ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π°Π½Π°Π»ΠΎΠ³ΠΎΠ² β€” это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π°Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ PHP, Π½Π΅ ΠΏΡ€ΠΈΠ·Ρ‹Π²Π°ΡŽΡ‰Π°Ρ Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ Ρ‡Π΅Ρ€Π½ΡƒΡŽ магию runkit-a ΠΈ php-aop. Она Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ eval-ΠΎΠ², Π½Π΅ завязана Π½Π° DI-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, Π½Π΅ нуТдаСтся Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ компиляторС аспСктов Π² ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. АспСкты ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ классы, ΠΎΡ€Π³Π°Π½ΠΈΡ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ всС возмоТности ООП. Π€ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ ΠΊΠΎΠ΄ с Π²ΠΏΠ»Π΅Ρ‚Π΅Π½Π½Ρ‹ΠΌΠΈ аспСктами β€” ΠΎΡ‡Π΅Π½ΡŒ чистый, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ XDebug-Π°, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΊΠ°ΠΊ сами классы, Ρ‚Π°ΠΊ ΠΈ аспСкты.

Π‘Π°ΠΌΠΎΠ΅ Ρ†Π΅Π½Π½ΠΎΠ΅ Π² этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ тСорСтичСски Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² любоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ для добавлСния Π½ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ АОП Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ прилоТСния Π²ΠΎΠΎΠ±Ρ‰Π΅, аспСкты Π²ΠΏΠ»Π΅Ρ‚Π°ΡŽΡ‚ΡΡ динамичСски. Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°: с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ дСсяти-Π΄Π²Π°Π΄Ρ†Π°Ρ‚ΠΈ строк ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ всС ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅, Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Π΅ ΠΈ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π²ΠΎ всСх классах ΠΏΡ€ΠΈ запускС стандартного ZF2-прилоТСния ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π° экран имя этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈ Π΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹.

ΠŸΡ€ΠΎΡ€Π°Π±ΠΎΡ‚Π°Π½ вопрос Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΠΏΠΊΠΎΠ΄-ΠΊΡΡˆΠ΅Ρ€Π΅ΠΌ β€” Π² Π±ΠΎΠ΅Π²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π²ΠΏΠ»Π΅Ρ‚Π΅Π½ΠΈΠ΅ аспСктов происходит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·, послС Ρ‡Π΅Π³ΠΎ ΠΊΠΎΠ΄ достаСтся ΠΈΠ· ΠΎΠΏΠΊΠΎΠ΄-ΠΊΡΡˆΠ΅Ρ€Π°. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Doctrine-Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ для классов аспСктов. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, ΠΌΠ½ΠΎΠ³ΠΎ Ρ‡Π΅Π³ΠΎ интСрСсного Π²Π½ΡƒΡ‚Ρ€ΠΈ.

Π Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ сквозного ΠΊΠΎΠ΄Π° с использованиСм АОП

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·ΠΆΠ΅Ρ‡ΡŒ интСрСс ΠΊ АОП побольшС, я Ρ€Π΅ΡˆΠΈΠ» Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠ½ΡƒΡŽ Ρ‚Π΅ΠΌΡƒ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΌΠ°Π»ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ β€” Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΊΠΎΠ΄Π° ΠΊ аспСктам. Π”Π°Π»ΡŒΡˆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π²Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΊΠΎΠ΄ Ρ‡ΠΈΡ‰Π΅ ΠΈ понятнСС с использованиСм аспСктов.

Выносим Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· ΠΊΠΎΠ΄Π°

Π˜Ρ‚Π°ΠΊ, прСдставим, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ всСх выполняСмых ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² 20 классах, находящихся Π² нСймспСйсС Acme. Выглядит это ΠΊΠ°ΠΊ-Ρ‚ΠΎ Ρ‚Π°ΠΊ:

Π”Π°Π²Π°ΠΉΡ‚Π΅ возьмСм ΠΈ ΠΎΡ‚Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠΌ этот ΠΊΠΎΠ΄ с использованиСм аспСктов! Π›Π΅Π³ΠΊΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ выполняСтся ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠΎΠ΄ΠΎΠΌ самого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, поэтому сразу Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Ρ‚ΠΈΠΏ совСта β€” Before. Π”Π°Π»ΡŒΡˆΠ΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ внСдрСния β€” Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ всСх ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ нСймспСйса Acme. Π­Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ задаСтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ execution(public Acme\*->*()). Π˜Ρ‚Π°ΠΊ, пишСм LoggingAspect:

НичСго слоТного, ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ класс с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ Π½Π° Π²ΠΈΠ΄ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ. Однако это β€” аспСкт, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ совСт beforeMethodExecution, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ Π½ΡƒΠΆΠ½Ρ‹Ρ… Π½Π°ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Как Π²Ρ‹ ΡƒΠΆΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, Go! ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ для хранСния ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎ Π΄Π°Π²Π½ΠΎ ΡƒΠΆΠ΅ стало ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это наглядно ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ наш аспСкт Π² ядрС Go! ΠΈ Π²Ρ‹ΠΊΠΈΠ½ΡƒΡ‚ΡŒ ΠΈΠ· ΠΊΡƒΡ‡ΠΈ Π½Π°ΡˆΠΈΡ… классов всС Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅! Π£Π±Ρ€Π°Π² Π½Π΅Π½ΡƒΠΆΠ½ΡƒΡŽ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ Π»ΠΎΠ³Π΅Ρ€Π°, ΠΌΡ‹ сдСлали наш ΠΊΠΎΠ΄ классов Ρ‡ΠΈΡ‰Π΅, ΠΎΠ½ стал большС ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π΅Π΄ΠΈΠ½ΠΎΠΉ отвСтствСнности, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ вынСсли ΠΈΠ· Π½Π΅Π³ΠΎ Ρ‚ΠΎ, Ρ‡Π΅ΠΌ ΠΎΠ½ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ.

Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ΅ΠΌ ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ логирования, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½ задаСтся Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС.

ΠŸΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΠ΅ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Π”ΡƒΠΌΠ°ΡŽ, всСм Π·Π½Π°ΠΊΠΎΠΌ ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° с использованиСм ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ:

НСсомнСнно, всС ΡƒΠ·Π½Π°ΡŽΡ‚ этот ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΈΡ… мСст всСгда достаточно. Если Ρƒ нас большая систСма, Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ, Π²ΠΎΡ‚ Π±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ сами ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ. А Ρ‡Ρ‚ΠΎ, идСя! Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΌΠ΅Ρ‡Π°Ρ‚ΡŒ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠ΅ΠΉ Ρ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Π° Π² ΠΏΠΎΠΈΠ½Ρ‚ΠΊΠ°Ρ‚Π΅ Π·Π°Π΄Π°Π΄ΠΈΠΌ условиС β€” всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠ΅ΠΉ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Β«ΠΎΠ±ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚Β» ΠΊΠΎΠ΄ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Ρ‚ΠΎ ΠΈ Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ подходящий Ρ‚ΠΈΠΏ совСта β€” Around, самый могущСствСнный. Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ совСта сам ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎ нСобходимости выполнСния исходного ΠΊΠΎΠ΄Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. А дальшС всС просто:

Π’ этом совСтС самоС интСрСсноС β€” Π²Ρ‹Π·ΠΎΠ² ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ осущСствляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Ρ‹Π·ΠΎΠ²Π° proceed() Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° MethodInvocation, содСрТащСго ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅. Π›Π΅Π³ΠΊΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ссли Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² кэшС, Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌ Π²Ρ‹Π·ΠΎΠ² ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. ΠŸΡ€ΠΈ этом, ваш ΠΊΠΎΠ΄ Π½Π΅ измСняСтся Π½ΠΈΠΊΠ°ΠΊ!
ИмСя Ρ‚Π°ΠΊΠΎΠΉ аспСкт, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄ Π»ΡŽΠ±Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ Annotation\Cacheable ΠΈ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ благодаря АОП автоматичСски. ΠŸΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠΌΡΡ ΠΏΠΎ всСм ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΈ Π²Ρ‹Ρ€Π΅Π·Π°Π΅ΠΌ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, замСняя Π΅Π΅ Π½Π° Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° с использованиСм ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ выглядит просто ΠΈ изящно:

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°ΠΉΡ‚ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠ°ΠΏΠΊΠΈ demos Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Go! AOP PHP, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹ΡˆΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π² дСйствии.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

АспСктно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ β€” довольно новая ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ° для PHP, Π½ΠΎ Ρƒ Π½Π΅Π΅ большоС Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅. Π Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ мСтапрограммирования, написаниС Enterprise-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² Π² PHP β€” всС это ΠΈΠ΄Π΅Ρ‚ ΠΏΠΎ слСдам Java, Π° АОП Π² Java ΠΆΠΈΠ²Π΅Ρ‚ ΡƒΠΆΠ΅ ΠΎΡ‡Π΅Π½ΡŒ Π΄Π°Π²Π½ΠΎ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒΡΡ ΠΊ АОП ΡƒΠΆΠ΅ сСйчас.

Go! AOP PHP β€” ΠΎΠ΄Π½Π° ΠΈΠ· Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, которая Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с АОП ΠΈ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… вопросах ΠΎΠ½Π° Π²Ρ‹Π³ΠΎΠ΄Π½ΠΎ отличаСтся ΠΎΡ‚ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ² β€” Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² Ρ„ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… классах, обращСния ΠΊ свойствам ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ исходного ΠΊΠΎΠ΄Π° ΠΈ ΠΊΠΎΠ΄Π° аспСктов. Go! ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ массу Ρ‚Π΅Ρ…Π½ΠΈΠΊ для обСспСчСния высокого быстродСйствия: компиляция вмСсто ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ, отсутствиС ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΈΠΊ, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ выполнСния, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠΊΠΎΠ΄-ΠΊΡΡˆΠ΅Ρ€ β€” всС это Π΄Π°Π΅Ρ‚ свой Π²ΠΊΠ»Π°Π΄ Π² ΠΎΠ±Ρ‰Π΅Π΅ Π΄Π΅Π»ΠΎ. Одним ΠΈΠ· ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΉ Π±Ρ‹Π»ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Go! Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Ρ… условиях ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ быстрСС C-ΡΠΊΡΡ‚Π΅Π½ΡˆΠ΅Π½Π° PHP-AOP. Π”Π°-Π΄Π°, это ΠΏΡ€Π°Π²Π΄Π°, которая ΠΈΠΌΠ΅Π΅Ρ‚ простоС объяснСниС β€” ΡΠΊΡΡ‚Π΅Π½ΡˆΠ΅Π½ Π²ΠΌΠ΅ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ Π² Ρ€Π°Π±ΠΎΡ‚Ρƒ всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² PHP Π² Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΠ΅ ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ нСбольшиС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° соотвСтствиС ΠΏΠΎΠΈΠ½Ρ‚ΠΊΠ°Ρ‚Ρƒ, Ρ‡Π΅ΠΌ большС Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ, Ρ‚Π΅ΠΌ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ Π²Ρ‹Π·ΠΎΠ² ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Go! Π΄Π΅Π»Π°Π΅Ρ‚ это ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΏΡ€ΠΈ компиляции ΠΊΠΎΠ΄Π° класса, Π½Π΅ влияя Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΠ΅.

Если Π΅ΡΡ‚ΡŒ вопросы ΠΈ поТСлания ΠΏΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ β€” я с Ρ€Π°Π΄ΠΎΡΡ‚ΡŒΡŽ обсуТу ΠΈΡ… с Π²Π°ΠΌΠΈ. НадСюсь, моя пСрвая ΡΡ‚Π°Ρ‚ΡŒΡ Π½Π° Ρ…Π°Π±Ρ€Π΅ Π±Ρ‹Π»Π° Π²Π°ΠΌ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Leave a Reply

Your email address will not be published. Required fields are marked *