diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4f7b4c7..764c945 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -11,7 +11,7 @@ jobs: build: name: "Build" - runs-on: "ubuntu-20.04" + runs-on: "ubuntu-latest" steps: - name: "Checkout php/doc-uk" @@ -33,4 +33,4 @@ jobs: repository: "php/doc-base" - name: "Build documentation" - run: "php8.0 doc-base/configure.php --disable-libxml-check --enable-xml-details --redirect-stderr-to-stdout --with-lang=uk" + run: "php doc-base/configure.php --disable-libxml-check --enable-xml-details --redirect-stderr-to-stdout --with-lang=uk" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8f96d81..19679a5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -3,26 +3,25 @@ ## Загальні тези * Система контролю версій — Git, платформа — GitHub. Відповідно, щоб новачку якнайшвидше додати чи оновити файли, потрібно просто надіслати -_pull request_. Після певної кількості підтверджених _pull request_-ів перекладач отримує право на редагування сховища. Для цього він має -попросити про це команду документування. +_pull request_. Після певної кількості підтверджених _pull request_-ів перекладач може отримати право на редагування сховища, попросивши про +це команду документування. * Документація ведеться в науковому стилі, файли документації написані мовою розмітки XML за певними правилами форматування. ## Додаткова інформація -Коли перекладач обрав файл, який необхідно перекласти, то на додаток до всіх приготувань, він змінює його статус на ***wip*** в тегові +Коли перекладач обрав файл, який необхідно перекласти, то на додаток до всіх приготувань, він змінює його статус на ***wip*** в коментарі *EN-Revision*, ``` ``` -вивантажує цей файл в сховище і вже потім починає перекладати. WIP означає "**W**ork **i**n **p**rogress", тобто файл взятий в роботу. Це -робиться для того, щоб уникнути випадків, коли кілька перекладачів працюють над однаковим текстом. +вивантажує цей файл в сховище і вже потім починає перекладати. WIP означає "**W**ork **i**n **p**rogress", тобто файл взятий в роботу. Таким +чином запобігають випадкам, коли кілька перекладачів працюють над однаковим текстом. -Файл має містити тег *Reviewed*: +Після коментаря *EN-Revision* слідує коментар *Reviewed*: ``` - ``` -Значення **no** ставлять, коли файл щойно перекладено. -Значення **yes** ставить інший перекладач після вичитки. Вичитку здійснює перекладач, що має право на редагування сховища. +Значення **no** застосовується до щойно перекладених файлів. +Значення **yes** застосовується до файлів, що були перевірені (вичитані) іншим перекладачем, який має право на редагування сховища. Коментарі в блоках коду необхідно перекладати. @@ -41,10 +40,12 @@ _pull request_. Після певної кількості підтвердже | callable | назва виклику | | conversion *(про тип)* | перетворення | | cookies| куки | -| default | стандартний, початковий | +| default | початковий/стандартний/типовий | | debugger | зневаджувач/налагоджувач | | directory | директорія | | engine | рушій | +| enum(eration) | перелічення | +| exception | виключення | | FAQ | ЧаПи (увага на регістри букв) | | float | десятковий дріб/число з рухомою крапкою | | folder | тека/каталог/папка | diff --git a/appendices/about.xml b/appendices/about.xml index 2b2efb1..bea0fc3 100644 --- a/appendices/about.xml +++ b/appendices/about.xml @@ -1,5 +1,5 @@ - + Про посібник @@ -343,9 +343,9 @@ strlen ( string $string ) : int Якщо знайдено помилку в цьому посібнику у будь-якій мові — будь ласка, повідомте про неї, використавши засіб відстеження проблем відповідного мовного репозиторію на - https://github.com/php; + &url.php.git;; до прикладу, про помилки в англійському посібнику потрібно повідомляти на - https://github.com/php/doc-en/issues. + &url.php.git;doc-en/issues. Усі проблеми, пов'язані з документацією, включаючи проблеми з форматами посібника, повинні подаватися як звіти про помилки. diff --git a/appendices/filters.xml b/appendices/filters.xml index d5b691d..1fa51eb 100644 --- a/appendices/filters.xml +++ b/appendices/filters.xml @@ -1,5 +1,5 @@ - + Список доступних фільтрів @@ -110,9 +110,7 @@ fwrite($fp, "This is a test.\n"); формах: або рядок, що містить перелік тегів, тобто як другий параметр функції strip_tags, або масив з назвами тегів. - - &warn.deprecated.feature-7-3-0; - + &warn.deprecated.feature-7-3-0; string.strip_tags @@ -298,7 +296,7 @@ fclose($fp); стиснення. Вищі значення (до 15 — 32768 байтів) дають краще стиснення, використовуючи більше пам'яті, коли нижчі значення (менше 9 — 512 байтів) — гірше стиснення при меншому обсязі пам'яті. Початково параметр - window дорівнює 15. + window дорівнює 15. memory є шкалою, що визначає, скільки пам'яті для роботи повинно бути виділено. Діапазон допустимих значень від 1 @@ -463,9 +461,7 @@ echo "Стиснений файл має " . filesize('LICENSE.compressed') . "
mcrypt.* та mdecrypt.* - - &warn.deprecated.feature-7-1-0; - + &warn.deprecated.feature-7-1-0; mcrypt.* та mdecrypt.* забезпечують diff --git a/appendices/ini.sections.xml b/appendices/ini.sections.xml index 78bdaa5..3076799 100644 --- a/appendices/ini.sections.xml +++ b/appendices/ini.sections.xml @@ -1,24 +1,23 @@ - +
- List of &php.ini; sections + Список секцій файлу &php.ini; - This list includes the &php.ini; sections you can set to configure your - PHP setup on a per Host or Path basis. These sections are optional. + Список містить секції, які можна використовувати в файлі &php.ini; для + налаштування роботи PHP на хості або шляху. Ці секції необов'язкові. - These sections don't directly affect PHP. They are used to group other - &php.ini; directives together and to get them to act upon a particular host - or on a particular path. + Вони не впливають безпосередньо на PHP, а групують директиви &php.ini; і + вказують, для якого хоста або шляху ті діють. - These sections are used only in CGI/FastCGI mode and they can not set - extension and zend_extension directives. + Секції використовуються тільки в режимі CGI/FastCGI та не можуть містити + директиви extension та zend_extension. - Sections + Секції @@ -53,12 +52,13 @@ - This section allows you to define a set of &php.ini; directives that - will take effect on the named host. + Ця секція дозволяє визначити набір директив &php.ini;, що діятимуть для + заданого хоста. - Activate full on-screen error reporting for dev. domain + Увімкнути повне екранне оповіщення про помилки домена для + розробки - This section allows you to define a set of &php.ini; directives that - will take effect when a script runs from the named path. + Ця секція дозволяє визначити набір директив &php.ini;, що діятимуть для + заданого шляху. - Add security script for protected areas + Додати скрипт безпеки для захищених частин - + + Перехід від PHP 7.4.x до PHP 8.0.x @@ -22,6 +23,7 @@ &appendices.migration80.new-features; + &appendices.migration80.new-classes; &appendices.migration80.incompatible; &appendices.migration80.deprecated; &appendices.migration80.other-changes; diff --git a/bookinfo.xml b/bookinfo.xml index da37129..522b365 100644 --- a/bookinfo.xml +++ b/bookinfo.xml @@ -1,5 +1,5 @@ - + &frontpage.authors; @@ -35,13 +35,6 @@ поширюється разом із даним посібником. Найсвіжіша на цей момент версія доступна за адресою &url.cc.by;. - - Якщо ви зацікавлені в поширенні або публікації цього документа повністю чи - частково, зі змінами чи без, та у вас є питання, ви можете зв'язатись з - власником авторського права за адресою - &email.php.doc.license;. - Пам'ятайте, що ця адреса відображатиметься в списку публічної розсилки. - diff --git a/chapters/intro.xml b/chapters/intro.xml index 72360c6..1066e63 100644 --- a/chapters/intro.xml +++ b/chapters/intro.xml @@ -1,13 +1,17 @@ - + - Вступ + + Вступ + Що таке PHP та що з цим можна робити? + -
+ +
Що таке PHP? - PHP (рекурсивний акронім словосполучення PHP: - Hypertext Preprocessor) — це найпоширеніша мова програмування + PHP (рекурсивний акронім словосполучення PHP: + Hypertext Preprocessor) — це найпоширеніша мова програмування загального призначення з відкритим початковим кодом. PHP сконструйована спеціально для ведення веброзробок, а її код може впроваджуватися безпосередньо в HTML. @@ -28,7 +32,7 @@ @@ -38,42 +42,42 @@ - Замість багатьох команд для виведення HTML (як це видно в C або Perl), - PHP-сторінки містять HTML з вбудованим кодом, який "щось" робить (в цьому - випадку виводить "Привіт, я - PHP - скрипт!"). Код PHP відокремлюється спеціальними щось робить (в цьому випадку виводить + Привіт, я — PHP скрипт!). Код PHP + відокремлюється спеціальними початковими і кінцевими тегами <?php та ?>, які дозволяють - "перемикатись" в "PHP-режим" і виходити з нього. + перемикатись в PHP-режим і, відповідно, виходити з нього. PHP відрізняється від JavaScript тим, що PHP-скрипти виконуються на сервері і генерують HTML, яка видається клієнту. Клієнт отримуватиме результат - виконання певного скрипта, але не знатиме який саме код його згенерував. Ви - навіть можете налаштувати вебсервер обробляти всі файли HTML через PHP так, - що клієнти навіть не зможуть дізнатися, чи отримують вони звичайний - HTML-файл, чи результат виконання скрипта. + виконання певного скрипта, але не знатиме який саме код його згенерував. + Вебсервер можна налаштувати для обробки всіх файли HTML через PHP так, що + клієнти навіть не зможуть дізнатися, чи використовується PHP. - Найкращим у використанні PHP є те, що вона дуже проста для новачків, але + Найкращим у використанні PHP є те, що мова дуже проста для новачків, але пропонує багато додаткових функцій для професійних програмістів. Не бійтесь - читання довгого списку можливостей PHP. Ви можете легко почати та вже - протягом кількох годин зможете писати прості скрипти. + читання довгого списку можливостей PHP. За допомогою PHP майже будь-хто може + розпочати роботу і писати прості скрипти досить швидко. - Хоча розробники PHP сфокусовані на скриптах на стороні сервера, - сфера застосування не обмежується лише цим. Читайте далі, та не пропустіть - розділ Можливості PHP, - або зразу почніть з простого посібника, - якщо вас цікавить виключно програмування вебу. + Хоча розробники PHP сфокусовані на скриптах на стороні сервера, сфера + застосування не обмежується лише цим. Читайте далі, та не пропустіть розділ + Можливості PHP, або почніть з простого посібника, щоб одразу перейти до вивчення + вебпрограмування.
-
+
Що може робити PHP? Будь-що. Головним чином PHP сфокусована на написанні скриптів, що працюють - на стороні сервера, отже ви можете робити будь-що, що роблять CGI програми, + на стороні сервера, отже можна робити будь-що, що роблять CGI-програми, наприклад, обробку даних форм, генерування вмісту динамічних сторінок, або відправлення та отримання куків. Але PHP має значно ширші можливості. @@ -82,33 +86,29 @@ - Написання скриптів для виконання на стороні сервера. PHP традиційно і - найбільш широко використовується саме таким чином. Для цього вам потрібні - будуть всього три речі: парсер PHP (CGI або модуль сервера), вебсервер та - веббраузер. Вам потрібно запустити вебсервер з встановленим на ньому PHP. - Через вебсервер можна пропускати сторінку з кодом PHP, та проглядати - результат її роботи через веббраузер. Все це можна робити на вашому - домашньому комп'ютері, якщо ви просто експериментуєте програмування на - PHP. Читайте розділ з інструкціями - встановлення для докладнішої інформації. + Написання скриптів для виконання на стороні сервера. PHP найчастіше + застосовується саме таким чином. Для цього потрібні всього три речі: + парсер PHP (CGI або модуль сервера), вебсервер та веббраузер. Все це + можна запустити на домашньому комп'ютері, якщо потрібно просто + поекспериментувати з програмуванням на PHP. Докладніше у розділі + Встановлення та налаштування. - Створення скриптів для виконання в командному рядку. Ви можете створювати - PHP-скрипти, що можуть запускатись без будь-якого сервера чи браузера. - Для цього вам потрібен лише PHP-парсер. Цей тип використання ідеальний - для скриптів, що регулярно запускаються через cron (на *nix чи Linux) або - Планувальник Задач (на Windows). Ці скрипти можуть також - використовуватись для простої обробки текстів. Докладнішу інформацію - можна знайти в розділі Використання - командного рядка PHP. + Створення скриптів для виконання в командному рядку. PHP-скрипти можна + запускати без будь-якого сервера чи браузера, потрібен лише PHP-парсер. + Цей тип використання ідеальний для скриптів, що регулярно запускаються + через cron (на Unix чи macOS) або Планувальник завдань + (на Windows). Ці скрипти можна також використовувати для простої обробки + текстів. Докладнішу інформацію можна знайти в розділі Використання командного рядка PHP. - PHP може використовуватись у більшості + PHP можна використовувати у більшості операційних систем, як-от Linux, багато варіантів Unix (напр. HP-UX, Solaris та OpenBSD), Microsoft Windows, macOS X, RISC OS та, можливо, інші. PHP також має підтримку для більшості сучасних вебсерверів, таких як Apache, IIS @@ -117,24 +117,24 @@ працює або як модуль, або як CGI процесор. - Тож з PHP ви маєте свободу вибору операційних систем та вебсерверів. Крім - того, ви маєте можливість вибрати процедурне або об'єктно-орієнтоване (ООП) + Тож з PHP розробники мають свободу вибору операційних систем та вебсерверів. + Крім того, вони можуть вибрати процедурне або об'єктно-орієнтоване (ООП) програмування, чи їхнє поєднання. - З PHP ви не обмежені видачею лише HTML. Можливості PHP включають виведення - різноманітних типів файлів, таких як зображення або файли PDF, шифрування - даних і надсилання електронних листів. Ви також можете легко виводити - будь-який текст, такий як JSON та XML. PHP може автоматично генерувати ці - файли, та зберігати їх у файловій системі (а не лише виводити текст), - формувати кеш на стороні сервера для динамічного вмісту. + PHP не обмежується лише виводом HTML. Можливості PHP включають виведення + файлів різноманітних типів, як от зображень або файлів PDF, шифрування + даних і надсилання електронних листів. Також можна легко виводити будь-який + текст, наприклад JSON або XML. PHP може автоматично генерувати ці файли та + зберігати їх у файловій системі (а не лише виводити текст), формувати кеш на + стороні сервера для динамічного вмісту. Одна з найсильніших та найбільш істотних особливостей в PHP - це підтримка широкого кола баз даних. Написання вебсторінки із застосуванням бази даних - неймовірно легке, використовуючи - одне зі спеціальних розширень (наприклад для - mysql), або використовуючи абстрактний + одне зі спеціальних розширень (наприклад для mysql), або використовуючи абстрактний прошарок, такий як PDO. Також можна легко під'єднатись до будь-якої бази даних, що підтримує стандарт Open Database Connection через розширення ODBC. Інші @@ -145,12 +145,11 @@ PHP також підтримує взаємодію з іншими сервісами, використовуючи протоколи LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (на Windows) та багато інших. Крім - того, ви маєте можливість відкривати необроблені мережеві сокети та - взаємодіяти з будь-яким іншим протоколом. PHP має підтримку обміну для - складних структур даних WDDX практично між всіма мовами вебпрограмування. - Говорячи про взаємодію PHP з різними мовами, варто згадати про підтримку - об'єктів Java та можливість їхнього прозорого використання в якості об'єктів - PHP. + того, можна відкривати необроблені мережеві сокети та взаємодіяти з + будь-яким іншим протоколом. PHP має підтримку обміну складних структур даних + WDDX практично між всіма мовами вебпрограмування. Кажучи про взаємодію PHP + з різними мовами, варто згадати про підтримку об'єктів Java та можливість + їхнього прозорого використання як об'єктів PHP. PHP має корисні можливості для обробки @@ -165,18 +164,18 @@ Існує ще багато інших цікавих розширень, які можна проглянути як в - алфавітному порядку так і по - категоріях. Також в даному посібнику з PHP + алфавітному порядку так і за + категоріями. Також в даному посібнику з PHP є багато додаткових розширень - PECL, таких як XDebug, що вже + PECL, як от XDebug, що вже документовані або ще ні. - Як бачите — цієї сторінки не достатньо, щоб охопити весь спектр можливостей - та переваг, що пропонує PHP. Читайте в наступному розділі про - встановлення PHP, та прогляньте розділ - Довідник функцій для більш детальних - пояснень про згадані тут розширення. + Цієї сторінки не вистачить, щоб охопити весь спектр можливостей та переваг, + що пропонує PHP. В наступному розділі читайте про встановлення PHP, а також прогляньте розділ Довідник функцій для докладніших пояснень про + згадані тут розширення.
diff --git a/chapters/tutorial.xml b/chapters/tutorial.xml index d318b30..48b54a8 100644 --- a/chapters/tutorial.xml +++ b/chapters/tutorial.xml @@ -1,5 +1,5 @@ - + Простий підручник @@ -12,22 +12,22 @@ Вебсторінки, створені за допомогою PHP, обробляються як звичайні сторінки - HTML. Створювати та редагувати їх можна в той же спосіб, що і звичайні - сторінки HTML. + HTML. Створювати та редагувати їх можна так, як і звичайні сторінки HTML.
Що мені потрібно? Ми припускаємо, що на вашому вебсервері активовано підтримку PHP, а всі - файли із закінченням .php обробляються через PHP. На - більшості серверів дане розширення початково обробляється через PHP, але - краще уточнити це у вашого вебадміністратора. Якщо ваш сервер підтримує PHP, - то ви маєте все необхідне. Просто створюйте файли із закінченням - .php, кладіть їх у вебтеку, а сервер оброблятиме їх - автоматично. Немає потреби будь-що компілювати чи встановлювати додаткові - інструменти. Вважайте файли PHP простими файлами HTML з набором нових - магічних тегів, що дозволяють вам робити купу різних речей. + файли із закінченням .php + обробляються через PHP. На більшості серверів це так і працює, але краще + уточнити це у вашого вебадміністратора. Якщо ваш сервер підтримує PHP, то ви + маєте все необхідне. Просто створюйте файли із закінченням .php, кладіть їх у вебтеку, а сервер + оброблятиме їх автоматично. Немає потреби будь-що компілювати чи + встановлювати додаткові інструменти. Вважайте файли PHP простими файлами + HTML з набором нових магічних тегів, що дозволяють вам робити купу різних + речей. Мабуть ви захочете заощадити дорогоцінну пропускну здатність та вести @@ -70,6 +70,28 @@ +]]> + + + Для доступу до файлу використайте ваш браузер, у якому перейдіть за + адресою, що складається з URL вашого вебсервера і закінчення + /hello.php. Під час локальної розробки цей URL + виглядатиме приблизно так: http://localhost/hello.php + або http://127.0.0.1/hello.php, проте це залежить від + налаштування вебсервера. Якщо все працює добре, то цей файл буде оброблено + інтерпретатором PHP, а ви побачите у браузері "Hello World". + + + Код PHP можна вбудувати в звичайну HTML-сторінку. Це означає, що всередині + HTML-документа ви можете писати інструкції PHP, як в наступному прикладі: + + + @@ -82,14 +104,7 @@ ]]> - Щоб отримати доступ до цього файлу, використовуйте браузер - в полі адреси - введіть назву вашого вебсервера та допишіть /hello.php. - Якщо ви розробляєте скрипти локально (на своєму домашньому комп'ютері), - введена адреса повинна мати вигляд - http://localhost/hello.php - або http://127.0.0.1/hello.php, але це залежить від - конфігурації вашого вебсервера. Якщо все встановлено коректно, ваш файл - повинен оброблятись через PHP та виводитись наступний вміст для браузера: + Це матиме наступний вивід: багатьох доступних способів. - Мета прикладу - показати формат спеціальних тегів PHP. Тут ми використали - <?php у ролі відкриваючого тегу. Потім йдуть команди - PHP, а для завершення PHP-режиму ми додали закриваючий тег + Мета прикладу — показати формат спеціальних тегів PHP. Тут ми використали + <?php у ролі початкового тегу. Далі записано команди + PHP, а для завершення PHP-режиму ми додали кінцевий тег ?>. Таким чином, ви можете в будь-якому місці входити і виходити з PHP-режиму всередині файлу HTML. Докладніше про це читайте в - розділі Базовий синтаксис PHP. + розділі Основний синтаксис PHP. - + Про символ нового рядка @@ -153,8 +168,8 @@ символ нового рядка після них, або можете явно виводити виводити символ нового рядка всередині блока PHP через виклик echo чи print в останній команді. - - + + Про текстові редактори @@ -168,7 +183,7 @@ підсвічуванням синтаксису. - + Про текстові процесори @@ -179,7 +194,7 @@ бо інакше PHP не зможе прочитати та виконати цей скрипт. - + Тепер, коли ви створили робочий PHP скрипт, прийшов час для створення найпопулярнішого PHP скрипта! Зробіть виклик функції @@ -364,7 +379,7 @@ if (str_contains($_SERVER['HTTP_USER_AGENT'], 'Firefox')) { Firefox.
- +
Робота з формами diff --git a/faq/com.xml b/faq/com.xml index 397246e..7487641 100644 --- a/faq/com.xml +++ b/faq/com.xml @@ -1,5 +1,5 @@ - + PHP і COM PHP і COM @@ -229,9 +229,7 @@ $word = new COM("C:\docs\word.doc"); Відповідь настільки проста, наскільки і незадовільна. Невідомо, чому так, - але не можна нічого з цим вдіяти. Якщо хтось має потрібну інформацію з - цього приводу, будь ласка, - дайте знати :) + але не можна нічого з цим вдіяти. @@ -239,7 +237,7 @@ $word = new COM("C:\docs\word.doc"); - Отже, PHP працює з COM, як щодо COM+ ? + Отже, PHP працює з COM, як щодо COM+? diff --git a/faq/installation.xml b/faq/installation.xml index c9e55d4..b9f0422 100644 --- a/faq/installation.xml +++ b/faq/installation.xml @@ -1,5 +1,5 @@ - + Встановлення @@ -455,7 +455,7 @@ cgi error: - Як зробити доступним файл &php.ini; для PHP на Windows? + Як зробити файл &php.ini; доступним для PHP на Windows? @@ -466,6 +466,33 @@ cgi error: + + + + + Windows: Як перевірити, що PHP на сервері IIS має право запису до + тимчасової директорії? + + + + + + + Це можна зробити в Провідникові, перейшовши у "Властивості" тимчасової + директорії (%TEMP%). Шлях до тимчасової директорії + можна дізнатися під час налаштування або через функцію + phpinfo. + + + + + Для IIS, перевірити, чи користувач IIS_User має + дозвіл MODIFY. + + + + + diff --git a/faq/obtaining.xml b/faq/obtaining.xml index c289a10..5de9c16 100644 --- a/faq/obtaining.xml +++ b/faq/obtaining.xml @@ -1,5 +1,5 @@ - + Отримання PHP Отримання PHP @@ -160,7 +160,7 @@ - readline. + libedit. @@ -193,7 +193,7 @@ Перегляньте чинні інструкції для PHP тут: - Покрокова інструкція зі збірки + Покрокова інструкція зі збірки diff --git a/faq/passwords.xml b/faq/passwords.xml index 8422b8e..748a7eb 100644 --- a/faq/passwords.xml +++ b/faq/passwords.xml @@ -1,155 +1,150 @@ - + Безпечне гешування паролів Гешування паролів - + Цей розділ пояснює причини використання геш-функцій для убезпечення паролів, а також, як це зробити ефективно. - + - - Навіщо мені гешувати користувацькі паролі моєї програми? - + + Навіщо гешувати користувацькі паролі? + - + Гешування паролів є основним захисним заходом, що вживається під час - розробки програми, яка буде приймати паролі від користувачів. Без - гешування будь-які паролі, що містяться у вашій базі даних, можуть бути - вкрадені, якщо базу даних зламають, та негайно використані для зламу всієї - вашої програми, а також облікових записів ваших користувачів у інших - сервісах, якщо користувачі задали не унікальні паролі. - - - Застосовуючи алгоритм гешування користувацьких паролів перед зберіганням - їх у вашій базі даних, ви унеможливлюєте викриття зловмисником - оригінального пароля, маючи при тому змогу у майбутньому порівнювати + розробки програми або сервісу, що приймає паролі від користувачів. Без + гешування будь-які збережені паролі можуть бути вкрадені, якщо сховище + даних зламають, та негайно використані для зламу програми чи сервісу і + облікових записів користувачів у інших сервісах, де використано такі ж + паролі. + + + Застосування алгоритму гешування користувацьких паролів перед збереженням + унеможливлюєте викриття зловмисником оригінального пароля, маючи при тому змогу у майбутньому порівнювати отриманий геш з наявним. - - - Важливо підкреслити, що гешування паролів лише захищає їх від того, щоб - бути скомпрометованими у вашому сховищі даних, але аж ніяк не захищає їх - від перехоплення зловмисним кодом, впровадженим у вашу програму. - + + + Важливо підкреслити, що гешування паролів лише захищає їх від розкриття + у сховищі даних, але не від перехоплення зловмисним кодом, вживленим у + програму або сервіс. + - + Чому такі поширені геш-функції як md5 і sha1 не придатні для паролів? - + - + Алгоритми гешування MD5, SHA1 та SHA256 розроблені бути дуже швидкими та ефективними. З сучасною технікою та комп'ютерним обладнанням стало - легко зламати результат цих алгоритмів, щоб визначити початковий текст. - - - Через те, як швидко сучасні комп'ютери можуть запустити такий алгоритм в - зворотньому напрямку, багато фахівців з безпеки наполягають не - використовувати таке гешування. - + легко зламати результат цих алгоритмів, щоб визначити + початковий текст. + + + Через те, як швидко сучасні комп'ютери можуть запустити такий алгоритм + у зворотньому напрямку, багато фахівців з безпеки + наполягають не використовувати таке гешування. + - - Як мені гешувати паролі, якщо поширені геш-функції не придатні. - + + Як гешувати паролі, якщо поширені геш-функції не придатні. + - + Під час гешування паролів двома найважливішими факторами є витрати на обчислення та т. зв. "сіль". Чим більше обчислень має виконати алгоритм, тим довше триватиме злам результату його обчислень. - - + + PHP має вбудований API гешування паролів, який надає засоби як гешування, так і перевірки паролів безпечним способом. - - - - Інший спосіб — це функція crypt, яка підтримує - декілька алгоритмів гешування. Використовуючи цю функцію, ви гарантовано - оберете доступний алгоритм, адже PHP має власну реалізацію кожного - підтримуваного алгоритму, навіть якщо один або декілька не підтримуються - вашою системою. - - + + Для гешування паролів рекомендується алгоритм Blowfish, який стандартно використовується API гешування паролів, оскільки він є набагато дорожчим в обчисленні, аніж MD5 або SHA1, залишаючись масштабованим. - - - Зауважте, якщо ви використовуєте crypt для перевірки - пароля, вам необхідно подбати про запобігання часових атак, використовуючи - однаковий час для порівняння рядків. Ані - оператори == і ===, - ані strcmp не виконують порівняння за однаковий - проміжок часу. Тільки password_verify зробить це для - вас, тож дуже просимо використовувати - вбудований API гешування паролів за + + + Функція crypt також може гешувати паролі, але + рекомендовано використовувати її тільки для підтримки сумісності з іншими + системами. Натомість краще використовувати вбудований API гешування паролів за будь-якої можливості. - + - + Що таке "сіль"? - + - + Криптографічна сіль — це текст, який дописується до даних у процесі гешування, щоб унеможливити пошук результатів у списку попередньо обчислених пар гешів та їхніх вхідних даних, відомого як райдужна таблиця. - - + + Простими словами, сіль — це допоміжна частинка даних, яка значно ускладнює злам ваших гешів . Існує певна кількість онлайн сервісів з надання розширених списків попередньо обчислених гешів, а також їхніх вхідних даних. Використання солі робить малоймовірним або неможливим знаходження отриманого гешу в одному з цих списків. - - + + password_hash створить випадкову сіль, коли та не вказана, і це, як правило, найпростіший і найбезпечніший підхід. - + - - Як мені зберігати цю сіль? - + + Де сіль зберігається? + - + У password_hash або crypt значення, що повертається, містить сіль як частину утвореного гешу. Це - значення має бути точно збережене у вашій базі даних, оскільки воно - містить інформацію про геш-функцію, яка використовувалася, і потім може - бути надано безпосередньо до password_verify або - crypt під час перевірки паролів. - - - На наступній діаграмі показано формат значення, що повертається функціями - crypt або password_hash. Як - можна побачити, значення є самодостатнім, з усією інформацією про - алгоритм і сіль, необхідну для майбутньої перевірки пароля. - + значення потрібно точно зберігати у базі даних, оскільки воно містить + інформацію про геш-функцію, яка використовувалася, і потім може бути + передано безпосередньо до функції password_verify для + перевірки паролів. + + + + Задля убезпечення від часових атак потрібно завжди використовувати + функцію password_verify замість повторного гешування + і порівняння результату зі збереженим гешем. + + + + Наступна діаграма показує формат значення, що повертається функціями + crypt або password_hash. + Помітно, що значення є самодостатнім, з усією інформацією про алгоритм і + сіль, необхідну для майбутньої перевірки пароля. + diff --git a/install/cloud/azure.xml b/install/cloud/azure.xml index fb2c107..af5e63f 100644 --- a/install/cloud/azure.xml +++ b/install/cloud/azure.xml @@ -1,5 +1,5 @@ - + Azure App Services @@ -7,47 +7,49 @@ PHP часто використовується на Azure App Services (Microsoft Azure, Windows Azure, Azure Web Apps). - Azure App Services керує пулом Windows Web Servers для розміщення вашої - веб-програми як альтернативою керування власним веб-сервером на віртуальних + Azure App Services керує пулом Windows Web Servers для розміщення + вебпрограми, тож є альтернативою керування власним вебсервером на віртуальних машинах Azure Compute або інших серверах. - PHP вже увімкнений для вашого сайту на Azure App Services автоматично. - Обираючи ваш веб сайт в Azure Portal, ви можете вибрати, яку версію PHP - використовувати. Можливо, буде потреба обрати новішу версію, за ту, яка - встановлена початково. + PHP увімкнений автоматично для сайту в Azure App Services. Обираючи + вебсайт в Azure Portal, можна обрати для нього потрібну версію PHP. Можливо, + новішу версію, за ту, яка встановлена початково. - Таким чином, PHP та його розширення будуть працювати на Azure App - Services так само, як і на будь-яких інших серверах Windows. + Таким чином, PHP та його розширення будуть працювати в Azure App Services + так само, як і на будь-яких інших серверах Windows. Тим не менш, інтерфейс керування для Azure App Services є інакшим: - Azure portal: створити, налаштувати, видалити веб сайти Azure Portal + Azure portal: створити, налаштувати, видалити вебсайти. + Azure Portal - Панель Kudu: [назва вашого сайту].azurewebsites.net. Тож панель Kudu — - це https://[назва вашого сайту].scm.azurewebsites.net/. - Панель Kudu надає доступ до деяких можливостей налагодження, управління - файлами та розширеннями сайтів. Розширення сайту - це механізм Azure для - додавання допоміжних програм на ваш веб-сайт, таких як попередній перегляд - збірки PHP. + + Панель Kudu: якщо вебсайт має URL + site_name.azurewebsites.net, + то панель Kudu буде за адресою + https://site_name.scm.azurewebsites.net/. + Панель Kudu надає доступ до можливостей налагодження, управління + файлами та розширеннями сайту. Розширення — це механізм Azure для + підключення допоміжних програм на вебсайт, як от попередній перегляд збірки + PHP. - Не буде можливим використовувати IIS Manager, Server Manager, чи RDP. + Не можливо використовувати IIS Manager, Server Manager, чи RDP. - PHP SDK дозволяє в вашому PHP коді використовувати більшість сервісів - Azure. Дивіться: Azure SDK для PHP. + PHP SDK дозволяє використовувати в PHP-коді більшість сервісів Azure. + Див.: Azure SDK для PHP. - Для докладної інформації перегляньте - Azure PHP Developer Center + Докладніше: Azure PHP Developer Center @@ -55,17 +57,17 @@ WinCache є початково увімкненим у Azure App Services і рекомендується його не вимикати. - Якщо ви встановлюєте власну збірку PHP, вам потрібно увімкнути WinCache в ній - також. + Якщо розробник встановлює власну збірку PHP, йому потрібно увімкнути WinCache + в ній також. Власна збірка PHP - Ви можете завантажити вашу власну збірку PHP в теку D:\Home (диск C:\ - для запису НЕ доступний). - Далі в Azure Portal запишіть абсолютний шлях до файлу php-cgi.exe вашої - збірки у SCRIPT_PROCESSOR для .php. + + Треба завантажити власну збірку PHP в теку D:\Home (диск C:\ для запису НЕ + доступний). Далі в Azure Portal в полі SCRIPT_PROCESSOR для .php записати + абсолютний шлях до файлу php-cgi.exe цієї збірки. diff --git a/install/cloud/digitalocean.xml b/install/cloud/digitalocean.xml index 744a599..a30ce78 100644 --- a/install/cloud/digitalocean.xml +++ b/install/cloud/digitalocean.xml @@ -1,5 +1,5 @@ - + DigitalOcean @@ -9,14 +9,14 @@ - Cloudways: + Cloudways: Розгортання популярних PHP-додатків в один клік: WordPress, Magento, Drupal, Laravel та інші. - Droplet: + Droplet: Віртуальні машини та встановлення набору LAMP на сервер. @@ -25,7 +25,7 @@ - App Platform: + App Platform:: Керована інфраструктура для швидкого створення, розгортання та масштабування програм. @@ -35,7 +35,7 @@ - Functions: + Functions: Платформа, що дозволяє розробниками запускати код без підтримання або керування серверами. PHP підтримується одразу. diff --git a/install/macos/index.xml b/install/macos/index.xml index 92bb180..8c4a666 100644 --- a/install/macos/index.xml +++ b/install/macos/index.xml @@ -1,16 +1,15 @@ - + Встановлення на macOS - - Цей розділ містить замітки та підказки щодо встановлення PHP на macOS. PHP - входить до складу macOS, з версії macOS X (10.0.0) і до macOS Monterey - (12.0.0). Процес збирання подібний до того, що в Керівництві зі встановлення на Unix. - + + PHP входить до складу macOS версії 10 та 11, але не входить до macOS 12 + (Monterey) та новіших. Для встановлення PHP на свіжих версіях macOS необхідні + пакунки зі сторонніх джерел або компіляція з початкового коду. + &install.macos.packages; - &install.macos.bundled; &install.macos.compile; + &install.macos.bundled; + - Замітки для Debian GNU/Linux + Примітки щодо встановлення в Debian GNU/Linux - Ця сторінка містить замітки та підказки призначені для встановлення PHP на - Debian GNU/Linux. + Хоча PHP можна зібрати з початкового коду, він також доступний у вигляді + пакетів в Debian GNU/Linux. Це діє і + для інших дистрибутивів на основі Debian, як от Ubuntu, Kali Linux і Linux + Mint. - - - Неофіційні збірки від третіх сторін тут не згадуються. Про будь-які - несправності потрібно звітувати команді Debian, якщо їх не можна відтворити, - використовуючи останні збірки з нашої - сторінки завантажень. - - + &warn.install.third-party-support; - Хоча загальні інструкції для встановлення PHP на Unix застосовуються також і - до Debian, ця сторінка містить специфічну інформацію щодо інших моментів, - як наприклад використання команд apt або - aptitude. Тут використовуються ці дві команди по черзі. + Пакунки можна встановити командою apt або + aptitude. Ці дві команди вважаються рівнозначними. Використання APT По-перше, варто зауважити, що інші пов'язані пакети можуть потребувати - libapache2-mod-php для інтеграції з Apache 2, та + libapache2-mod-php для інтеграції з Apache 2 та php-pear для PEAR. @@ -32,7 +25,7 @@ Типово, це робиться через запуск команди apt update. - Приклад встановлення Debian з Apache 2 + Приклад встановлення з Apache 2 в Debian - APT буде автоматично встановлювати модуль PHP для Apache 2 та всі його - залежності, а потім активує його. Apache потрібно перезапустити, щоб зміни - набули чинності. Наприклад: + APT автоматично встановить модуль PHP для Apache 2 та всі його залежності, а + потім активує його. Apache потрібно перезапустити, щоб зміни набули + чинності. Наприклад: - Зупинка та запуск Apache, коли PHP встановлено + Зупинка та запуск Apache після встановлення PHP Розширене налаштування - В останньому прикладі, PHP було встановлено з основними модулями. Ймовірно, - потрібно буде доставити інші модулі, наприклад + В останньому прикладі PHP було встановлено з основними модулями. Ймовірно, + потрібно буде додати інші модулі, наприклад, MySQL, - cURL, - GD, - та інші. Їх також можна встановити через команду apt. + cURL, GD + та інші. Їх також можна встановити через команду apt. Методи пошуку додаткових пакетів для PHP @@ -75,11 +67,11 @@ - Ці методи покажуть великий список пакетів, включаючи деякі специфічні для - PHP, такі як php-cgi, php-cli та php-dev. Вони встановлюються за допомогою - apt або aptitude. Оскільки Debian - виконує перевірку залежностей, буде запропоновано, наприклад, встановити - MySQL та cURL: + Список складатиметься з великої кількості пакунків, що містять основні + компоненти PHP, як от php-cgi, php-cli + та php-dev, а також багато інших розширень PHP. Під час + встановлення розширень будуть автоматично встановлені додаткові пакунки, + необхідні для задоволення залежностей цих розширень. Встановлення PHP з MySQL та cURL @@ -90,12 +82,12 @@ - APT буде автоматично додавати відповідні рядки для різних &php.ini; - пов'язаних файлів, як от /etc/php/7.4/php.ini, - /etc/php/7.4/conf.d/*.ini, і схожих, та залежно від + APT буде автоматично додає відповідні рядки для різних пов'язаних &php.ini; + файлів, як от /etc/php/7.4/php.ini, + /etc/php/7.4/conf.d/*.ini і схожих, та залежно від розширень, буде додавати записи, наприклад - extension=foo.so. Перезапуск вебсервера також є - необхідним, щоб зміни набули чинності. + extension=foo.so. Необхідно перезапустити вебсервер, щоб + зміни набули чинності. @@ -104,7 +96,7 @@ Якщо скрипти PHP не обробляються вебсервером, то ймовірно, що PHP ще не - додано до конфігураційного файла вебсервера, який на Debian може + додано до конфігураційного файлу вебсервера, який на Debian може знаходитись тут: /etc/apache2/apache2.conf. Докладніша інформація є у керівництві Debian. @@ -116,13 +108,6 @@ після встановлення цих розширень. - - - Є дві базові команди для встановлення пакетів на Debian (та інші варіанти - Linux): apt і aptitude. Але пояснення - тонкощів, в чому вони відрізняються, виходить за межі цього посібника. - - diff --git a/install/unix/index.xml b/install/unix/index.xml index c95aecd..e6a71c2 100644 --- a/install/unix/index.xml +++ b/install/unix/index.xml @@ -1,183 +1,45 @@ - + - - Встановлення на Unix системи - - Цей розділ описує основне налаштування та встановлення PHP на Unix системи. - Варто прочитати всі розділи, призначені для певних платформ чи вебсервера, - перш ніж почати процес. - - - Як зазначено в розділі Загальні інструкції - встановлення, ми головним чином працюватимемо над встановленням PHP, - що призначається для веб-програмування, хоча згадаємо також і про - налаштування PHP для використання в командному рядку. - - - Є кілька способів встановлення PHP на Unix платформі - або в процесі збірки - та конфігурування, або за допомогою готових дистрибутивів. Ця документація в - основному сфокусована на процесі збірки та конфігурування PHP. Багато - Unix-подібних систем мають певні програми встановлення пакетів. Вони можуть - допомогти з налаштуванням стандартної конфігурації, але якщо потрібен інший - набір функцій (такий як безпековий сервер, або різні драйвера до баз даних), - то може знадобитись компіляція PHP та/або веб-сервера. Якщо ви не знайомі з - побудовою та компіляцією вашого програмного забезпечення, варто перевірити - чи немає вже готових пакетів, що мають версію PHP з потрібною - функціональністю. - - - Необхідні знання та програмне забезпечення для компіляції: - - - - Базові знання Unix (вміння оперувати "make" та компілятором C) - - - - - Компілятор ANSI C - - - - - Веб-сервер - - - - - Будь-які специфічні компоненти модулів (такі як бібліотеки - GD, PDF, і т.д.) - - - - + + Встановлення в Unix-системах + + Більшість операційних систем та дистрибутивів на основі Unix (та Linux) + надають для встановлення версію PHP та його розширень у вигляді пакунків через + свої менеджери пакунків. Нижче є посилання на розділи з основною інформацією + про встановлення PHP в цих системах. + + + Для деяких дистрибутивів існують також сторонні сховища пакунків, які зазвичай + містять більшу кількість доступних версій та розширень. + + + PHP також можна встановити, як компонент деяких сторонніх серверів програм. + . + + + І нарешті, PHP завжди можна зібрати та встановити з початкових файлів. Такий + підхід забезпечує найбільшу гнучкість у виборі функціоналу, розширень та + серверних API. Є розділи з інформацією про компіляцію та налаштування PHP, + зокрема для використання з різними серверними API. + - - Для збирання безпосередньо із початкового коду з Git чи після ручних - модифікацій також можуть знадобитись: - - - - autoconf: - - - - - PHP 7.3 та новіші: 2.68+ - - - - - PHP 7.2: 2.64+ - - - - - PHP 7.1 та старіші: 2.59+ - - - - - - - automake: 1.4+ - - - - - libtool: 1.4.x+ (окрім 1.4.2) - - - - - re2c: - - - - - PHP 8.3 та новіші: 1.0.3+ - - - - - PHP 8.2 та старіші: 0.13.4+ - - - - - - - bison: - - - - - PHP 7.4 та пізніші: 3.0.0+ - - - - - PHP 7.3 та старіші: 2.4+ (включно з Bison 3.x) - - - - - - - - - Початковий процес встановлення та налаштування PHP контролюється через - опції командного рядка під час виконання скрипта - configure. Можна побачити список всіх доступних - параметрів разом з коротким поясненнями, запустивши ./configure - --help. Наш посібник документує різні параметри окремо. Можна - проглянути основні параметри - конфігурації в додатковому розділі, тоді як специфічні параметри для - різних розширень можна знайти на відповідних сторінках (див. зміст цієї - сторінки). - - - - Коли PHP сконфігуровано, все готово для побудови модулів та/або виконавчих - файлів. Команда make повинна подбати про це. Якщо це не - вдається і не зрозуміло, чому — див. розділ Проблеми встановлення. - - - - - З міркувань безпеки деякі системи Unix (як от OpenBSD та SELinux) можуть не - дозволяти перезаписувати сторінки пам'яті, що були виділені для інструкцій - процесору та навпаки. Цей захист пам'яті називається MPROTECT або W^X. - Однак ці обмеження неприпустимі для JIT PCRE, тож PHP має бути побудований - без підтримки PCRE, або двійковий - файл повинен бути внесений у білий список будь-якими способами, - передбаченими системою. - - - - - - Перехресне компілювання для ARM за допомогою набору інструментів Android - наразі не підтримується. - - - - - &install.unix.apache2; - &install.unix.nginx; - &install.unix.lighttpd-14; - &install.unix.litespeed; - &install.unix.commandline; - - &install.unix.openbsd; - &install.unix.solaris; - - &install.unix.debian; - - + + &install.unix.debian; + &install.unix.dnf; + &install.unix.openbsd; + + &install.unix.source; + + &install.unix.commandline; + &install.unix.apache2; + &install.unix.nginx; + &install.unix.lighttpd-14; + &install.unix.litespeed; + + &install.unix.solaris; + - + Nginx 1.4.x на Unix системах - В цьому розділі описано встановлення та конфігурування PHP з - PHP-FPM для HTTP-сервера Nginx 1.4.x. + В цьому розділі описано встановлення та налаштування PHP з PHP-FPM для + HTTP-сервера Nginx 1.4.x. - Якщо ви збирали Nginx з сирців, то всі бінарні та конфігураційні файли - зберігаються в /usr/local/nginx. В іншому випадку, можете - описати ваш процес встановлення на Nginx Wiki. + Передбачається, що Nginx зібрано з початкових файлів, а всі двійкові та + конфігураційні файли зберігаються в /usr/local/nginx. В + іншому випадку, можна додати опис такого процесу встановлення до Nginx Wiki. - Тут буде описуватись лише основне конфігурування сервера Nginx, щоб він міг - обробляти PHP застосунки на 80-му порту. В іншому випадку рекомендуємо - прочитати документацію Nginx для PHP-FPM. + Тут описано основне налаштування сервера Nginx для обробки PHP-скриптів на + 80-му порту. Для інших цілей радимо прочитати документацію Nginx для PHP-FPM. - Нижче на цій сторінці будуть зустрічатись маски 'x' на місці номера версії. - Це зроблено з узагальнюючою метою, оскільки викладені тут рекомендації підійдуть - для ряду версій. Дані маски потрібно замінити на відповідний номер вашої версії - Nginx. + Оскільки викладені тут рекомендації дійсні для багатьох версій, нижче буде + траплятись знак 'x' на місці номера версії. За потреби його можна замінити на + потрібне число. - Рекомендуємо відвідати Nginx Wiki та прочитати - сторінку встановлення, + Рекомендовано відвідати Nginx Wiki та прочитати керівництво зі встановлення, щоб правильно встановити Nginx. - Скачайте та розпакуйте сирці PHP: + Завантажте та розпакуйте початкові файли PHP: - + - + @@ -59,7 +57,7 @@ tar zxf php-x.x.x з підтримкою PHP-FPM та MySQL. - + - + - Тепер скопіюємо конфігураційні файли в їхнє коректне місцерозташування + Тепер скопіюємо конфігураційні файли в їхнє коректне розташування: - + - + Важливо, щоб ми убезпечили Nginx від проходження запитів до - PHP-FPM, коли файла не існує. Таким чином ми запобігаємо від довільної + PHP-FPM, коли файлу не існує. Таким чином ми запобігаємо від довільної ін'єкції скрипта. Це можна зробити встановивши директиву cgi.fix_pathinfo - в 0 всередині файла php.ini. + в 0 всередині файлу php.ini. Відкриваємо файл php.ini: - + - + Знаходимо директиву cgi.fix_pathinfo= та змінюємо її так: - + - + @@ -129,19 +127,19 @@ cgi.fix_pathinfo=0 під користувачем www-data та в групі www-data перед тим, як будемо запускати сервіс: - + - + Знайдіть та змініть наступне: - + - + Тепер можна запускати сервіс php-fpm: - + - + На цьому налаштування php-fpm припиняється, але якщо ви зацікавлені в більш @@ -176,19 +174,19 @@ group = www-data Тепер Nginx потрібно налаштувати для обробки PHP застосунків: - + - + Змінюємо блок "location", щоб додати до індексних файлів розширення .php: - + - + На наступному кроці ми говоримо, щоб всі файли .php передавались до PHP-FPM, нижче від закоментованого блоку location, додайте таке: - + - + Перезапускаємо Nginx. - + - + @@ -237,14 +235,14 @@ sudo /usr/local/nginx/sbin/nginx Створюємо тестовий файл - + " >> /usr/local/nginx/html/index.php ]]> - + Перейдіть за адресою http://localhost. Тепер phpinfo() вже повинно виводитись. @@ -254,7 +252,7 @@ echo "" >> /usr/local/nginx/html/index.php Дотримуючись кроків, описаних вище, ви матимете робочий веб-сервер Nginx, - який підтримує PHP як модуль SAPI. Звичайно є набагато + який підтримує PHP як модуль FPM SAPI. Звичайно є набагато більше параметрів конфігурації доступних для Nginx та PHP. Більше інформації можна отримати ввівши в консолі ./configure --help в їх кореневих каталогах. diff --git a/install/windows/legacy/extensions.xml b/install/windows/legacy/extensions.xml deleted file mode 100644 index bbb988a..0000000 --- a/install/windows/legacy/extensions.xml +++ /dev/null @@ -1,416 +0,0 @@ - - - - - Встановлення розширень на Windows - - Після встановлення PHP та веб-сервера на Windows, ймовірно ви захочете - підключити деякі розширення, що додають функціональність. Ви можете вибрати - які розширення потрібно завантажувати під час старту PHP, для цього змініть - файл &php.ini;. Також можна динамічно підключати модулі всередині скриптів, - використовуючи функцію dl. - - - Бібліотеки DLL для розширень PHP мають префікс php_. - - - Багато розширень вбудовано у Windows-версіях PHP. - Це означає, що додаткові DLL-файли та директиви - розширень - не використовуються для завантаження цих розширень. - Нижче в таблиці наведено список необхідних - PHP Розширень - для Windows, що потребують додаткові PHP DLL-файли. Це список вбудованих - розширень (оновлено в PHP 5.0.4): - BCMath, - Caledar, - COM, - Ctype, - DOM, - FTP, - LibXML, - Iconv, - ODBC, - PCRE, - Session, - SimpleXML, - SPL, - SQLite, - WDDX, - XML&listendand; - Zlib. - - - Початково, PHP шукає розширення в - C:\php5. Щоб змінити це налаштування - у відповідності до вашого встановлення PHP, змініть файл &php.ini;: - - - - Вам потрібно змінити налаштування - extension_dir, щоб вказати - директорію, де знаходяться розширення, або де ви розмістили ваші - файли php_*.dll. Наприклад так: - - - - - - - - - - Підключіть потрібні розширення у файлі &php.ini; розкоментувавши рядок - extension=php_*.dll. Це робиться шляхом видалення - символа крапки з комою ; на початку директиви. - - Підключення розширення <link linkend="book.bzip2">Bzip2</link> для PHP на Windows - - - - - - - - - Деякі розширення потребують додаткових DLL для своєї роботи. Кілька з них - можна знайти в пакеті дистрибутива, в кориневій директорії, але деякі, - наприклад, для Oracle (php_oci8.dll) вимагають DLL, які - не входять в дистрибутив. Не забудьте включити C:\php до системної змінної - PATH (цей процес пояснено в окремому розділі ЧАПів). - - - - - Перейшовши по лінкам в наведеній таблиці, можна прочитати документацію - до кожного з розширень. Також прочитайте розділ з назвою - Встановлення розширень PECL, щоб - дізнатись більше про PECL. Все більше - PHP-розширень можна знайти в PECL, але вони - доступні в окремому завантаженні. - - - - - - Якщо ви запустили PHP як модуль, не забудьте перезавантажити веб-сервер - щоб внесені зміни в файл &php.ini; набули чинності. - - - - - - В наступній таблиці описано деякі розширення, що вимагають додаткових DLL. -
- PHP-розширення - - - - Розширення - Опис - Замітки - - - - - php_bz2.dll - Функції стиснення bzip2 - Відсутні - - - php_calendar.dll - Функції перетворень Календаря - Відсутні - - - php_crack.dll - Функції Crack - Відсутні - - - php_ctype.dll - Функції родини ctype - Відсутні - - - php_curl.dll - Функції бібліотеки CURL - Потребують: libeay32.dll, - ssleay32.dll (є в комплекті) - - - php_dba.dll - Функції DBA: Абстрактний прошарок - DataBase (dbm-style) - - Відсутні - - - php_dbase.dll - Функції dBase - Відсутні - - - php_dbx.dll - Функції dbx - - - - php_exif.dll - Функції EXIF - Потребують бібліотеки - php_mbstring.dll. А бібліотеку - php_exif.dll потрібно завантажувати - після - php_mbstring.dll в файлі &php.ini;. - - - - php_fbsql.dll - Функції FrontBase - Відсутні - - - php_fdf.dll - Функції FDF: Функції Формата Даних. - Потребують: fdftk.dll (є в комплекті) - - - php_filepro.dll - Функції filePro - Read-only access - - - php_ftp.dll - Функції FTP - Відсутні - - - php_gd2.dll - Функції бібліотеки GD для зображень - GD2 - - - php_gettext.dll - Функції Gettext - - PHP <= 4.2.0 потребує gnu_gettext.dll (є в комплекті), - PHP >= 4.2.3 потребує libintl-1.dll, - iconv.dll (є в комплекті). - - - - php_hyperwave.dll - Функції HyperWave - Відсутні - - - php_iconv.dll - Функції перетворень символів ICONV - - Потребують: iconv-1.3.dll (є в комплекті), iconv.dll - - - - php_ifx.dll - Функції Informix - Потребують: бібліотек Informixibraries - - - php_iisfunc.dll - Функції управління IIS - Відсутні - - - php_imap.dll - IMAP Функції POP3 та NNTP - Відсутні - - - php_ingres.dll - Функції Ingres - Потребують: бібліотек Ingres - - - php_interbase.dll - Функції InterBase - Потребують: gds32.dll (є в комплекті) - - - php_ldap.dll - Функції LDAP - - Потребують: libeay32.dll, - ssleay32.dll (є в комплекті) - - - - php_mbstring.dll - Функції Multi-Byte String - Відсутні - - - php_mcrypt.dll - Функції Mcrypt Encryption - Потребують: libmcrypt.dll - - - php_mhash.dll - Функції Mhash - Потребують: libmhash.dll (є в комплекті) - - - php_mime_magic.dll - Функції Mimetype - Потребують: magic.mime (є в комплекті) - - - php_ming.dll - Ming Функції для Flash - Відсутні - - - php_msql.dll - Функції mSQL - Потребують: msql.dll (є в комплекті) - - - php_mssql.dll - Функції MSSQL - Потребують: ntwdblib.dll (є в комплекті) - - - php_mysql.dll - Функції MySQL - Потребують: libmysql.dll (є в комплекті) - - - php_mysqli.dll - Функції MySQLi - Потребують: libmysql.dll - (libmysqli.dll in PHP <= 5.0.2) (є в комплекті) - - - php_oci8.dll - Функції Oracle 8 - Потребують: Oracle 8.1+ client libraries - - - php_openssl.dll - Функції OpenSSL - Потребують: libeay32.dll (є в комплекті) - - - php_pdf.dll - Функції PDF - Відсутні - - - php_pgsql.dll - Функції PostgreSQL - Відсутні - - - php_shmop.dll - Функції Shared Memory - Відсутні - - - php_snmp.dll - Функції SNMP - Тільки на Windows NT! - - - php_soap.dll - Функції SOAP - Відсутні - - - php_sockets.dll - Функції Socket - Відсутні - - - php_sybase_ct.dll - Функції Sybase - Потребують: Sybase client libraries - - - php_tidy.dll - Функції Tidy - Відсутні - - - php_tokenizer.dll - Функції Tokenizer - Відсутні - - - php_w32api.dll - Потребують: функцій W32api - Відсутні - - - php_xmlrpc.dll - Функції XML-RPC - Потребують: iconv.dll (є в комплекті) - - - php_xslt.dll - Потребують: функцій XSLT - - Потребують: sablot.dll, expat.dll, - iconv.dll (є в комплекті). - - - - php_yaz.dll - Функції YAZ - Потребують: yaz.dll (є в комплекті) - - - php_zip.dll - Функції Zip File - Read only access - - - php_zlib.dll - ZLib Функції стиснення - Відсутні - - - -
-
- - - diff --git a/install/windows/tools.xml b/install/windows/tools.xml index e0ac48c..7ea545f 100644 --- a/install/windows/tools.xml +++ b/install/windows/tools.xml @@ -1,12 +1,12 @@ - + Сторонні інструменти для встановлення PHP &warn.install.third-party-support; - XAMPP, - WampServer, а також - Bitnami, який налаштує + XAMPP, + XAMPP, а також + Bitnami, який налаштує PHP-програми для використання разом з Apache на Windows. diff --git a/language-defs.ent b/language-defs.ent index 4f04928..3b2090f 100644 --- a/language-defs.ent +++ b/language-defs.ent @@ -1,5 +1,5 @@ - + @@ -86,6 +86,7 @@ supplemental files to mark section titles --> Журнал змін'> Попередньо визначені класи'> Короткий огляд класу'> +Кородкий огляд переліку'> Попередньо визначені константи'> Конструктор'> Опис'> diff --git a/language-snippets.ent b/language-snippets.ent index 86b62c9..77bd14a 100644 --- a/language-snippets.ent +++ b/language-snippets.ent @@ -1,5 +1,5 @@ - + .'> ЗАСТАРІЛА, починаючи з PHP 8.3.0. Вкрай не рекомендується на неї покладатися.'> +Цей функціонал +ЗАСТАРІВ, починаючи з PHP 8.4.0. Вкрай не рекомендується на +нього покладатися.'> + +Ця функція +ЗАСТАРІЛА, починаючи з PHP 8.4.0. Вкрай не рекомендується +на неї покладатися.'> + обов'язково @@ -747,6 +757,15 @@ linkend="ini.error-reporting">error_reporting має бути зниже 'В PHP 8.3 поданий вище приклад виведе щось схоже на:'> +В PHP 8.4 поданий вище приклад +виведе:'> + +В PHP 8.4 поданий вище приклад +виведе щось схоже на:'> + + На 32-бітних машинах поданий вище приклад виведе:'> @@ -1271,6 +1290,18 @@ GD2 є пропрієтарними форматами зображень libgd. '> + + + Якщо значенням параметра escape не є порожній рядок + (""), то результатом може бути CSV, що не відповідає вимогам + RFC 4180 або не зможе оброблятись + функціями PHP CSV. Типовим значенням параметра escape є + "\\", але рекомендовано явно вказати порожній рядок. Типове + значення зміниться в наступній версії PHP, та не раніше, ніж в PHP 9.0. +'> + share_handle '> + +Dba\Connection, якого повертає +функція dba_open або +dba_popen.'> + + + 8.4.0 + + Тепер параметр dba має бути примірником + Dba\Connection. раніше очікувався дійсний + dba &resource;. + +'> + Термі ' Повертає масив, проіндексовиний за keys. Кожен елемент, у якого вилучено ключ або ключем є одна з констант - Memcached::RES_* (коли вилучення невдале), дорівнює - &true;. + Memcached::RES_* (коли + вилучення невдале), дорівнює &true;. Memcached::getResultCode повертає код результату для @@ -1804,6 +1852,53 @@ linkend="memcached.expiration" xmlns="http://docbook.org/ns/docbook">Термі + + callback + + + Назва функції або методу для виклику, що має повертати Gearman-значення. + + + Якщо оператор return відсутній, то типовим значенням є + GEARMAN_SUCCESS. + + + intcallback + GearmanTasktask + mixedcontext + + + + task + + + Завдання, для якого викликається зворотній виклик. + + + + + context + + + Те, що передано в GearmanClient::addTask (або + рівнозначний метод) як context. + + + + + +'> + + + + Зворотній виклик спрацьовує лише для завдань, які були додані (напр. методом + GearmanClient::addTask) після виклику цього методу. + +'> + Список підтримуваних часових поясів'> @@ -2407,10 +2502,6 @@ xmlns="http://docbook.org/ns/docbook" linkend="configuration.changes.modes"/>.'> скомпільовано як частина PHP або динамічно підключене під час виконання. '> - -Це розширення потребує PHP 5.'> - Константи, описані нижче — @@ -2578,17 +2669,6 @@ xmlns="http://docbook.org/ns/docbook">PECL-розширення дос безпечний режим для SQL'> - - -debug_levelЦіле число, утворене -додаванням XXX_TRACE-констант.Не рекомендовано -використовувати MEMORY_TRACE. Це дуже повільно і не -виглядає точним. ASSIGNMENT_TRACE ще не -впроваджено.Щоб увімкнути докладне відстеження (TIMING, FUNCTIONS, -ARGS SUMMARY (як "strace -c")), вказується число 99. -'> - @@ -2767,29 +2847,6 @@ mysqli (MYSQLI_REPORT_ERROR) і запитана опера 'Ця функція встановлює NULL-полям значення PHP &null;.'> - - - -link_identifierЗ'єднання -mSQL. Якщо не задано, буде обрано останнє з'єднання, встановлене функцією -msql_connect. Якщо з'єднатися не вдалось, функція -спробує встановити нове, ніби викликавши функцію -msql_connect.'> - - -resultРезультат типу -resource для опрацювання, якого повертає функція -msql_query.'> - - -field_offsetЧисловий зсув поля. -Значення field_offset починається з -1.'> - - була вилучена з PHP 7.0.0. Краще використ Вивільнення ресурсів'> - -Ця функція доступна тільки -з використанням інтерфейсу бібліотеки CT до Sybase, але не бібліотеки DB. -'> - -Ця функція доступна тільки -з використанням інтерфейсу бібліотеки DB до Sybase, але не бібліотеки CT. -'> - - -link_identifierЗ'єднання -Sybase. Якщо не задано, буде обрано останнє з'єднання, встановлене функцією -sybase_connect. Якщо з'єднатися не вдалось, функція -спробує встановити нове, ніби викликавши функцію -sybase_connect без параметрів. Якщо з'єднання не -вдалося знайти або встановити, буде виведено повідомлення рівня -E_WARNING.'> - - -Необов'язковий параметр -mode, яким вказується одиниця довжини. Якщо задано -0 або опущено, буде обрано стандартну для поточної сторінки. -У інших випадках координати вимірюються в пунктах postscript, без урахування -заданої одиниці вимірювання.'> - - -modeНеобов'язковий параметр -mode, яким вказується одиниця довжини. Якщо задано -0 або опущено, буде обрано стандартну для поточної сторінки. -У інших випадках координати вимірюються в пунктах postscript, без урахування -заданої одиниці вимірювання.'> - - -pdf_documentДескриптор документа, -якого повертає функція -cpdf_open.'> - Розширені атрибути мають два різні @@ -2936,10 +2950,6 @@ IPv6-адресу (напр. fe80::1), необхідно в квадратні дужки, наприклад, tcp://[fe80::1]:80.'> -IPv6 підтримується, -починаючи з PHP 5.0.0.'> - Tidy.'> @@ -2966,6 +2976,17 @@ xlink:href="&url.tidy.conf;">&url.tidy.conf;.Парамет Докладніше — у розділі Apache 2 з потоковим MPM'> + + + Збірки від сторонніх розробників вважаються неофіційними і безпосередньо + проектом PHP не підтримуються. Про знайдені вади, якщо вони не можуть бути + відтворені на офіційних збірках, + необхідно повідомляти постачальників цих неофіційних збірок. + +'> + Варто зауважити, що у файлі налаштувань Apache на Windows значення шляху (напр. @@ -3002,26 +3023,12 @@ xlink:href="&url.tidy.conf;">&url.tidy.conf;.Парамет - -Цю функцію не можна -використати для впливу на метод (чи ланцюжок методів), що -виконується.'> - + Цю функцію не можна використати для впливу на метод (чи ланцюжок методів), що виконується.'> -Підтримка Sandbox -(необхідна для функцій runkit_lint, -runkit_lint_file та класу -Runkit_Sandbox) доступна, починаючи з PHP 5.1.0 або -спеціальної зміненої версії PHP 5.0, та потребує увімкненої безпеки потоку. -Більше інформації міститься у файлі README пакунку -runkit.'> - Зазвичай тільки користувацькі функції можна вилучати, переназивати чи змінювати. Проте, якщо @@ -3249,16 +3256,6 @@ linkend="imagick.constants.channel">константи каналу по '> - - - Цієї функції немає в PHP 5. Натомість, для доступу до властивостей або виклику - методів краще використовувати звичайний і більш природний - об'єктно-орієнтований синтаксис. - - -'> - Для роботи з об'єктами @@ -3266,20 +3263,6 @@ linkend="imagick.constants.channel">константи каналу по phar.readonly мала значення 0. Інакше буде викинуто PharException.'> -Цей метод вилучено з -розширення phar, починаючи з версії 2.0.0. Тепер подібний функціонал реалізують -методи Phar::compress, -Phar::decompress, Phar::compressFilesPhar::decompressFiles.'> - -Цей метод вилучено з -розширення phar, починаючи з версії 2.0.0. Тепер подібний функціонал реалізують -методи PharFileInfo::isCompressed, -PharFileInfo::decompress і -PharFileInfo::compress.'> - @@ -3398,10 +3381,14 @@ xmlns="http://docbook.org/ns/docbook">Reflection, що експор Виключення'> -SPL містить набір стандартних -виключень.Також варто -переглянути .'> + + SPL містить набір стандартних виключень. + + Також варто переглянути . + +'> Обробка файлів'> @@ -3671,362 +3658,6 @@ linkend="constant.trader-real-max">TRADER_REAL_MAX.'> - - -read_preferenceРежим налаштувань -читання: MongoClient::RP_PRIMARY, -MongoClient::RP_PRIMARY_PREFERRED, -MongoClient::RP_SECONDARY, -MongoClient::RP_SECONDARY_PREFERRED або -MongoClient::RP_NEAREST. -tagsМасив з -нуля або більше наборів тегів у вигляді масивів критеріїв, що використовуються -для зіставлення тегів з членами набору -реплік.'> - -Повертає &true; у разі успіху або -&false; у разі невдачі.'> - -Видає -E_WARNING, якщо будь-який параметр хибний або якщо один чи -більше наборів тегів передано у режимі -MongoClient::RP_PRIMARY.'> - -Ця функція повертає масив, що -описує налаштування читання. Він містить значення type для -режиму налаштувань читання рядка (є одною з констант -MongoClient) та вкладений масив -tagsets критеріїв набору тегів. Якщо набори тегів не -задані, tagsets буде відсутнім.'> - - -wВимоги для запису. Може бути -цілим числом, що вказує кількість серверів, необхідних для підтвердження запису, -або назвою режиму у вигляді рядка (напр. -"majority"). -wtimeoutЧас -очікування (у мілісекундах) на виконання сервером вимог щодо -запису.'> - -Повертає &true; у разі успіху або -&false; у разі невдачі.'> - -Видає -E_WARNING, якщо параметр w не є рядком -або цілим числом.'> - -Ця функція повертає масив, що -описує вимоги щодо запису. Масив містить цілочисельні або рядкові значення -рівня підтвердження w, а також wtimeout — -час очікування (у мілісекундах) на виконання сервером вимог щодо запису.'> - - -"maxTimeMS"Визначає сукупний час очікування (в -мілісекундах) обробки операції на сервері (без урахування простою). Якщо -операція не виконана за відведений час, буде викинуто -MongoExecutionTimeoutException.'> - - -"background"Створює індекс у фоновому режимі, -тож не призупиняє роботу бази даних. Для цього необхідно -вказати переметру значення &true;. Початково: &false;.До MongoDB 2.6.0, створення індексу -є операцією вищого пріоритету, незалежно від цього налаштування. Докладніше: -Створення індексів з наборами -копій.'> - - -"dropDups"Застосовується для примусового -створення унікального індексу ключів в колекції, що повторюються. Початково: -&false;. Якщо задано &true;, то MongoDB проіндексує перший знайдений ключ, а -інші документи, що містять такий самий ключ — видалить. - -"dropDups" може видалити дані з бази даних. Тож -використовувати цей параметр необхідно з особливою обережністю. -Цей параметр не підтримується -в MongoDB 2.8+,а створити індекси неможливо, якщо колекція містить однакові -значення.'> - - -"expireAfterSeconds"Термін дії документа в -секундах, після закінчення якого документ буде автоматично видалено з колекції. -Цей параметр сумісний тільки з індексами з одним полем, що містить -MongoDate-значення. -Цей функціонал доступний у -MongoDB 2.2+. Докладніше: Як вказати термін дії даних в -колекції.'> - - -"name"Необов'язковий параметр, який -однозначно ідентифікує індекс. -Стандартно драйвер створює -назву індексу на основі індексованих полів і порядку/типу. Наприклад, складений -індекс array("x" => 1, "y" => -1) матиме назву -"x_1_y_-1", а геопросторовий індекс -array("loc" => "2dsphere") називатиметься -"loc_2dsphere". Створена назва для індексу з багатьма полями -може перевищити допустиму довжину назви -індексу MongoDB. В такому випадку і використовується параметр -"name", щоб вказати коротшу назву.'> - - -"sparse"Cтворює вибірковий індекс для -документів, які містять вказане поле. Початково: &false;.'> - - -"unique"Створює унікальний індекс. -Початково: &false;. Цей параметр стосується тільки зростаючих/спадаючих -індексів.Якщо MongoDB -індексує поле, а документ не має значення для цього поля, то індексується -значення &null;. Якщо кілька документів не містять певного поля, то унікальний -індекс застосовується тільки до першого з них. Щоб уникнути індексування -документів без полів, застосовується параметр -"sparse".'> - -Цей метод застосовує -команду listCollections під час роботи -з MongoDB 2.8+. Для попередніх версій метод запитуватиме спеціальну колекцію -system.namespaces.'> - - -"filter"Необов'язковий критерій -запиту. Використовується для фільтрації колекцій, включених до -результату.Відповідні поля, які можна запитувати, включають -"name" (назва колекції у вигляді рядка, без префіксу з назвою -БД) та "options" (об'єкт, що містить параметри створення -колекції). -MongoDB 2.6 та старіші версії потребують, щоб вказаний -критерій "name" був рядком, оскільки під час запиту до -колекції system.namespaces до нього дододається префікс БД. -Новіші версії MongoDB не мають цього обмеження, оскільки драйвер використовує -команду "listCollections".'> - - -"includeSystemCollections"Визначає, чи -включати системні колекції в результат. Початково: &false;.'> - - -"w"Стандартне значення для -MongoClient: 1. Докладніше: -Вимоги для запису.'> - - -"wtimeout"Застарілий псевдонім -"wTimeoutMS".'> - - -"wTimeoutMS"Визначає час очікування (у -мілісекундах) на виконання вимог щодо -запису. Працює тільки коли "w" більший за -1, оскільки час очікування стосується реплікації. Якщо вимогу -не задоволено у межах часу очікування, то викидається -MongoCursorException. Значення 0 -знімає обмеження в часі. Початкове значення для -MongoClient: 10000 (десять -секунд).'> - - -"fsync"Якщо &true;, вмикає підтверджені -"INSERT", значення параметра "w" змінює на -0, а операції запису сихронізує з файлами БД на диску. -Початково: &false;.Не рекомендовано використовувати цей -параметр, якщо увімкнено журналювання, оскільки він працюватиме так само як -"j". Використання "fsync" разом з -"j" призведе до помилки.'> - - -"socketTimeoutMS"Визначає час очікування -(у мілісекундах) на з'єднання через сокет. Якщо сервер не відповів за -відведений час, буде викинуто MongoCursorTimeoutException -і не буде змоги визначити, чи сервер обробив запис. Значення --1 знімає обмеження в часі. Початкове значення для -MongoClient: 30000 (тридцять -секунд).'> - - -"j"Примусово блокує операції запису, щоб -вони були синхронізовані з журналом на диску. Якщо &true;, застосовуються -підтвердження запису, а значення параметра "w" -змінюється на 0. Початково: &false;. -Якщо використати "j", кол журналювання вимкнено, MongoDB 2.6+ -видасть помилку і запис не вдасться, тоді як старіші версії просто -ігнорувантимуть цей параметр.'> - - -"safe"Застарілий параметр. Натомість -застосовується параметр вимог щодо -запису "w".'> - - -"timeout"Застарілий псевдонім -"socketTimeoutMS".'> - -Викидає -MongoCursorException, якщо задано "w" -і запис не вдався.Викидає -MongoCursorTimeoutException, якщо параметр -"w" має значення, більше за 1, а операція займає більше -ніж MongoCursor::$timeout мілісекунд. Це не припинить -операцію на сервері. Час MongoCollection::$wtimeout задається -в мілісекундах.'> - -Видає попередження -E_DEPRECATED.'> - -Ці поля також можуть -перезаписувати поля, створені автоматично драйвером, як описано в основній -документації MongoDB для -колекцій файлів. Практичним -випадком використання такої поведінки є задати настроюваний -chunkSize або _id для файлу.'> - -Повертає _id -збереженого файлу документу. Це згенерований MongoId, або -явно вказаний _id в параметрі -metadata.'> - -Масив опцій запису. -ключ -значенняw (int|string) -значення вимог щодо -записуwtimeout (int)Допустимий час очікування -реплікаціїorderedВказує, чи -потрібно MongoDB впорядковувати чергу. Впорядковані записи виконуються -послідовно (тобто по одному) і виконання припиняється після першої помилки. -Невпорядковані записи можуть виконуватися паралельно, а виконання не зупиниться -після першої помилки. Початково: &true;j -(bool)Очікувати на запис в жунал. Рекомендується використовувати -WriteConcern натомістьfsync -(bool)Очікувати на fsync. Рекомендується використовувати -WriteConcern натомість'> - -Черга -MongoCollection. Її вимоги щодо запису будуть використані, якщо -їх не надано через $write_options або -MongoWriteBatch::execute.'> - - -serverМасив, що містить основну -інформацію про обраний сервер.ключзначення -hashгеш сервера, наприклад: -localhost:27017;-;X;56052 -typeТип вузла (primary/secondary/mongos/arbiter): -2max_bson_size -Найбільший допустимий розмір BSON для передавання по вузлу: -16777216max_message_size -Найбільший допустимий розмір повідомлення для передавання по вузлу: -48000000request_id -Ідентифікатор запиту для цього повідомлення: -42 -'> - - -writeOptions -ключ -значенняordered (bool) -Вказує, чи має операція (у випадку операції з чергою) виконуватися -послідовно (ordered=true)writeConcern -Масив параметрів writeConcern (див. -нижче)значення -масиву writeConcern -protocolOptions -ключ -значенняmessage_length -Загальний розмір (в байтах) закодованого повідомлення, що -надсилаєтьсяrequest_idІдентифікатор -запиту для цього повідомлення: 42 -namespaceПростір імен MongoDB, що використовується -для повідомлення протоколу -dbname.collectionname -'> - -Розширення, яке визначає цей клас, -застаріло. Натомість використовується розширення MongoDB. Цей клас можна замінити на:'> - -Розширення, яке визначає цей клас, -застаріло. Натомість використовується розширення MongoDB. Відповідників для цього класу -немає.'> - -Розширення, яке визначає цей метод, -застаріло. Натомість використовується розширення MongoDB. Цей метод можна замінити на:'> - -Розширення, яке визначає цей метод, -застаріло. Натомість використовується розширення MongoDB. Відповідників для цього методу -немає.'> - -Розширення, яке визначає цей метод, -застаріло. Натомість використовується розширення MongoDB. Відповідників для цього методу немає в -новому роширенні, проте є в -PHP-бібліотеці:'> - -Це розширення застаріло. Натомість -використовується розширення MongoDB.'> - @@ -4645,7 +4276,7 @@ local: { trimFactor int - Обов'язковий. Додатнє ціле 32-бітне число. + Необов'язковий. Додатнє ціле 32-бітне число. @@ -4703,7 +4334,7 @@ local: { порівняння і перетворення типів в PHP. Для вибірки даних спеціальних BSON-типів, критерії запиту повинні - використовувати відповідний клас BSON + використовувати відповідний клас BSON (напр. MongoDB\BSON\ObjectId для вибірки ObjectId). @@ -4906,6 +4537,204 @@ xmlns:xlink="http://www.w3.org/1999/xlink">libbson.'> '> + + + + " ": символ ASCII + SP 0x20, звичайний пропуск. + + + + + "\t": символ ASCII + HT 0x09, табуляція. + + + + + "\n": символ ASCII + LF 0x0A, новий рядок. + + + + + "\r": символ ASCII + CR 0x0D, повернення каретки. + + + + + "\0": символ ASCII + NUL 0x00, NUL-байт. + + + + + "\v": символ ASCII + VT 0x0B, вертикальна табуляція. + + + +'> + + + + + " " (Unicode U+0020), звичайний пропуск. + + + + + "\t" (Unicode U+0009), табуляція. + + + + + "\n" (Unicode U+000A), новий рядок. + + + + + "\r" (Unicode U+000D), повернення каретки. + + + + + "\0" (Unicode U+0000), NUL-байт. + + + + + "\v" (Unicode U+000B), вертикальна табуляція. + + + + + "\f" (Unicode U+000C), нова сторінка (form feed). + + + + + "\u00A0" (Unicode U+00A0), нерозривний пропуск. + + + + + "\u1680" (Unicode U+1680), огамський пропуск. + + + + + "\u2000" (Unicode U+2000), EN QUAD (пропуск). + + + + + "\u2001" (Unicode U+2001), EM QUAD (пропуск). + + + + + "\u2002" (Unicode U+2002), пропуск розміром 1 en. + + + + + "\u2003" (Unicode U+2003), пропуск розміром 1 em. + + + + + "\u2004" (Unicode U+2004), пропуск розміром 1/3 em. + + + + + "\u2005" (Unicode U+2005), пропуск розміром 1/4 em. + + + + + "\u2006" (Unicode U+2006), пропуск розміром 1/6 em. + + + + + "\u2007" (Unicode U+2007), фігурний пропуск. + + + + + "\u2008" (Unicode U+2008), пунктуаційний пропуск. + + + + + "\u2009" (Unicode U+2009), вузький пропуск. + + + + + "\u200A" (Unicode U+200A), дуже вузький пропуск . + + + + + "\u2028" (Unicode U+2028), роздільник-лінія. + + + + + "\u2029" (Unicode U+2029), роздільник-параграф. + + + + + "\u202F" (Unicode U+202F), вузький безперезвний пропуск. + + + + + "\u205F" (Unicode U+205F), середній математичний пропуск. + + + + + "\u3000" (Unicode U+3000), ідеографічний пропуск. + + + + + "\u0085" (Unicode U+0085), наступна лінія (NEL). + + + + + "\u180E" (Unicode U+180E), монгольський роздільник голосних. + + + +'> + + + Символи, що треба вилучити, можна вказати за допомогою необов'язкового + параметра characters. Необхідно просто записати туди + усі непотрібні символи. За допомогою .. можна задати + діапазон символів за зростанням. + +'> + + + Символи, що треба вилучити, можна вказати за допомогою необов'язкового + параметра characters Необхідно просто записати туди усі + непотрібні символи. + +'> + Необов'язковий параметр. Ним вказується кодування, що застосовуватиметься @@ -5631,29 +5460,67 @@ xmlns:xlink="http://www.w3.org/1999/xlink">libbson.'> - Якщо задано &null; або порожній рядок, обробник буде відновлено до його - початкового стану. + Якщо задано &null;, обробник буде скинуто до його початкового стану. + + + Якщо задано порожній рядок, обробник також буде скинуто, проте така дія + застаріла, починаючи з PHP 8.4.0. + + Якщо параметр handler має тип callable, то обробником стане функція/метод, що має таку назву виклику. - Параметру handler дозволяється мати тип - string, якщо це назва метода об'єкта, встановленого функцією + Параметр handler може мати тип string, якщо + це назва метода об'єкта, встановленого функцією xml_set_object. -'> + + + Це є застарілим, починаючи з PHP 8.4.0. + + + + + + Починаючи з PHP 8.4.0, назва виклику перевіряється на правильність під час + встановлення обробника, а не під час його виклику. Це означає, що функцію + xml_set_object потрібно викликати перед встановленням + назви метода, як зворотнього виклику. Однак, оскільки ця поведінка також є + застарілою, починаючи з PHP 8.4.0, рекомендується використовувати правильну + назву виклику (callable) методу. + + +'> parser - XML-парсер, якого викликатиме обробник. + XML-парсер, що викликає обробника. '> + + 8.4.0 + + Використання не-callable рядків (string) як + параметра handler тепер є застарілим. Необхідно + задавати правильну назву виклику методів або &null; для скидання обробника. + + + + 8.4.0 + + Правильність параметра handler, як назви виклику + (callable) тепер перевіряється на правильність під час + встановлення обробника, а не під час його виклику. + +'> + 8.0.0 diff --git a/language/oop5.xml b/language/oop5.xml index 37affe6..e1a4fe5 100644 --- a/language/oop5.xml +++ b/language/oop5.xml @@ -1,5 +1,5 @@ - + Класи та об'єкти @@ -21,9 +21,10 @@ &tip.userlandnaming; - + &language.oop5.basic; &language.oop5.properties; + &language.oop5.property-hooks; &language.oop5.constants; &language.oop5.autoload; &language.oop5.decon; @@ -45,6 +46,7 @@ &language.oop5.references; &language.oop5.serialization; &language.oop5.variance; + &language.oop5.lazy-objects; &language.oop5.changelog; diff --git a/language/oop5/decon.xml b/language/oop5/decon.xml index ba9c8e5..c8360fa 100644 --- a/language/oop5/decon.xml +++ b/language/oop5/decon.xml @@ -1,5 +1,5 @@ - + Конструктори та деструктори @@ -362,6 +362,23 @@ $obj = new MyDestructableClass(); функцією exit. Виклик exit в деструкторі запобігає виконанню решти процедур завершення скрипта. + + Якщо деструктор створює нові посилання на свій об'єкт, його не буде + викликано вдруге, коли кількість посилань знову досягне нуля чи під час + завершення скрипта. + + + Починаючи з PHP 8.4.0, якщо збирання циклів вмикається + під час виконання файбера, то + заплановані деструктори об'єктів виконуються в окремому файбері з назвою + gc_destructor_fiber. Якщо цей файбер призупинено, то + створюється новий, щоб довиконати деструктори. Збирач сміття більше не + посилатиметься на попередній файбер gc_destructor_fiber, + який буде знищений під час наступного збирання сміття. Об'єкт, чий + деструктор призупинено, не знищиться, допоки деструктор не буде виконано + або не буде знищено файбер. + Під час завершення скрипта деструктори викликаються після відправлення diff --git a/language/oop5/visibility.xml b/language/oop5/visibility.xml index d62cdf6..2b25215 100644 --- a/language/oop5/visibility.xml +++ b/language/oop5/visibility.xml @@ -1,28 +1,28 @@ - + Область видимості Області видимості властивостей, методів або (починаючи з PHP 7.1.0) констант - можуть визначатись через ключові слова public, - protected чи private. Доступ до членів - класу, оголошених як public (загальнодоступні), дозволено всюди. Члени класу, - оголошені як protected (захищені), доступні лише всередині самого класу, а - також через класи-нащадки та батьківські класи. Члени класу, оголошені як - private (закриті) можуть бути доступні лише через клас, де вони визначені. + можуть визначатись через ключові слова public + (загальнодоступно), protected (захищено) чи + private (закрито). Доступ до членів класу, оголошених як + загальнодоступні, дозволено всюди. Члени класу, оголошені як захищені, + доступні лише всередині самого класу, а також через класи-нащадки та + батьківські класи. Члени класу, оголошені як закриті можуть бути доступні + лише в класі, де вони визначені. Видимість властивості - Властивості класу можуть оголошуватись як public, private чи protected. - Властивість, оголошена без ключового слова видимості, вважається + Властивості класу можуть оголошуватись як загальнодоступні, захищені чи + закриті. Властивість, оголошена без ключового слова видимості, вважається загальнодоступною. - - - Оголошення властивості - + + Оголошення властивості + private; // Невизначено $obj2->printHello(); // Виводить Загальнодоступна2, Захищена2, Закрита ?> +]]> + + + + Асиметрична видимість властивості + + Починаючи з PHP 8.4, властивості можуть мати асиметричну видимість, з + різними областями видимості для читання (get) та запису + (set). Зокрема видимість set можна + вказати окремо, якщо та не є ширшою за типову. + + + Асиметрична видимість властивості + +author = $author; // Працює + $this->pubYear = $year; // Fatal Error + } +} + +$b = new Book('Програмування на PHP', 'Петро Петрук', 2024); + +echo $b->title; // Працює +echo $b->author; // Працює +echo $b->pubYear; // Fatal Error + +$b->title = 'Як не програмувати на PHP'; // Fatal Error +$b->author = 'Павло Петрук'; // Fatal Error +$b->pubYear = 2023; // Fatal Error +?> ]]> - + Є кілька застережень щодо асиметричної видимості: + + + + Тільки властивості з вказаним типом можуть мати окрему видимість + set. + + + + + Видимість set має бути однаковою з + get або вужчою. Тобто код public + protected(set) та protected protected(set) + працюватиме, але protected public(set) викличе помилку + синтаксису. + + + + + Якщо властивість є загальнодоступною (public), то + основну видимість можна не оголошувати. Тобто, код public + private(set) і private(set) працюватиме однаково. + + + + + Властивість з видимістю private(set) автоматично є + фінальною (final), та не може бути змінена в + класі-нащадку. + + + + + На отримання посилання впливає видимість set, а не + get. Це тому, що посилання може бути використано, щоб + змінити значення властивості. + + + + + Відповідно, запис до властивості-масиву включає в себе як + get-, так і set-операції, а отже до + уваги братиметься видимість set, як більш + обмежувальна. + + + + + Клас-нащадок може перевизначати властивість батьківського класу, якщо та не + фінальна (final). Таким чином він може розширити основну + видимість, або видимість set, за умови, що нова + видимість є такою самою або ширшою, ніж в батьківського класу. Слід зважати + на те, що якщо закрита (private) властивість + перезаписується, то це не впливає на батьківську властивість, а створює + нову властивість з іншою внутрішньою назвою. + + + Асиметричне наслідування властивості + + +]]> + + + @@ -85,10 +207,9 @@ $obj2->printHello(); // Виводить Загальнодоступна2, За Методи класу можуть бути визначені як public, private чи protected. Метод, оголошений без ключового слова видимості, вважається загальнодоступним. - - - Оголошення метода - + + Оголошення метода + printHello(); // Виводить Загальнодоступна2, За */ class MyClass { - // Оголошення загальнодоступного (публічного) конструктора + // Оголошення загальнодоступного конструктора public function __construct() { } - // Оголошення публічного метода + // Оголошення загальнодоступного методу public function MyPublic() { } - // Оголошення захищеного метода + // Оголошення захищеного методу protected function MyProtected() { } - // Оголошення закритого метода + // Оголошення закритого методу private function MyPrivate() { } // Таке оголошення метода буде оброблятись як public метод @@ -129,7 +250,7 @@ $myclass->Foo(); // Працюють Public, Protected та Private методи */ class MyClass2 extends MyClass { - // Таке оголошення метода буде оброблятись як public метод + // Таке оголошення методу буде оброблятись як public function Foo2() { $this->MyPublic(); @@ -174,9 +295,8 @@ $myFoo->test(); // Bar::testPrivate // Foo::testPublic ?> ]]> - - - + + @@ -186,10 +306,9 @@ $myFoo->test(); // Bar::testPrivate private чи protected. Константа, оголошена без ключового слова видимості, вважається загальнодоступною. - - - Оголошення констант, починаючи з PHP 7.1.0 - + + Оголошення констант, починаючи з PHP 7.1.0 + foo2(); // Працюють константи Public та Protected, але не Private ?> ]]> - - - + + @@ -269,13 +387,13 @@ class Test private function bar() { - echo 'Доступ до закритого метода.'; + echo 'Доступ до закритого методу.'; } public function baz(Test $other) { // Ми можемо змінити закриту властивість: - $other->foo = 'hello'; + $other->foo = 'привіт'; var_dump($other->foo); // Ми також можемо викликати закритий метод: @@ -292,8 +410,8 @@ $test->baz(new Test('other')); &example.outputs; diff --git a/language/predefined/variables.xml b/language/predefined/variables.xml index 77676c9..cb37bb3 100644 --- a/language/predefined/variables.xml +++ b/language/predefined/variables.xml @@ -1,19 +1,16 @@ - - - - + - Предвизначені змінні + Попередньо визначені змінні - PHP надає велику кількість предвизначених змінних для всіх скриптів. - Змінні представляють все: від - змінних із зовнішній джерел - до вбудованих змінних оточення, від останніх повідомлень про помилки до - останніх отриманих заголовків. + PHP надає попередньо визначені змінні, що представляють змінні із зовнішній джерел, + вбудовані змінні оточення та іншу інформацію про середовище виконання, + наприклад, кількість і значення аргументів, переданих скрипту в середовищі + CLI. diff --git a/language/predefined/variables/httpresponseheader.xml b/language/predefined/variables/httpresponseheader.xml index 4a93745..9c7b45f 100644 --- a/language/predefined/variables/httpresponseheader.xml +++ b/language/predefined/variables/httpresponseheader.xml @@ -1,6 +1,5 @@ - - + $http_response_header @@ -69,6 +68,14 @@ NULL + + &reftitle.seealso; + + http_get_last_response_headers + http_clear_last_response_headers + + + + $_SERVER @@ -48,7 +48,7 @@ (document root). Наприклад, $_SERVER['PHP_SELF'] в скрипті за адресою http://example.com/foo/bar.php буде /foo/bar.php. Константа - __FILE__ містить + __FILE__ містить повний шлях та назву поточного (тобто підключеного) файлу. @@ -340,7 +340,7 @@ Містить шлях до поточного скрипта. Це є корисним для сторінок, які повинні посилатись на самих себе. Константа __FILE__ містить повний + linkend="language.constants.magic">__FILE__ містить повний шлях та назву поточного файлу. diff --git a/language/types.xml b/language/types.xml index 8fb8365..1e0559a 100644 --- a/language/types.xml +++ b/language/types.xml @@ -1,6 +1,5 @@ - - + Типи @@ -27,7 +26,9 @@ PHP — це динамічно типізована мова, тобто не потрібно вказувати тип змінної, оскільки він визначається під час виконання коду. Тим не менш, можливо статично типувати деякі аспекти мови за допомогою - оголошення типів. + оголошення типів. + Докладніше про типи: Система типів + PHP. @@ -36,7 +37,7 @@ операцію, PHP намагатиметься перетворити тип значення в той, що підтримує її. - Цей процес залежить від контексту, в якому значення використоваються. + Цей процес залежить від контексту, в якому значення використовуються. Більше інформації у розділі Перетворення типів. @@ -59,27 +60,27 @@ Щоб перевірити тип та значення - виразу, використовуйте - функцію var_dump. + виразу, використовується + функція var_dump. - Щоб отримати читабельне представлення типів при налагодженні, використовуйте - функцію gettype. - Для отримання типу виразу є - функція get_debug_type. - Проте для перевірки відповідності виразу конкретному типу використовується - функція is_type. - + Для перевірки значення та типу виразу використовується функція + var_dump. Для отримання типу + виразу є функція + get_debug_type. А для перевірки відповідності виразу + конкретному типу використовується функція + is_type. ]]> diff --git a/language/types/string.xml b/language/types/string.xml index 6b9f4e5..348aa79 100644 --- a/language/types/string.xml +++ b/language/types/string.xml @@ -800,125 +800,126 @@ string(3) "bar" - If it is not possible to form a valid name the dollar sign remains - as verbatim in the string: + Якщо не вдається сформувати прийнятну назву змінної, то знак долара + відтворюється в рядку буквально: ]]> &example.outputs; - Interpolating the value of the first dimension of an array or property + Інтерполяція значення першого виміру масиву або властивості "purple"); +$juices = array("яблучний", "апельсиновий", "string_key" => "фіолетовий"); -echo "He drank some $juices[0] juice."; +echo "Він випив $juices[0] сік."; echo PHP_EOL; -echo "He drank some $juices[1] juice."; +echo "Він випив $juices[1] сік."; echo PHP_EOL; -echo "He drank some $juices[string_key] juice."; +echo "Він випив $juices[string_key] сік."; echo PHP_EOL; class A { - public $s = "string"; + public $s = "рядок"; } $o = new A(); -echo "Object value: $o->s."; +echo "Значення об'єкту: $o->s."; ?> ]]> &example.outputs; - The array key must be unquoted, and it is therefore not possible to - refer to a constant as a key with the basic syntax. Use the - advanced - syntax instead. + Ключ масиву не повинен бути в лапках чи апострофах, і тому не можна + посилатися на константу як на ключ за допомогою основного синтаксису. Для + цього використовується розширений + синтаксис. - As of PHP 7.1.0 also negative numeric indices are - supported. + Починаючи з PHP 7.1.0, підтримуються від'ємні + цілочисельні індекси. - Negative numeric indices + Від'ємні цілочисельні індекси ]]> &example.outputs; - For anything more complex, the - advanced - syntax must be used. + Для чогось складнішого використовується розширений + синтаксис. - Advanced (curly) syntax + Розширений синтаксис - The advanced syntax permits the interpolation of - variables with arbitrary accessors. + Розширений синтаксис дозволяє інтерполяцію змінних + довільної форми. - Any scalar variable, array element or object property - (static or not) with a - string representation can be included via this syntax. - The expression is written the same way as it would appear outside the - string, and then wrapped in { and - }. Since { can not be escaped, this - syntax will only be recognised when the $ immediately - follows the {. Use {\$ to get a - literal {$. Some examples to make it clear: + Будь-яка скалярна змінна, елемент масиву або властивість об'єкту + (static чи ні) з рядковим (string) + представленням можна вставити в рядок за допомогою цього синтаксису. Вираз + записується так, як він виглядає поза рядком (string) та + береться в фігурні дужки ({ та }). + Оскільки { не екранується, то цей синтаксис правильний + тільки, якщо $ слідує одразу після {. + Щоб буквально вивести послідовність {$, треба записати + її так: {\$. Ось кілька прикладів для наочності: @@ -926,23 +927,23 @@ Changing the character at index -3 to o gives strong. 'Indexed value', - 'const-key' => 'Key with minus sign', + 'ключ' => 'Індексоване значення', + 'ключ-константа' => 'Від\'ємний ключ', 'foo' => ['foo1', 'foo2', 'foo3'] ]; -// Won't work, outputs: This is { fantastic} -echo "This is { $great}"; +// Не працює, виводить: Це { фантастично} +echo "Це { $great}"; -// Works, outputs: This is fantastic -echo "This is {$great}"; +// Працює, виводить: Це фантастично +echo "Це {$great}"; class Square { public $width; @@ -952,31 +953,31 @@ class Square { $square = new Square(5); -// Works -echo "This square is {$square->width}00 centimeters wide."; +// Працює +echo "Цей квадрат має ширину {$square->width}00 сантиметрів."; -// Works, quoted keys only work using the curly brace syntax -echo "This works: {$arr['key']}"; +// Працює, ключі в апострофах чи лапках працюють тільки в розширеному синтаксисі +echo "Це працює: {$arr['ключ']}"; -// Works -echo "This works: {$arr[3][2]}"; +// Працює +echo "Це працює: {$arr[3][2]}"; -echo "This works: {$arr[DATA_KEY]}"; +echo "Це працює: {$arr[DATA_KEY]}"; -// When using multidimensional arrays, always use braces around arrays -// when inside of strings -echo "This works: {$arr['foo'][2]}"; +// Вставляючи елементи багатовимірних масивів в рядок, завжди потрібно брати їх +// у фігурні дужки +echo "це працює: {$arr['foo'][2]}"; -echo "This works: {$obj->values[3]->name}"; +echo "Це працює: {$obj->values[3]->name}"; -echo "This works: {$obj->$staticProp}"; +echo "Це працює: {$obj->$staticProp}"; -// Won't work, outputs: C:\folder\{fantastic}.txt +// Не працює, виводить: C:\folder\{фантастично}.txt echo "C:\folder\{$great}.txt"; -// Works, outputs: C:\folder\fantastic.txt +// Працює, виводить: C:\folder\фантастично.txt echo "C:\\folder\\{$great}.txt"; ?> ]]> @@ -985,69 +986,69 @@ echo "C:\\folder\\{$great}.txt"; - As this syntax allows arbitrary expressions it is possible to use - variable variables - within the advanced syntax. + Оскільки розширений синтаксис підтримує довільні вирази, то використання + змінних змінних — + дозволено. - String access and modification by character + Зміна рядка та посимвольне редагування - Characters within strings may be accessed and modified by - specifying the zero-based offset of the desired character after the - string using square array brackets, as in - $str[42]. Think of a string as an - array of characters for this purpose. The functions - substr and substr_replace - can be used when you want to extract or replace more than 1 character. + Доступ до символа в рядку (string) можна отримати, як до + елемента масиву (array), вказавши в квадратних дужках позицію + символа, рахуючи від нуля, наприклад, $str[42] (43-й + символ рядка str). Тобто, з цією метою потрібно вважати + рядок (string) масивом (array) символів. Функції + substr та substr_replace можна + використати для зчитування або заміни більше ніж одного символа. - As of PHP 7.1.0, negative string offsets are also supported. These specify - the offset from the end of the string. - Formerly, negative offsets emitted E_NOTICE for reading - (yielding an empty string) and E_WARNING for writing - (leaving the string untouched). + Починаючи з PHP 7.1.0, також підтримуються від'ємні позиції. Їх + відраховують з кінця рядка. Раніше використання від'ємних позицій викликало + повідомлення E_NOTICE під час зчитування (повертаючи + порожній рядок) та E_WARNING під час запису (не + змінюючи рядка). - Prior to PHP 8.0.0, strings could also be accessed using braces, as in - $str{42}, for the same purpose. - This curly brace syntax was deprecated as of PHP 7.4.0 and no longer supported as of PHP 8.0.0. + До PHP 8.0.0, з тією самою метою рядки (string) підтримують + фігурні дужки, напр. $str{42}. Такий синтаксис + застарілий, починаючи з PHP 7.4.0, та видалений в PHP 8.0.0. - Writing to an out of range offset pads the string with spaces. - Non-integer types are converted to integer. - Illegal offset type emits E_WARNING. - Only the first character of an assigned string is used. - As of PHP 7.1.0, assigning an empty string throws a fatal error. Formerly, - it assigned a NULL byte. + Запис в позицію за межами рядка доповнює рядок пропусками. Не цілочисельні + позиції перетворюються в цілі числа. Якщо задано недопустимий тип позиції, + виводиться E_WARNING. Записується тільки перший символ + заданого рядка. Починаючи з PHP 7.1.0, заданий порожній рядок викликає + фатальну помилку. Раніше, він перетворювався в NULL-байт. - Internally, PHP strings are byte arrays. As a result, accessing or - modifying a string using array brackets is not multi-byte safe, and - should only be done with strings that are in a single-byte encoding such - as ISO-8859-1. + Всередині інтерпретатора рядки є масивами байтів. Як наслідок, доступ до + рядка або його редагування, як масиву, не є безпечним для багатобайтових + кодувань і має здійснюватися лише з рядками в однобайтовому кодуванні, + наприклад, ISO-8859-1. - As of PHP 7.1.0, applying the empty index operator on an empty string throws a fatal - error. Formerly, the empty string was silently converted to an array. + Починаючи з PHP 7.1.0, застосування порожнього оператора індексу до + порожнього рядка призводить до фатальної помилки. Раніше порожній рядок + автоматично перетворювався на масив. diff --git a/preface.xml b/preface.xml index 002f019..d5aff83 100644 --- a/preface.xml +++ b/preface.xml @@ -1,18 +1,19 @@ - + - Передмова + + Передмова + Про цей посібник - PHP, (рекурсивний акронім словосполучення - "PHP: Hypertext Preprocessor") є мовою широкого - вжитку — це найпоширеніша мова програмування загального призначення з - відкритим початковим кодом. PHP сконструйована спеціально для ведення - веброзробок, а її код можна вписувати безпосередньо в HTML. Cинтаксис мови - поєднує C, Java і Perl, та її легко вивчати. Основною метою PHP є надання - веброзробникам можливості швидкого створення динамічних вебсторінок, але цим - сфера її застосування не обмежується. + PHP, що розшифровується як PHP: Hypertext + Preprocessor — це поширена скриптова мова загального призначення з + відкритим початковим кодом, яка найкраще підходить для веброзробки і може + бути вбудована в HTML. Cинтаксис мови ґрунтований на C, Java і Perl, також її + легко вивчати. Основна мета мови — дозволити веброзробникам швидко писати + динамічно генеровані вебсторінки, але за допомогою PHP можна робити набагато + більше. diff --git a/reference/array/book.xml b/reference/array/book.xml index 150c332..a35a065 100644 --- a/reference/array/book.xml +++ b/reference/array/book.xml @@ -1,6 +1,6 @@ - - + + Масиви diff --git a/reference/array/functions/count.xml b/reference/array/functions/count.xml index 7e02fad..90da346 100644 --- a/reference/array/functions/count.xml +++ b/reference/array/functions/count.xml @@ -1,5 +1,5 @@ - + @@ -130,7 +130,7 @@ int(3) Використання <function>count</function> не з Countable|array (поганий приклад — так не треба робити) - + - - &example.outputs.72; - - - - &example.outputs.8; - - @@ -267,4 +247,4 @@ End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 ---> \ No newline at end of file +--> diff --git a/reference/array/functions/in-array.xml b/reference/array/functions/in-array.xml index 3196bfd..efdf26a 100644 --- a/reference/array/functions/in-array.xml +++ b/reference/array/functions/in-array.xml @@ -1,5 +1,5 @@ - + @@ -158,8 +158,8 @@ if (in_array('o', $a)) { &example.outputs; diff --git a/reference/bc/book.xml b/reference/bc/book.xml index dea6c3b..543eed8 100644 --- a/reference/bc/book.xml +++ b/reference/bc/book.xml @@ -1,5 +1,5 @@ - + BCMath — розрахунки з довільною математичною точністю @@ -50,6 +50,7 @@ echo bcsub($num1, $num2, 1); // => '0.0' &reference.bc.setup; &reference.bc.reference; + &reference.bc.bcmath.number; diff --git a/reference/bzip2/book.xml b/reference/bzip2/book.xml index 5bce77d..cfed6d7 100644 --- a/reference/bzip2/book.xml +++ b/reference/bzip2/book.xml @@ -1,26 +1,24 @@ - - - + + Bzip2 - + &reftitle.intro; - + Функції bzip2 використовуються для прозорого читання та записування стиснених файлів bzip2 (.bz2). - + - + &reference.bzip2.setup; &reference.bzip2.examples; &reference.bzip2.reference; - - diff --git a/reference/bzip2/configure.xml b/reference/bzip2/configure.xml index f2b13d2..4e03cb9 100644 --- a/reference/bzip2/configure.xml +++ b/reference/bzip2/configure.xml @@ -1,15 +1,14 @@ - + -
+
&reftitle.install; - + Підтримку Bzip2 в PHP не підключено початково. Для такого підключення потрібно використовувати параметр при збірці PHP. - +
- +
&reftitle.install; @@ -10,9 +10,6 @@ &pecl.info; &url.pecl.package;dio. - - &pecl.windows.download; -
+ - -
+
&reftitle.install; - - + + &pecl.info; &url.pecl.package;eio. - - + + Інформація для ручного встановлення знаходиться в файлі з назвою INSTALL, який є в пакеті. - +
- - + + &reftitle.constants; - - - - - LIBENCHANT_VERSION - (string) - - - - Версія libenchant. - Доступно, починаючи з PHP 8.0.0. - - - - - - ENCHANT_MYSPELL - (int) - - - - Тип словника MySpell. Використовується разом з - enchant_broker_get_dict_path та - enchant_broker_set_dict_path. Застарів у PHP 8.0.0. - - - - - - ENCHANT_ISPELL - (int) - - - - Тип словника Ispell. Використовується разом з - enchant_broker_get_dict_path та - enchant_broker_set_dict_path. Застарів у PHP 8.0.0. - - - - - + + + + LIBENCHANT_VERSION + (string) + + + + Версія libenchant. + Доступно, починаючи з PHP 8.0.0. + + + + + + ENCHANT_MYSPELL + (int) + + + + Тип словника MySpell. Використовується разом з + enchant_broker_get_dict_path та + enchant_broker_set_dict_path. Застарів у PHP 8.0.0. + + + + + + ENCHANT_ISPELL + (int) + + + + Тип словника Ispell. Використовується разом з + enchant_broker_get_dict_path та + enchant_broker_set_dict_path. Застарів у PHP 8.0.0. + + + + - - diff --git a/reference/ev/configure.xml b/reference/ev/configure.xml index 19a6ad9..c469275 100644 --- a/reference/ev/configure.xml +++ b/reference/ev/configure.xml @@ -1,17 +1,17 @@ - + -
+
&reftitle.install; - + &pecl.info; &url.pecl.package;ev - - + + Інформація для ручного встановлення знаходиться у файлі INSTALL.md, що входить сирцевий пакет. - +
+ &Functions; Ev diff --git a/reference/exif/functions/read-exif-data.xml b/reference/exif/functions/read-exif-data.xml index d7f85d7..c493c0a 100644 --- a/reference/exif/functions/read-exif-data.xml +++ b/reference/exif/functions/read-exif-data.xml @@ -1,7 +1,7 @@ - + - + read_exif_data &Alias; exif_read_data @@ -20,29 +20,26 @@ &reftitle.changelog; - - - - - - &Version; - &Description; - - - - - 7.2.0 - - Цей псевдонім функції застарів. - - - - - - + + + + + &Version; + &Description; + + + + + 7.2.0 + + Цей псевдонім функції застарів. + + + + + - \ No newline at end of file +--> diff --git a/reference/fpm/functions/fastcgi-finish-request.xml b/reference/fpm/functions/fastcgi-finish-request.xml index bb882fa..eb64a96 100644 --- a/reference/fpm/functions/fastcgi-finish-request.xml +++ b/reference/fpm/functions/fastcgi-finish-request.xml @@ -1,8 +1,7 @@ - - - - + + + fastcgi_finish_request Скидає всі дані відповіді клієнту @@ -12,22 +11,26 @@ &reftitle.description; boolfastcgi_finish_request - + - + Ця функція скидає всі дані відповіді клієнту та завершує запит. Це дозволяє виконувати трудоємні завдання, неполишаючи підключення до клієнта. - + + + + + &reftitle.parameters; + &no.function.parameters; &reftitle.returnvalues; - + &return.success; - + - + - &reftitle.setup; - + Інформацію про встановлення та конфігурування FPM можна знайти в розділі встановлення та конфігурація PHP. - + - + - -
+
&reftitle.install; - + &pecl.info; &url.pecl.package;gearman - +
- - + - -
+
&reftitle.install; - + &pecl.info; &url.pecl.package;gender - - - -
+ +
+ -
+
&reftitle.install; - + &pecl.info; . - +
- - diff --git a/reference/hrtime/configure.xml b/reference/hrtime/configure.xml index 2456ae7..a5cd517 100644 --- a/reference/hrtime/configure.xml +++ b/reference/hrtime/configure.xml @@ -1,21 +1,18 @@ - + - -
+
&reftitle.install; - + Використовуйте при збірці PHP. - + - + Користувачам Windows потрібно включати php_hrtime.dll в &php.ini; - +
- - - + + imap_header &Alias; imap_headerinfo + + &warn.removed.alias-8-0-0; + + &reftitle.description; @@ -15,7 +19,6 @@ - + @@ -11,7 +11,7 @@ &reftitle.description; boolextension_loaded - stringname + stringextension Визначає - чи розширення завантажено. @@ -23,7 +23,7 @@ - name + extension Назва розширення. Цей параметр є регістро-чутливим. @@ -63,7 +63,7 @@ ctype &reftitle.returnvalues; - Повертає &true; якщо розширення, визначене через name, + Повертає &true; якщо розширення, визначене через extension, завантажено, &false; - в противному разі. @@ -102,7 +102,6 @@ if (!extension_loaded('gd')) { - + - php_ini_loaded_file @@ -11,7 +10,7 @@ &reftitle.description; - stringphp_ini_loaded_file + stringfalsephp_ini_loaded_file @@ -71,7 +70,6 @@ if ($inipath) { - + - -
+
&reftitle.install; - + &pecl.info; &url.pecl.package;lua - - - -
+ +
+ + Перелічення RoundingMode + RoundingMode + + +
+ &reftitle.intro; + + Перелічення RoundingMode визначає, як має відбуватись + округлення у функцій round, + bcround і BcMath\Number::round. + +
+ +
+ &reftitle.enumsynopsis; + + + RoundingMode + + + HalfAwayFromZero + + Округлювати до найближчого цілого. Якщо дробова частина числа дорівнює + 5, число округлюється до більшого цілого. + + + + + HalfTowardsZero + + Округлювати до найближчого цілого. Якщо дробова частина числа дорівнює + 5, число округлюється до меншого цілого. + + + + + HalfEven + + Округлювати до найближчого цілого. Якщо дробова частина числа дорівнює + 5, число округлюється до парного цілого. + + + + + HalfOdd + + Округлювати до найближчого цілого. Якщо дробова частина числа дорівнює + 5, число округлюється до непарного цілого. + + + + + TowardsZero + + Округлити до найближчого меншого або рівного цілого числа. + + + + + AwayFromZero + + Округлити до найближчого більшого або рівного цілого числа. + + + + + NegativeInfinity + + Округлити до найбільшого цілого, що є менше або рівне. + + + + + PositiveInfinity + + Округлити до найменшого цілого, що є більше або рівне. + + + + +
+
+
+ diff --git a/reference/mcrypt/configure.xml b/reference/mcrypt/configure.xml index 75feaf3..d9b30a5 100644 --- a/reference/mcrypt/configure.xml +++ b/reference/mcrypt/configure.xml @@ -1,17 +1,16 @@ - - -
+ + +
&reftitle.install; - - &pecl.moved; - - + + &pecl.moved-ver;7.2.0 + + &pecl.info; &url.pecl.package;mcrypt. - +
- + die - Еквівалент до exit + &Alias; exit &reftitle.description; - - Це мовна конструкція є еквівалентною до exit. - + + &info.function.alias; + exit. + - - +
&reftitle.runtime; &extension.runtime; - Додаткові параметри конфігурації відсутні. + &no.config;
+ -
+
&reftitle.resources; - + Це розширення визначає підключення та ресурси object_handle. - - + + Фукнція mqseries_conn та mqseries_connx визначають обробку підключень. - - + + Функція mqseries_open визначає обробника об'єкта. - +
- - + + + mysqli::escape_string mysqli_escape_string &Alias; mysqli_real_escape_string diff --git a/reference/mysqli/functions/mysqli-set-opt.xml b/reference/mysqli/functions/mysqli-set-opt.xml index 4a3603d..ef3b4c9 100644 --- a/reference/mysqli/functions/mysqli-set-opt.xml +++ b/reference/mysqli/functions/mysqli-set-opt.xml @@ -1,11 +1,11 @@ - - + + mysqli::set_opt mysqli_set_opt - Псевдонім mysqli_options + &Alias; mysqli_options diff --git a/reference/oauth/configure.xml b/reference/oauth/configure.xml index b28c890..a099877 100644 --- a/reference/oauth/configure.xml +++ b/reference/oauth/configure.xml @@ -1,16 +1,13 @@ - + - -
+
&reftitle.install; - + &pecl.info; &url.pear.package;oauth - +
- - - + + &reftitle.setup; - - &reftitle.required; - &no.requirement; - - &reference.opcache.configure; &reference.opcache.ini; - - &reftitle.resources; - &no.resource; - - + -
+
&reftitle.install; - + &pecl.moved; - - + + &pecl.info; &url.pecl.package;openal. - - + + &pecl.windows.download; - +
- + + openssl_get_publickey @@ -16,7 +16,6 @@ - - + + parallel parallel &reftitle.intro; - + Розширення parallel дозволяє виконувати PHP-код в паралельних потоках. Воно доступне в PHP ≥ 7.2.0. Для parallel ≥ 1.2.0 потрібна версія PHP ≥ 8.0.0. - - + + Це стислий опис загального алгоритму parallel. Більше інформації є в наступних частинах розділу. - + Клас Runtime - + Клас parallel\Runtime представляє потік інтерпретатора PHP. Клас parallel\Runtime можна налаштувати за допомогою необов'язкового файлу ініціалізації, який @@ -25,8 +25,8 @@ parallel\Runtime::__construct. Зазвичай цей файл є автозавантажувачем чи чимсь на кшталт процедури попереднього завантаження: він буде підключатися перед виконанням кожного завдання. - - + + Після створення, примірник parallel\Runtime залишається доступним, допоки його не закриють чи знищать відповідно до правил визначення області видимості об'єктів PHP. Метод @@ -35,16 +35,16 @@ parallel\Runtime послуговується принципом FIFO (перший прийшов — перший вийшов), тобто завдання виконуються в тій послідовності, у якій вони були заплановані. - + Функціональний API - + parallel реалізує функціональний API вищого рівня поверх parallel\Runtime, надаючи єдину функціональну точку входу для паралельного виконання коду з автоматичним плануванням — функцію parallel\run. - + Завдання @@ -55,41 +55,41 @@ вкладені замикання. Проте є інструкції, заборонені в завданнях: - yield + yield - посилання + посилання - оголошення класу + оголошення класу - оголошення функції з назвою + оголошення функції з назвою - + Вкладеним замиканням дозволяється містити інструкції yield або посилання, але не оголошення класів чи функцій з назвами. - + - + Скрипти, що підключені в завданнях, жодних обмежень не мають. - + Ф'ючерс - + Клас parallel\Future використовується для доступу до значень, що повертає завдання, і надає API для скасування завдання. - + Канал - + Завдання можна можна додати в чергу, вказати йому параметри, використовувати змінні лексичної області (тобто за значенням), та отримати результат виконання (через клас parallel\Future), таким чином @@ -99,11 +99,11 @@ parallel\Channel, який утворює сокет-подібний зв'язок між завданнями, який програміст може використовувати для надсилання та отримання даних. - + Події - + API parallel\Events реалізує власний цикл подій (Traversable) та метод parallel\Events::poll. Це дозволяє програмісту @@ -115,12 +115,12 @@ об'єкти, коли вони стануть доступні, створюючи примірники parallel\Events\Event, що описують операції, які відбулися. - + &reftitle.seealso; - + @@ -140,7 +140,6 @@ - - -
+ +
&reftitle.install; - + Використовується опція під час компіляції PHP. - + - + Користувачам Windows необхідно підключити php_parallel.dll в файлі &php.ini; - +
- - - - + + Функціональний API - + API parallel\Runtime надає широкі можливості керування досвідченому PHP-програмісту і то́му, хто добре знайомий з написанням програм, які використовують паралелізм та конкурентність. - + А от функціональний API дає менше контролю в обмін на здатність ухвалювати рішення замість програміста: - усі середовища виконання завантажуються однаково + усі середовища виконання завантажуються однаково - планування здійснює API, а не програміст + планування здійснює API, а не програміст Функція parallel\run гарантує, що завдання почне @@ -30,7 +29,6 @@ &reference.parallel.functions.parallel.bootstrap; &reference.parallel.functions.parallel.run; - + + + + Клас parallel\Events\Event\Type + parallel\Events\Event\Type + + + +
+ &reftitle.classsynopsis; + + + + parallel\Events\Event\Type + + + + + final + parallel\Events\Event\Type + + + + + Event::$object прочитано в Event::$value + + const + Read + + + Ввід для Event::$source записано в Event::$object + + const + Write + + + Event::$object (канал) закрито + + const + Close + + + Event::$object (ф'ючерс) скасовано + + const + Cancel + + + Процес Event::$object (ф'ючерс) знищено + + const + Kill + + + Event::$object (ф'ючерс) видав помилку + + const + Error + + + + + +
+ +
+ +
+ + diff --git a/reference/parallel/parallel/input/add.xml b/reference/parallel/parallel/input/add.xml new file mode 100644 index 0000000..d74f006 --- /dev/null +++ b/reference/parallel/parallel/input/add.xml @@ -0,0 +1,57 @@ + + + + + parallel\Events\Input::add + Вхідні дані + + + + &reftitle.description; + + public voidparallel\Events\Input::add + stringtarget + mixedvalue + + + Задає вхідні дані для обраної цілі. + + + + + Виключення + + + Кидає parallel\Events\Input\Error\Existence, якщо вхідні дані + для цілі вже задано. + + + + + Кидає parallel\Events\Input\Error\IllegalValue, якщо значення + неправильне (&object;, &null;). + + + + + + diff --git a/reference/parallel/parallel/input/clear.xml b/reference/parallel/parallel/input/clear.xml new file mode 100644 index 0000000..5cc8ca7 --- /dev/null +++ b/reference/parallel/parallel/input/clear.xml @@ -0,0 +1,40 @@ + + + + + parallel\Events\Input::clear + Вхідні дані + + + + &reftitle.description; + + public voidparallel\Events\Input::clear + + + + Вилучає вхідні дані з усіх цілей. + + + + + diff --git a/reference/parallel/parallel/input/remove.xml b/reference/parallel/parallel/input/remove.xml new file mode 100644 index 0000000..a71dac5 --- /dev/null +++ b/reference/parallel/parallel/input/remove.xml @@ -0,0 +1,50 @@ + + + + + parallel\Events\Input::remove + Вхідні дані + + + + &reftitle.description; + + public voidparallel\Events\Input::remove + stringtarget + + + Вилучає вхідні дані з обраної цілі. + + + + + Виключення + + + Кидає parallel\Events\Input\Error\Existence, якщо вхідні дані + для цілі не задано. + + + + + + diff --git a/reference/pcre/setup.xml b/reference/pcre/setup.xml index 2715ae6..7f47240 100644 --- a/reference/pcre/setup.xml +++ b/reference/pcre/setup.xml @@ -1,23 +1,13 @@ - - + + &reftitle.setup; -
- &reftitle.required; - &no.requirement; -
- &reference.pcre.configure; &reference.pcre.ini; -
- &reftitle.resources; - &no.resource; -
-
+ + + pg_set_chunked_rows_size + Визначає допустимий розмір отриманих частин вибірки в порційному + режимі + + + + &reftitle.description; + + boolpg_set_chunked_rows_size + PgSql\Connectionconnection + intsize + + + Визначає допустимий розмір отриманих частин вибірки в порційному режимі. + Повернуті результати вибірки діляться на частини, кожна з яких містить не + більше ніж size рядків. Цю функцію необхідно викликати + перед отриманням результатів функцією pg_get_result. + Функція доступна, якщо версія libpq — 17 або новіша. + + + + + &reftitle.parameters; + + + connection + + &pgsql.parameter.connection; + + + + size + + + Кількість рядків у кожній частині. + + + + + + + + &reftitle.returnvalues; + + &return.success; + + + + + &reftitle.errors; + + Якщо параметр size менший за 1, + викидається ValueError. + + + + + &reftitle.examples; + + Використання <function>pg_result_memory_size</function> + + + + &example.outputs; + + + + + + + + &reftitle.seealso; + + pg_get_result + pg_result_status + + + + diff --git a/reference/random/random.intervalboundary.xml b/reference/random/random.intervalboundary.xml new file mode 100644 index 0000000..d9b4938 --- /dev/null +++ b/reference/random/random.intervalboundary.xml @@ -0,0 +1,77 @@ + + + + Перелічення Random\IntervalBoundary + Random\IntervalBoundary + + +
+ &reftitle.intro; + + Перелічення Random\IntervalBoundary визначає, чи + належать проміжку його межі. + +
+ +
+ &reftitle.enumsynopsis; + + + Random\IntervalBoundary + + + ClosedOpen + + Напіввідкритий проміжок. + Містить нижню межу, а верхню — ні. + + + + + ClosedClosed + + Закритий проміжок. + Містить як і нижню, так і верхню межу. + + + + + OpenClosed + + Напіввідкритий проміжок. + Містить верхню межу, а нижню — ні. + + + + + OpenOpen + + Відкритий проміжок. + Жодна з меж йому не належить. + + + + +
+
+
+ diff --git a/reference/spl/splfileinfo/isfile.xml b/reference/spl/splfileinfo/isfile.xml index d5d2a91..d8563d1 100644 --- a/reference/spl/splfileinfo/isfile.xml +++ b/reference/spl/splfileinfo/isfile.xml @@ -1,7 +1,6 @@ - + - SplFileInfo::isFile @@ -10,9 +9,9 @@ &reftitle.description; - + public boolSplFileInfo::isFile - + Перевіряє чи існує файл, на який посилається об'єкт SplFileInfo, та чи є він звичайним файлом (не лінком). @@ -59,7 +58,6 @@ bool(false) - - + @@ -13,11 +12,11 @@ &reftitle.description; intcrc32 - stringstr + stringstring Функція обчислює циклічний надлишковий код 32-бітних поліномів - для рядка str. Зазвичай використовується + для рядка string. Зазвичай використовується для перевірки цілісності передачі даних. @@ -65,7 +64,7 @@ - str + string Дані. @@ -79,7 +78,7 @@ &reftitle.returnvalues; - Повертає контрольну суму CRC32-рядка str у вигляді цілого числа. + Повертає контрольну суму CRC32-рядка string у вигляді цілого числа. @@ -118,7 +117,6 @@ printf("%u\n", $checksum); - - + @@ -12,9 +11,9 @@ &reftitle.description; - stringmd5_file + stringfalsemd5_file stringfilename - boolraw_output&false; + boolbinary&false; Обчислює MD5-хеш файлу filename використовуючи @@ -36,7 +35,7 @@ - raw_output + binary Якщо необов'язковий параметр raw_output встановлений у &true;, @@ -55,33 +54,7 @@ інакше &false;. - - - &reftitle.changelog; - - - - - - &Version; - &Description; - - - - - 5.1.0 - - Функцію змінено для роботи з потоковим API. Це означає, - що її можна використовувати з обгортками, наприклад, - так: md5_file('http://example.com/..') - - - - - - - - + &reftitle.examples; @@ -90,7 +63,7 @@ @@ -104,14 +77,13 @@ echo 'MD5-хеш файлу ' . $file . ': ' . md5_file($file); &reftitle.seealso; + hash_file + hash_init md5 - sha1_file - crc32 - - + @@ -17,11 +16,11 @@ &reftitle.description; stringmd5 - stringstr - boolraw_output&false; + stringstring + boolbinary&false; - Обчислює MD5-хеш рядка str використовуючи + Обчислює MD5-хеш рядка string використовуючи RSA Data Security, Inc. MD5 Message-Digest Algorithm, та повертає цей хеш. @@ -32,7 +31,7 @@ - str + string Рядок. @@ -40,10 +39,10 @@ - raw_output + binary - Якщо необов'язковий параметр raw_output встановлений у &true;, + Якщо необов'язковий параметр binary встановлений у &true;, то повертається бінарний рядок з 16 символів. @@ -83,19 +82,13 @@ if (md5($str) === '58bb8ca76e4a13037e7cd0232f387643') { &reftitle.seealso; - md5_file - sha1_file - crc32 - sha1 hash - crypt password_hash - - + @@ -11,9 +10,9 @@ &reftitle.description; - stringsha1_file + stringfalsesha1_file stringfilename - boolraw_output&false; + boolbinary&false; Обчислює SHA1-хеш файла filename використовуючи @@ -35,10 +34,10 @@ - raw_output + binary - Якщо необов'язковий параметр raw_output + Якщо необов'язковий параметр binary встановлений у &true;, хеш повернеться у вигляді бінарного рядка з 20 символів, інакше повернеться 40-символьне шістнадцяткове число. @@ -64,10 +63,9 @@ - - &reftitle.changelog; - - - - - - &Version; - &Description; - - - - - 5.1.0 - - Функцію змінено для роботи з потоковим API. Це означає, - що її можна використовувати з обгортками, наприклад, так: - sha1_file('http://example.com/..') - - - - - - - - + &reftitle.seealso; + hash_file + hash_init sha1 - md5_file - crc32 - - + @@ -17,11 +16,11 @@ &reftitle.description; stringsha1 - stringstr - boolraw_output&false; + stringstring + boolbinary&false; - Обчислює SHA1-хеш рядка str використовуючи алгоритм + Обчислює SHA1-хеш рядка string використовуючи алгоритм US Secure Hash Algorithm 1, та повертає цей хеш. @@ -32,7 +31,7 @@ - str + string Рядок. @@ -40,10 +39,10 @@ - raw_output + binary - Якщо необов'язковий параметр raw_output + Якщо необов'язковий параметр binary встановлений у &true;, хеш повернеться у вигляді бінарного рядка з 20 символів, інакше повернеться 40-символьне шістнадцяткове число. @@ -85,18 +84,13 @@ if (sha1($str) === '78742c4f7790d580dca68606a7efad0dcc446709') { &reftitle.seealso; - sha1_file - crc32 - md5 hash - crypt password_hash - - + urldecode @@ -11,7 +10,7 @@ &reftitle.description; stringurldecode - stringstr + stringstring В заданому рядку розкодовує будь-який підрядок, що починається зі знака процента, @@ -26,7 +25,7 @@ - str + string Рядок, що буде розкодовуватись. @@ -93,7 +92,6 @@ foreach (explode('&', $query) as $chunk) { - + @@ -12,7 +12,7 @@ &reftitle.description; boolis_null - mixedvar + mixedvalue Перевіряє чи змінна має значення &null;. @@ -23,7 +23,7 @@ - var + value Змінна, яка буде перевірятись. @@ -36,7 +36,7 @@ &reftitle.returnvalues; - Повертає &true;, якщо var має значення + Повертає &true;, якщо value має значення null, в противному разі - &false;. @@ -57,16 +57,10 @@ var_dump(is_null($inexistent), is_null($foo)); ?> ]]> - - - + &reftitle.seealso; @@ -84,7 +78,6 @@ bool(true) -