diff --git a/appendices/migration81/new-features.xml b/appendices/migration81/new-features.xml index 080ee7e0c..e2aa8c742 100644 --- a/appendices/migration81/new-features.xml +++ b/appendices/migration81/new-features.xml @@ -1,5 +1,5 @@ - + Новая функциональность @@ -146,6 +146,7 @@ Добавлена поддержка модификатора final при определении констант класса. + Кроме того, константы интерфейса по умолчанию становятся переопределяемыми. @@ -220,8 +221,8 @@ curl_setopt($curl, CURLOPT_POSTFIELDS, ['file' => $file]); GD - Поддержка Avix теперь доступна с помощью imagecreatefromavif - и imageavif, если libgd был собран с поддержкой Avix. + Поддержка Avif теперь доступна с помощью imagecreatefromavif + и imageavif, если libgd был собран с поддержкой Avif. diff --git a/language/oop5/basic.xml b/language/oop5/basic.xml index 5124ac1bc..ba6d3333d 100644 --- a/language/oop5/basic.xml +++ b/language/oop5/basic.xml @@ -1,5 +1,5 @@ - + Основы @@ -354,12 +354,17 @@ echo ($obj->bar)(), PHP_EOL; Наследуемые константы, методы и свойства могут быть переопределены (за исключением - случаев, когда метод класса объявлен как final) + случаев, когда метод или константа класса объявлены как final) путём объявления их с теми же именами, как и в родительском классе. Существует возможность доступа к переопределённым методам или статическим свойствам путём обращения к ним через parent:: + + + Начиная с PHP 8.1.0, константы можно объявлять окончательными (final). + + Простое наследование классов diff --git a/language/oop5/changelog.xml b/language/oop5/changelog.xml index f9a509eff..9ec2df7ed 100644 --- a/language/oop5/changelog.xml +++ b/language/oop5/changelog.xml @@ -1,5 +1,5 @@ - + Журнал изменений ООП @@ -17,6 +17,13 @@ + + 8.1.0 + + Добавлено: Поддержка модификатора final для констант класса. + Кроме того, константы интерфейса по умолчанию становятся переопределяемыми. + + 7.4.0 diff --git a/language/oop5/constants.xml b/language/oop5/constants.xml index 0d25e2e09..28d3d64e2 100644 --- a/language/oop5/constants.xml +++ b/language/oop5/constants.xml @@ -1,5 +1,5 @@ - + Константы классов @@ -10,6 +10,7 @@ Константы класса могут быть переопределены дочерним классом. + Начиная с PHP 8.1.0, константы класса не могут быть переопределены дочерним классом, если он определён как окончательный (final). diff --git a/language/oop5/final.xml b/language/oop5/final.xml index 0c0014e8a..7985fba8c 100644 --- a/language/oop5/final.xml +++ b/language/oop5/final.xml @@ -1,11 +1,11 @@ - + Ключевое слово final PHP предоставляет ключевое слово final, разместив которое - перед объявлениями методов класса, можно предотвратить их + перед объявлениями методов или констант класса, можно предотвратить их переопределение в дочерних классах. Если же сам класс определяется с этим ключевым словом, то он не сможет быть унаследован. @@ -59,20 +59,42 @@ class ChildClass extends BaseClass { // Выполнение заканчивается фатальной ошибкой: Class ChildClass may not inherit from final class (BaseClass) // (Класс ChildClass не может быть унаследован от окончательного класса (BaseClass)) ?> +]]> + + + + + + Пример окончательной (final) константы класса, начиная с PHP 8.1.0 + + ]]> - - - - - Свойства и константы не могут быть объявлены окончательными, только классы - и методы. - - - Начиная с PHP 8.0.0, закрытые методы не могут быть объявлены окончательными, за исключением конструктора. - - - + Интерфейсы объектов @@ -90,9 +90,8 @@ Константы (<literal>Constants</literal>) Интерфейсы могут содержать константы. Константы интерфейсов - работают точно так же, как и - константы классов, за исключением того, что они не могут - быть переопределены наследующим классом или интерфейсом. + работают точно так же, как и константы классов. + До PHP 8.1.0 они не могли быть переопределены классом или интерфейсом, который их наследует. @@ -243,12 +242,15 @@ interface A echo A::B; -// Это, однако, не будет работать, так как -// константы переопределять нельзя. class B implements A { const B = 'Константа класса'; } + +// Выведет: Константа класса +// До PHP 8.1.0 этот код не будет работать, +// потому что было нельзя переопределять константы. +echo B::B; ?> ]]> diff --git a/language/predefined/variables/globals.xml b/language/predefined/variables/globals.xml index 47f2da348..f297bc760 100644 --- a/language/predefined/variables/globals.xml +++ b/language/predefined/variables/globals.xml @@ -1,7 +1,6 @@ - + - $GLOBALS @@ -45,6 +44,28 @@ $foo в текущей области видимости: локальная п + + + Начиная с PHP 8.1.0, доступ на запись ко всему массиву $GLOBALS больше не поддерживается: + + запись всего <varname>$GLOBALS</varname> приведёт к ошибке + + + ]]> + + + + @@ -57,6 +78,36 @@ $foo в текущей области видимости: локальная п $GLOBALS всегда доступна в PHP. + + + Начиная с PHP 8.1.0, массив $GLOBALS теперь является доступной только для чтения копией глобальной таблицы символов. + То есть глобальные переменные не могут быть изменены с помощью его копии. + Ранее массив $GLOBALS исключался из обычного поведения массивов PHP по значению и глобальные переменные можно было изменить с помощью его копии. + + + $value) { + $GLOBALS[$key] = $value; +} +?> +]]> + + + + diff --git a/reference/curl/book.xml b/reference/curl/book.xml index f507219b9..2b6538923 100644 --- a/reference/curl/book.xml +++ b/reference/curl/book.xml @@ -1,7 +1,6 @@ - + - Клиентская библиотека работы с URL @@ -32,6 +31,7 @@ &reference.curl.curlmultihandle; &reference.curl.curlsharehandle; &reference.curl.curlfile; + &reference.curl.curlstringfile; + @@ -11,7 +11,7 @@
&reftitle.intro; - CURLFile может быть использован для загрузки файла с + Этот класс или CURLStringFile могут быть использованы для загрузки файла с помощью опции CURLOPT_POSTFIELDS. @@ -101,6 +101,7 @@ curl_setopt + CURLStringFile
diff --git a/reference/curl/functions/curl-setopt.xml b/reference/curl/functions/curl-setopt.xml index 82225171e..e08d89bc1 100644 --- a/reference/curl/functions/curl-setopt.xml +++ b/reference/curl/functions/curl-setopt.xml @@ -1,5 +1,5 @@ - + @@ -1518,7 +1518,7 @@ значение multipart/form-data. - Файлы можно отправлять с использованием CURLFile, + Файлы можно отправлять с использованием CURLFile или CURLStringFile, в этом случае value должен быть массивом. @@ -2382,11 +2382,14 @@ curl_close($ch); curl_setopt_array + CURLFile + CURLStringFile - +
&reftitle.runtime; diff --git a/reference/reflection/reflectionclassconstant/isprivate.xml b/reference/reflection/reflectionclassconstant/isprivate.xml index 2e8d40878..4c86d76e1 100644 --- a/reference/reflection/reflectionclassconstant/isprivate.xml +++ b/reference/reflection/reflectionclassconstant/isprivate.xml @@ -1,7 +1,6 @@ - + - ReflectionClassConstant::isPrivate @@ -35,6 +34,7 @@ &reftitle.seealso; + ReflectionClassConstant::isFinal ReflectionClassConstant::isPublic ReflectionClassConstant::isProtected diff --git a/reference/reflection/reflectionclassconstant/isprotected.xml b/reference/reflection/reflectionclassconstant/isprotected.xml index a70015248..5bf70cde6 100644 --- a/reference/reflection/reflectionclassconstant/isprotected.xml +++ b/reference/reflection/reflectionclassconstant/isprotected.xml @@ -1,7 +1,6 @@ - + - ReflectionClassConstant::isProtected @@ -35,6 +34,7 @@ &reftitle.seealso; + ReflectionClassConstant::isFinal ReflectionClassConstant::isPublic ReflectionClassConstant::isPrivate diff --git a/reference/reflection/reflectionclassconstant/ispublic.xml b/reference/reflection/reflectionclassconstant/ispublic.xml index 2c08432fa..245ebf4d9 100644 --- a/reference/reflection/reflectionclassconstant/ispublic.xml +++ b/reference/reflection/reflectionclassconstant/ispublic.xml @@ -1,7 +1,6 @@ - + - ReflectionClassConstant::isPublic @@ -35,6 +34,7 @@ &reftitle.seealso; + ReflectionClassConstant::isFinal ReflectionClassConstant::isPrivate ReflectionClassConstant::isProtected diff --git a/reference/stream/functions/stream-bucket-make-writeable.xml b/reference/stream/functions/stream-bucket-make-writeable.xml index f01df6d9b..4fc0ecf54 100644 --- a/reference/stream/functions/stream-bucket-make-writeable.xml +++ b/reference/stream/functions/stream-bucket-make-writeable.xml @@ -1,23 +1,79 @@ - + - stream_bucket_make_writeable - - Вернуть объект ведра из бригады для дальнейшей работы с ним - + Возвращает объект корзины из бригады для дальнейшей работы с ним + &reftitle.description; objectnullstream_bucket_make_writeable resourcebrigade - + + + Функция вызывается всякий раз, когда возникает необходимость в доступе к содержимому, содержащемся в бригаде и работе с ним. + Обычно функция вызывается из php_user_filter::filter. + + - &warn.undocumented.func; + + &reftitle.parameters; + + + + brigade + + + Бригада, из которой нужно вернуть объект корзины. + + + + + + + + &reftitle.returnvalues; + + Возвращает объект корзины со свойствами, перечисленными ниже или &null;. + + + + data + (string) + + + + data bucket Текущая строка в корзине. + + + + + + datalen + (integer) + + + + datalen bucket Длина строки в корзине. + + + + + + + + + &reftitle.seealso; + + + stream_bucket_append + stream_bucket_prepend + + diff --git a/reference/url/functions/http-build-query.xml b/reference/url/functions/http-build-query.xml index 275cf4fef..a2e0054f1 100644 --- a/reference/url/functions/http-build-query.xml +++ b/reference/url/functions/http-build-query.xml @@ -1,5 +1,5 @@ - + @@ -203,9 +203,9 @@ class parentClass { public $pub = 'publicParent'; protected $prot = 'protectedParent'; private $priv = 'privateParent'; - public $pub_bar = Null; - protected $prot_bar = Null; - private $priv_bar = Null; + public $pub_bar = null; + protected $prot_bar = null; + private $priv_bar = null; public function __construct(){ $this->pub_bar = new childClass();