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

Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅ ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ β€” Π‘Π»ΠΎΠ³ HTML Academy

Ѐункция — это кусочСк ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π΄Π°Π»ΠΈ имя.

Π’Β ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ число, строку ΠΈΠ»ΠΈ массив, Π°Β Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ²ΡˆΠΈΡΡŒ ΠΊΒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΏΠΎΒ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ устроСны ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ вмСсто строки ΠΈΠ»ΠΈ числа Π²Β Π½Π΅ΠΉ хранится Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вызываСтся ΠΏΡ€ΠΈ использовании этой Β«ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉΒ».

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ΅Π½ Π²ΠΎΒ ΠΌΠ½ΠΎΠ³ΠΈΡ… мСстах ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Если бы Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ нС сущСствовало, ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒΒ Π±Ρ‹ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΒ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° он понадобится. А так достаточно Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΈΒ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΅Ρ‘Β ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° Π½ΡƒΠΆΠ½Π°.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½ΡƒΠΆΠ½Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅Β ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΒ Ρ‚ΠΎΡ‚Β ΠΆΠ΅ ΠΊΠΎΠ΄ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·.

КакиС Π±Ρ‹Π²Π°ΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±Ρ‹Π²Π°ΡŽΡ‚ встроСнныС ΠΈΒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅.

ВстроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ за вас ΡƒΠΆΠ΅ написали создатСли языка, ΠΈΒ Π²Ρ‹Β ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто Π±Ρ€Π°Ρ‚ΡŒ ΠΈΡ…Β ΠΈΒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Π’Β PHP ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ тысячи Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ на всС случаи ΠΆΠΈΠ·Π½ΠΈΒ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,

sort() для сортировки массивов, print() для Π²Ρ‹Π²ΠΎΠ΄Π° строк на экран ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с базами Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΠΎΠ»Π½Ρ‹ΠΉ список встроСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Β PHP

Π‘Β Π½ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ‰Π΅

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ программисты ΠΏΠΈΡˆΡƒΡ‚ сами — Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ пассаТира ΠΏΠΎΒ Π½ΠΎΠΌΠ΅Ρ€Ρƒ Π°Π²ΠΈΠ°Π±ΠΈΠ»Π΅Ρ‚Π° ΠΈΠ»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, високосный ли сСйчас Π³ΠΎΠ΄. Π­Ρ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π½ΠΎΒ Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΒ β€” ΠΈΒ Ρ‚Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ выносят Π²Β Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

АргумСнты Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΒ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости

Ѐункция — это ΠΊΠ°ΠΊΒ Π±Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Β ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Ρ‘ Π½Π΅Β Π±ΡƒΠ΄ΡƒΡ‚ доступны ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ»ΠΈΡΡŒ Π·Π°Β Π΅Ρ‘Β ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ·Π²Π½Π΅, Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ

Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. ΠœΡ‹Β Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ на сайтС, являСтся ли Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π³ΠΎΠ΄ високосным. НапишСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π²Β ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π³ΠΎΠ΄. Π’Β Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΡ‹Β Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ true, Ссли Π³ΠΎΠ΄ високосный, ΠΈ false β€” Ссли Π½Π΅Ρ‚.

Π’Β Ρ‚Π°ΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Β β€” Π½ΠΎΠΌΠ΅Ρ€ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π°

$year.

<?php
function is_leap_year($year) {

Ѐункция Β«Π½Π΅Β Π²ΠΈΠ΄ΠΈΡ‚Β» ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ мы создали Π·Π°Β Π΅Ρ‘Β Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π²Β Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ явно — Ρ‚ΠΎΒ Π΅ΡΡ‚ΡŒ, Ρ‡Π΅Ρ€Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹.

Π’Π΅Ρ€Π½ΠΎ ΠΈΒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅Β β€” ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π΅Β Π±ΡƒΠ΄ΡƒΡ‚ доступны ΠΈΠ·Π²Π½Π΅. Π’Π°ΠΊΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ ΠΏΠΎΒ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊΒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π’Β ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚Β Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько, Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ во внСшний ΠΊΠΎΠ΄ функция ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Β β€” ΡΒ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструкции Β«returnΒ» (Π²ΠΎΠ·Π²Ρ€Π°Ρ‚).

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Ѐункция состоит ΠΈΠ·Β Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… частСй:

  • ΠΈΠΌΠ΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ,
  • Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π²Β Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ,
  • Ρ‚Π΅Π»Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ,
  • ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° return, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π°Β Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° в сцСнарий.

АргумСнтов Π²Β Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΒ Π½Π΅Β Π±Ρ‹Ρ‚ΡŒΒ β€” Ρ‚ΠΎΠ³Π΄Π° ΠΎΠ½Π° называСтся ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ.

Π’ΠΎΒ Π΅ΡΡ‚ΡŒ объявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ выглядит ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

<?php
function <имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ>(<Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ>) {
    <Ρ‚Π΅Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ>
    return <Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ>;
}

Π”Π°Π²Π°ΠΉΡ‚Π΅ напишСм Π½Π°ΡΡ‚ΠΎΡΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая ΠΏΠΎΒ Π½ΠΎΠΌΠ΅Ρ€Ρƒ Π³ΠΎΠ΄Π° вычисляСт, високосный ли ΠΎΠ½. Π’Π°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ‰Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ устроСны Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π§Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ:

  • Ѐункция — это кусочСк ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π΄Π°Π»ΠΈ имя.
  • Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½ΡƒΠΆΠ½Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅Β ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΒ Ρ‚ΠΎΡ‚Β ΠΆΠ΅ ΠΊΠΎΠ΄ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·.
  • Π’Β Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π½ΠΎΒ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎ.
  • ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ нСдоступны снаруТи, внСшниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ссылкС ΠΈΠ»ΠΈ Π½Π΅Ρ‚? β€” ΠŸΡΡ‚ΠΈΠΌΠΈΠ½ΡƒΡ‚ΠΊΠ° PHP

ΠŸΡΡ‚ΠΈΠΌΠΈΠ½ΡƒΡ‚ΠΊΠ° PHP Β· ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΎ ссылкС ΠΈΠ»ΠΈ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ?

Часто ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΠ»Ρ‹ΡˆΠ°Ρ‚ΡŒ Ρ„Ρ€Π°Π·Ρƒ, Ρ‡Ρ‚ΠΎ Π² PHP Β«ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ всСгда ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ссылкС». На самом Π΄Π΅Π»Π΅ всё Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ слоТнСС.

https://www.php.net/manual/ru/language.oop5.references.php

Как выглядит Ρ€Π°Π±ΠΎΡ‚Π° с ссылками Π² PHP? Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ синтаксис – ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ставится символ ампСрсанда (

&). Π’ Ρ‚ΠΎΠΌ случаС, ΠΊΠΎΠ³Π΄Π° ампСрсанд проставлСн Π² сигнатурС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΏΠΎ ссылкС. ИзмСняя Ρ‚Π°ΠΊΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, послС Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΡ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ помСнялось ΠΈ Π² мСстС Π²Ρ‹Π·ΠΎΠ²Π°. Π”ΡƒΠΌΠ°ΡŽ, с этим Π·Π½Π°ΠΊΠΎΠΌΡ‹ всС.

А Ρ‡Ρ‚ΠΎ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ? ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π²Π΅Π΄ΡƒΡ‚ сСбя Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ – Ссли Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΡ‹ мСняСм Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ состояниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ρ‚ΠΎ снаруТи ΡƒΠ²ΠΈΠ΄ΠΈΠΌ это ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½ΠΎΠ΅ состояниС. ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² сигнатурС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ампСрсанд ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ.

ΠžΡ‚ΡΡŽΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ всСгда ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ссылкС, просто синтаксис ΠΏΠΎΠΏΡ€ΠΎΡ‰Π΅, Π½Π΅ Π½Π°Π΄ΠΎ ΠΎΠ±ΠΌΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ампСрсандами.

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

На самом Π΄Π΅Π»Π΅, это Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅. РазбСрёмся Ρ‡Ρ‚ΠΎ здСсь происходит.

Π£ΠΏΡ€ΠΎΡ‰Ρ‘Π½Π½ΠΎ, ΠΌΠ΅Ρ…Π°Π½ΠΈΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ: ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ создаём ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° new ΠΈ присваиваСм ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π² эту ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ помСщаСтся Π½Π΅ сам ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π° Π½Π΅ΠΊΠΈΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, id.

ΠŸΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π²Π½ΡƒΡ‚Ρ€ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этого ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°, Ρ‚.Π΅. ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° происходит ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ. Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ являСтся Π½Π΅ сам ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π° Π΅Π³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ снаруТи Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΡ‹, имСя ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ.

Но Ссли Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΡ‹ присвоим ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ null – повлияСт Π»ΠΈ это Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ снаруТи Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ? Никак! ΠœΡ‹ ΠΎΠ±Π½ΡƒΠ»ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ id ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½ΠΎ снаруТи Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, внСшняя пСрСмСнная всё Π΅Ρ‰Ρ‘ содСрТит id ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ сам ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½ΠΈΠΊΡƒΠ΄Π° Π½Π΅ дСлся ΠΈΠ· памяти.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ставим Π² сигнатурС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ампСрсанд. Π’ этом случаС пСрСмСнная, содСрТащая ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, пСрСдастся ΠΏΠΎ ссылкС. ПомСняв Ρ‚Π°ΠΊΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, присвоив null, ΠΌΡ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠΌ Ρ‡Ρ‚ΠΎ помСнялась ΠΈ пСрСмСнная снаруТи – ΠΎΠ½Π° Ρ‚ΠΎΠΆΠ΅ стала null. А ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² памяти стал Π½ΠΈΡ‡ΡŒΠΈΠΌ ΠΈ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Ρ‘Π½ сборщиком мусора.

  1. Π€ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠ° Β«ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ всСгда ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ссылкС
    Β» Π½Π΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Π°. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, с практичСской Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ‚Π°ΠΊΠΎΠ΅ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ Π² ΠΎΠ±Ρ‰Π΅Π½ΠΈΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ, всС Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ эту Ρ„Ρ€Π°Π·Ρƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ: ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² состояниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ это ΠΈ снаруТи.
  2. Π•ΡΡ‚ΡŒ сущСствСнная Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ синтаксисом с ампСрсандом ΠΈ Π±Π΅Π· Π½Π΅Π³ΠΎ. Но Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π½Π΅ ΠΏΡ€ΠΈΠΏΠΎΠΌΠ½ΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠ½Π΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ с ампСрсандом ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ.

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π·Π°Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ: https://www.php.net/manual/ru/language.oop5.references.php ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Ρ‚Π°ΠΌ ΠΎΡ‡Π΅Π½ΡŒ наглядныС ΠΈ Ρ€Π°Π·Π²Ρ‘Ρ€Π½ΡƒΡ‚Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹!

Π€ΠΎΡ€ΠΌΠ°Ρ‚ ΠΡƒΠ΄ΠΈΠΎΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ Автор Petr Myazin

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ PHP Lambda с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±Ρ€Π°Π·ΠΎΠ² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Docker

На ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ re:Invent 2020 компания AWS объявила ΠΎ возмоТности ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΈ развСртывания Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ AWS Lambda Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠ² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ². Π£ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ AWS Lambda Π² ΠΎΠ±Ρ€Π°Π·Ρ‹ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Π΄Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹Π΅ прСимущСства Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ срСды выполнСния, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ PHP. Π’ этом сообщСнии Π² Π±Π»ΠΎΠ³Π΅ ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‚ΡΡ эти прСимущСства ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΎΠ±Ρ€Π°Π·Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Lambda для создания бСссСрвСрных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ PHP.

ΠžΠ±Π·ΠΎΡ€

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

Новая ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΠ±Ρ€Π°Π·Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° для Lambda позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°ΠΊΠΎΠΌΡ‹Π΅ инструмСнты ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° для создания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ позволяСт Π²Π°ΠΌ пСрСвСсти ваши прилоТСния Π½Π° Π±Π΅ΡΡΠ΅Ρ€Π²Π΅Ρ€Π½ΡƒΡŽ модСль, ΡƒΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌΡƒΡŽ событиями. Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ прСимущСства отсутствия инфраструктуры для управлСния, Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ ΠΈ выставлСния счСтов с ΠΎΠΏΠ»Π°Ρ‚ΠΎΠΉ ΠΏΠΎ Ρ„Π°ΠΊΡ‚Ρƒ использования.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° управляСмой событиями ΠΌΠΎΠ΄Π΅Π»ΠΈ для PHP-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‚ΡΡ Π² сСрии Π±Π»ΠΎΠ³ΠΎΠ² «БСссСрвСрный стСк LAMPΒ». Π’ Π½Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ создания бСссСрвСрных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHP. АрхитСктурныС ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ ΠΈ ограничСния слуТб Π² этой сСрии Π±Π»ΠΎΠ³ΠΎΠ² ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊ функциям, ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½Ρ‹ΠΌ с использованиСм Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² ΠΎΠ±Ρ€Π°Π·ΠΎΠ² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΈ zip-Π°Ρ€Ρ…ΠΈΠ²ΠΎΠ², Π·Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ:

.
Zip-Π°Ρ€Ρ…ΠΈΠ² ΠžΠ±Ρ€Π°Π· ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°
ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ 250 ΠœΠ‘ 10 Π“Π‘
Лямбда-слои ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² ΠΎΠ±Ρ€Π°Π·
Лямбда-ΡƒΠ΄Π»ΠΈΠ½ΠΈΡ‚Π΅Π»ΠΈ ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² ΠΎΠ±Ρ€Π°Π·

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ срСды выполнСния с ΠΎΠ±Ρ€Π°Π·Π°ΠΌΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²

Для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… срСд выполнСния, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ PHP, Lambda прСдоставляСт Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π·Ρ‹, содСрТащиС Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму Amazon Linux ΠΈΠ»ΠΈ Amazon Linux 2. Π Π°ΡΡˆΠΈΡ€ΡŒΡ‚Π΅ это, Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ² ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ срСду выполнСния, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π² Lambda Runtime API Π² Ρ„Π°ΠΉΠ»Π΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.

Π”ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΎΠ±Ρ€Π°Π·Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° для Lambda ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ срСда выполнСния ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°Π»Π°ΡΡŒ с использованиСм Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° .zip. Π­Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎ ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°:

  1. НастройтС срСду Amazon Linux, ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΡƒΡŽ со срСдой выполнСния Lambda.
  2. УстановитС зависимости компиляции ΠΈ скомпилируйтС Π²Π΅Ρ€ΡΠΈΡŽ PHP.
  3. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ скомпилированный Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» PHP вмСстС с Ρ„Π°ΠΉΠ»ΠΎΠΌ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ Π² Π²ΠΈΠ΄Π΅ ZIP-Ρ„Π°ΠΉΠ»Π°.
  4. ΠžΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠΉΡ‚Π΅ ZIP-Ρ„Π°ΠΉΠ» ΠΊΠ°ΠΊ слой срСды выполнСния.
  5. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ слой срСды выполнСния ΠΊ лямбда-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π›ΡŽΠ±Ρ‹Π΅ измСнСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ срСды выполнСния, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, вСрсии PHP, ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈΠ»ΠΈ зависимости, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ повторСния процСсса. Π­Ρ‚ΠΎΡ‚ процСсс ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½ ошибкам.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ срСды выполнСния PHP с использованиСм Π½ΠΎΠ²ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΎΠ±Ρ€Π°Π·Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° для Lambda ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ срСды выполнСния. Dockerfiles ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Π°ΠΌ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ скриптовый, Π±ΠΎΠ»Π΅Π΅ быстрый ΠΈ ΠΏΠΎΡ€Ρ‚Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ процСсс сборки Π±Π΅Π· настройки срСды Amazon Linux.

Π­Ρ‚ΠΎΡ‚ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ GitHub содСрТит ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ срСду выполнСния PHP для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Lambda, ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΡƒΡŽ Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±Ρ€Π°Π·Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Dockerfile ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· Amazon Linux, прСдоставлСнный AWS. По инструкции Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  • УстановитС общСсистСмныС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Linux (zip, curl, tar).
  • Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ ΠΈ скомпилируйтС PHP.
  • Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ ΠΈ установитС ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ зависимостСй ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€Π° ΠΈ зависимости.
  • ΠŸΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ PHP, Ρ„Π°ΠΉΠ»Ρ‹ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ зависимости поставщиков Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Lambda ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ.
  • УстановитС Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ…ΠΎΠ΄Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.
 Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· #Lambda Amazon Linux
ОВ public.ecr.aws/lambda/прСдоставляСтся ΠΊΠ°ΠΊ сборщик
# Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΆΠ΅Π»Π°Π΅ΠΌΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ PHP
Арг php_version="7.3.6"
Π‘Π•Π“Π˜ ням очисти всС && \
    yum ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ -y autoconf \
                Π±ΠΈΠ·ΠΎΠ½ \
                bzip2-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° \
                gcc \
                gcc-Π‘++ \
                Π³ΠΈΡ‚ \
                сТатиС \
                libcurl-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° \
                libxml2-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° \
                Π΄Π΅Π»Π°Ρ‚ΡŒ \
                openssl-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° \
                смола \
                Ρ€Π°ΡΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ \
                молния

# Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ исходный ΠΊΠΎΠ΄ PHP, скомпилируйтС ΠΈ установитС PHP ΠΈ Composer. 
RUN curl -sL https://github.com/php/php-src/archive/php-${php_version}.tar.gz | смолка -xvz && \
    cd php-src-php-${php_version} && \
    ./buildconf --force && \
    ./configure --prefix=/opt/php-7-bin/ --with-openssl --with-curl --with-zlib --without-pear --enable-bcmath --with-bz2 --enable- mbstring --with-mysqli && \
    ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ -j 5 && \
    ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ установку && \
    /opt/php-7-bin/bin/php -v && \
    curl -sS https://getcomposer.org/installer | /opt/php-7-bin/bin/php -- --install-dir=/opt/php-7-bin/bin/ --filename=composer

# ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ срСды выполнСния
# Π—ΠΠŸΠ£Π‘Πš mkdir -p /lambda-php-runtime/bin && \
    # cp /opt/php-7-bin/bin/php/lambda-php-runtime/bin/php
ΠšΠžΠŸΠ˜Π ΠžΠ’ΠΠ’Π¬ врСмя выполнСния/Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°/лямбда-php-врСмя выполнСния/
Π—ΠΠŸΠ£Π‘Πš chmod 0755 /lambda-php-runtime/bootstrap

# УстановитС Guzzle, ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΡŒΡ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹ поставщиков
Π—ΠΠŸΠ£Π‘Πš mkdir /lambda-php-vendor && \
    cd /lambda-php-поставщик && \
    /opt/php-7-bin/bin/php /opt/php-7-bin/bin/composer Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΆΡ€Π°Ρ‚ΡŒhttp/ΠΆΡ€Π°Ρ‚ΡŒ

###### Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π· срСды выполнСния ######
Π˜Π— public. ecr.aws/lambda/прСдоставляСтся ΠΊΠ°ΠΊ срСда выполнСния
# Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 1: Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ PHP
ΠšΠžΠŸΠ˜Π ΠžΠ’ΠΠ’Π¬ --from=builder /opt/php-7-bin /var/lang
# Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 2: ΠšΠ»ΠΈΠ΅Π½Ρ‚ интСрфСйса Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния
ΠšΠžΠŸΠ˜Π ΠžΠ’ΠΠ’Π¬ --from=builder /lambda-php-runtime /var/runtime
# Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 3: ΠŸΠΎΡΡ‚Π°Π²Ρ‰ΠΈΠΊ
ΠšΠžΠŸΠ˜Π ΠžΠ’ΠΠ’Π¬ --from=builder /lambda-php-vendor/vendor /opt/vendor

ΠšΠžΠŸΠ˜Π ΠžΠ’ΠΠ’Π¬ источник/ /var/Π·Π°Π΄Π°Ρ‡Π°/

CMD [ "индСкс" ]
 

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Lambda, слСдуйтС инструкциям Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ GitHub.

ВсС инструкции, относящиСся ΠΊ срСдС выполнСния, ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² Ρ„Π°ΠΉΠ»Π΅ Dockerfile, Ρ‡Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈ тСстированиС настраиваСмой срСды выполнСния. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Linux, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ yum install . Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ вСрсии PHP, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ php_version Π½Π° . Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ PHP, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΈΡ… Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ компиляции.

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ всСго прилоТСния Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π΄Π΅Ρ€Π΅Π²Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²:

project/
┣ runtime/
┃ β”— bootstrap
┣ src/
┃ β”— index. php
β”— Dockerfile

Код Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Lambda хранится Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ src Π² Ρ„Π°ΠΉΠ»Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ index.php. Он содСрТит ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Lambda Β« index() Β».

Π€Π°ΠΉΠ» Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ находится Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Β«runtimeΒ». ΠŸΡ€ΠΈ этом ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ API Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния Lambda для связи со срСдой выполнСния Lambda.

Π₯эш-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ shebang Π² Π½Π°Ρ‡Π°Π»Π΅ скрипта Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Lambda Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» с исполняСмым Ρ„Π°ΠΉΠ»ΠΎΠΌ PHP, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Dockerfile.

ВсС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ срСды , ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅, Π·Π°Π΄Π°ΡŽΡ‚ΡΡ срСдой выполнСния Lambda ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² ΠΎΠ±Π»Π°ΠΊΠ΅ AWS. ΠŸΡ€ΠΈ локальном запускС эмулятор интСрфСйса Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния Lambda (RIE) устанавливаСт эти значСния.

#!/var/lang/bin/php

Π›ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ тСстированиС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Lambda RIE

ИспользованиС ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΎΠ±Ρ€Π°Π·Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° для Lambda ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ PHP локальноС тСстированиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Lambda. ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ±Ρ€Π°Π·Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° создан Π½Π° основС Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π° Lambda, прСдоставлСнного AWS. Π­Ρ‚ΠΎΡ‚ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· содСрТит Lambda RIE.

Π­Ρ‚ΠΎ прокси для Lambda Runtime ΠΈ Extensions API. Он дСйствуСт ΠΊΠ°ΠΊ ΠΎΠ±Π»Π΅Π³Ρ‡Π΅Π½Π½Ρ‹ΠΉ Π²Π΅Π±-сСрвСр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ HTTP-запросы Π² события JSON ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ равСнство с Lambda Runtime API Π² ΠΎΠ±Π»Π°ΠΊΠ΅ AWS. Π­Ρ‚ΠΎ позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ локально, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π·Π½Π°ΠΊΠΎΠΌΡ‹Π΅ инструмСнты, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ cURL ΠΈ интСрфСйс ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Docker.

  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΎΠ±Ρ€Π°Π· срСды выполнСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ сборки Docker:
    docker build -t phpmyfuntion .
  2. ЗапуститС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ локально с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ запуска Docker, привязанной ΠΊ ΠΏΠΎΡ€Ρ‚Ρƒ 9000:
    docker run -p 9000:8080 phpmyfuntion:latest
  3. Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° запускаСт Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΏΠΎ адрСсу:
    localhost:9000/2015-03-31/functions/function/invocations
  4. РазмСститС событиС Π½Π° этой ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ curl. ПолСзная Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Lambda прСдоставляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„Π»Π°Π³Π° -d. Π­Ρ‚ΠΎ допустимый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Json, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ эмулятору интСрфСйса Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния:
    curl "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{"queryStringParameters": {"name":"Ben"}}'
  5. ВозвращаСтся ΠΎΡ‚Π²Π΅Ρ‚ состояния 200:

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±Ρ€Π°Π·ΠΎΠ² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Bref

Bref β€” это слой Lambda с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ для PHP. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ слой bref-fpm, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² PHP, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Symfony ΠΈ Laravel. РСализация Bref ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° FastCGI Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚ HTTP вмСсто ΠΎΡ‚Π²Π΅Ρ‚Π° JSON. ΠŸΡ€ΠΈ использовании Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° zip-Π°Ρ€Ρ…ΠΈΠ²Π° для ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Lambda ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ срСда выполнСния Bref прСдоставляСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Π²ΠΈΠ΄Π΅ слоя Lambda. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠ² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ слоСв Lambda Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ слоям срСды выполнСния Bref Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт ряд ΠΎΠ±Ρ€Π°Π·ΠΎΠ² Docker. Π­Ρ‚ΠΈ ΠΎΠ±Ρ€Π°Π·Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ API срСды выполнСния Lambda для формирования ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° интСрфСйса срСды выполнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ взаимодСйствуСт со срСдой выполнСния Lambda.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» Dockerfile, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠ±Ρ€Π°Π· ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° bref php-74-fpm :

 # Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ PHP 74-fpm.0 Π² качСствС Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π°
ОВ bref/php-74-fpm
# ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ для управлСния зависимостями
Π—ΠΠŸΠ£Π‘Πš curl -s https://getcomposer.org/installer | php
# ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ bref с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€Π°
Π—ΠΠŸΠ£Π‘Πš php composer.phar Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ bref/bref
# скопируйтС Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² ΠΏΠ°ΠΏΠΊΡƒ, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ слуТба Lambda ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ
ΠšΠžΠŸΠ˜Π ΠžΠ’ΠΠ’Π¬ . /Π²Π°Ρ€/Π·Π°Π΄Π°Ρ‡Π°
#ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ…ΠΎΠ΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
CMD _HANDLER=index.php /opt/bootstrap
 
  1. ΠŸΠ΅Ρ€Π²Π°Ρ строка устанавливаСт Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· для использования bref/php-74-fpm.
  2. Composer, установлСн ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ зависимостСй для PHP.
  3. Команда Composer require ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для добавлСния ΠΏΠ°ΠΊΠ΅Ρ‚Π° bref Π² Ρ„Π°ΠΉΠ» composer. json.
  4. Π—Π°Ρ‚Π΅ΠΌ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ /var/task , ΠΎΡ‚ΠΊΡƒΠ΄Π° запускаСтся ΠΊΠΎΠ΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
  5. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ установлСн вмСстС с Ρ„Π°ΠΉΠ»ΠΎΠΌ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Bref.

ДСйствия ΠΏΠΎ созданию ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΡŽ этого ΠΎΠ±Ρ€Π°Π·Π° Π² рССстрС Amazon Elastic Container Registry ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ для любой срСды выполнСния ΠΈ ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‚ΡΡ Π² этой записи Π±Π»ΠΎΠ³Π° с объявлСниями.

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

Новая ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΠ±Ρ€Π°Π·Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Lambda позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Lambda Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Π΄ΠΎ 10Β Π“Π‘. ИспользованиС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΎΠ±Ρ€Π°Π·Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΈ Dockerfile ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ созданиС ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… срСд выполнСния, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ PHP.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ языковыС вСрсии, ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ зависимости ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π·Ρ‹ Amazon Linux ΠΈ Amazon Linux 2 Π΄Π°ΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ для настройки срСды выполнСния. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ эмулятора интСрфСйса Lambda Runtime Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΡ€ΠΎΡ‰Π΅ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Lambda локально. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ PHP ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ сторонниС ΠΎΠ±Ρ€Π°Π·Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ bref-fpm, для создания Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² ΠΎΠ΄Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Lambda.

ΠŸΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅ serverlessland.com для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ создании бСссСрвСрных PHP-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΡŽ ΠΈΠ»ΠΈ страницС

ВордпрСсс ЭкспСрт

30 января 2023 Π³.

Домантас Π“.

3 ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ Π§Ρ‚Π΅Π½ΠΈΠ΅

Π₯ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ PHP-ΠΊΠΎΠ΄ Π² записи ΠΈΠ»ΠΈ Π½Π° страницС WordPress? Π’Ρ‹ ΠΏΠΎΠΏΠ°Π»ΠΈ Π² Π½ΡƒΠΆΠ½ΠΎΠ΅ мСсто. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ расскаТСм, ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ PHP Π½Π° страницу ΠΈΠ»ΠΈ запись WordPress, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ PHP-ΠΊΠΎΠ΄ Π² сообщСниС WordPress ΠΈΠ»ΠΈ Π½Π° страницу

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ WordPress Π½Π΅ позволяСт Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ PHP-ΠΊΠΎΠ΄ Π² сообщСниях ΠΈΠ»ΠΈ Π½Π° страницах. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΉ способ добавлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ PHP β€” ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΄ΠΎΡ‡Π΅Ρ€Π½ΡŽΡŽ Ρ‚Π΅ΠΌΡƒ ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ собствСнныС ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ страниц.

НСсмотря Π½Π° это, Π±Ρ‹Π²Π°ΡŽΡ‚ случаи, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ PHP ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΡŽ ΠΈΠ»ΠΈ страницС. Π’ этих случаях Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² ΠΊΠΎΠ΄Π° WordPress.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ руководство ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Ρ‚ вас Ρ‡Π΅Ρ€Π΅Π· процСсс использования ΠΏΠ»Π°Π³ΠΈΠ½Π° Insert PHP Code Snippet для добавлСния PHP-ΠΊΠΎΠ΄Π° нСпосрСдствСнно Π² сообщСниС ΠΈΠ»ΠΈ страницу WordPress.

Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ PHP-ΠΊΠΎΠ΄ Π² запись ΠΈΠ»ΠΈ страницу WordPress с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ»Π°Π³ΠΈΠ½Π°

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΡƒΠ³Π»ΡƒΠ±Π»ΡΡ‚ΡŒΡΡ Π² руководство, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ установили ΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ Insert PHP Code Snippet . ΠžΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с этим руководством для получСния ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Ρ… инструкций ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ WordPress ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π΅Π³ΠΎ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

  1. На ΠΏΠ°Π½Π΅Π»ΠΈ управлСния WordPress ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ XYZ PHP Code -> PHPCode Snippets .
  2. Π’ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ… ΠΊΠΎΠ΄Π° PHP , Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° PHP . Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΆΠ΅Π»Π°Π΅ΠΌΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ PHP ΠΈ Π΅Π΅ имя отслСТивания Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ поля. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ date() , которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄Π°Ρ‚Ρƒ ΠΈ врСмя. Π—Π°Ρ‚Π΅ΠΌ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ .
  1. Если процСсс Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Π½Π° экранС появится ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽΡ‰Π΅Π΅ сообщСниС ΠΈ появится новая функция. Для Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ использования ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ PHP, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ² дСйствиС 9.Ρ€Π°Π·Π΄Π΅Π» 0018. АктивныС Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠ΄Π° Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Ρ‹ Π·Π΅Π»Π΅Π½Ρ‹ΠΌ символом ΠΏΠ°ΡƒΠ·Ρ‹, Π° Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Ρ‹ Π·Π΅Π»Π΅Π½ΠΎΠΉ Π³Π°Π»ΠΎΡ‡ΠΊΠΎΠΉ.
  1. Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ PHP Π² сообщСниС ΠΈΠ»ΠΈ страницу WordPress, Π²ΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΡˆΠΎΡ€Ρ‚ΠΊΠΎΠ΄ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π² Π½ΡƒΠΆΠ½ΠΎΠ΅ мСсто. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Π±Π»ΠΎΠΊΠΎΠ² Gutenberg, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Π΅Π³ΠΎ.
  1. Π’ΠΎΡ‚ ΠΈ всС! Π’Π°Ρˆ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ созданный пост Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ PHP-ΠΊΠΎΠ΄, ΠΊΠ°ΠΊ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

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

ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ WordPress Π½Π΅ позволяСт Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ PHP-ΠΊΠΎΠ΄ Π² записи ΠΈΠ»ΠΈ Π½Π° страницС, это Π½Π΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² ΠΊΠΎΠ΄Π° WordPress, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ PHP ΠΊ своим сообщСниям ΠΈΠ»ΠΈ страницам.

Π‘Ρ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ это руководство ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ? Π”Π°ΠΉΡ‚Π΅ Π½Π°ΠΌ Π·Π½Π°Ρ‚ΡŒ Π² коммСнтариях Π½ΠΈΠΆΠ΅!

Π£Π·Π½Π°Ρ‚ΡŒ большС ЭкспСртныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ WordPress

ПолноС руководство ΠΏΠΎ WordPress
Как Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ HTML Π² WordPress?
Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ…ΡƒΠΊΠΈ WordPress? — Руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…
Как Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ поиск ΠΈ Π·Π°ΠΌΠ΅Π½Ρƒ WordPress Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…
Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Xmlrpc.php
12 Π»ΡƒΡ‡ΡˆΠΈΡ… Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² WordPress для свободного создания Ρ‚Π΅ΠΌ

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ PHP Π² часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы WordPress

Π’ΠΎΡ‚ нСсколько часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… вопросов, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ PHP Π² WordPress.

Π“Π΄Π΅ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ PHP Π² WordPress?

Π€Π°ΠΉΠ»Ρ‹ PHP ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² WordPress Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ способами, Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° ΠΈ назначСния Ρ„Π°ΠΉΠ»Π°. Π’ΠΎΠΎΠ±Ρ‰Π΅ говоря, ваши Ρ„Π°ΠΉΠ»Ρ‹ PHP Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΠΏΠ°ΠΏΠΎΠΊ: wp-content, ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ Π²Π΅Π±-сайт ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π΅ΠΌΡ‹.