forked from php/php-src
-
Notifications
You must be signed in to change notification settings - Fork 0
/
UPGRADING
215 lines (175 loc) · 7.59 KB
/
UPGRADING
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
PHP 8.2 UPGRADE NOTES
1. Backward Incompatible Changes
2. New Features
3. Changes in SAPI modules
4. Deprecated Functionality
5. Changed Functions
6. New Functions
7. New Classes and Interfaces
8. Removed Extensions and SAPIs
9. Other Changes to Extensions
10. New Global Constants
11. Changes to INI File Handling
12. Windows Support
13. Other Changes
14. Performance Improvements
========================================
1. Backward Incompatible Changes
========================================
- Standard:
. strtolower() and strtoupper() are no longer locale-sensitive. They now
perform ASCII case conversion, as if the locale were "C". Use
mb_strtolower() if you want localized case conversion. Similarly, stristr,
stripos, strripos, lcfirst, ucfirst, ucwords, str_ireplace,
array_change_key_case and sorting with SORT_FLAG_CASE use ASCII case
conversion.
- SPL:
. The following methods now enforce their signature:
* SplFileInfo::_bad_state_ex()
* SplFileObject::getCsvControl()
* SplFileObject::fflush()
* SplFileObject::ftell()
* SplFileObject::fgetc()
* SplFileObject::fpassthru()
. SplFileObject::hasChildren() now has a tentative return type of false,
previously it was bool
. SplFileObject::getChildren() now has a tentative return type of null,
previously it was ?RecursiveIterator
========================================
2. New Features
========================================
- Core:
. Added the #[\SensitiveParameter] attribute to redact sensitive data in
backtraces.
RFC: https://wiki.php.net/rfc/redact_parameters_in_back_traces
. It is now possible to use null and false as standalone types.
RFC: https://wiki.php.net/rfc/null-false-standalone-types
- Curl:
. Added CURLINFO_EFFECTIVE_METHOD option and returning the effective
HTTP method in curl_getinfo() return value.
- OCI8:
. Added an oci8.prefetch_lob_size directive and oci_set_prefetch_lob()
function to tune LOB query performance by reducing the number of
round-trips between PHP and Oracle Database when fetching LOBS. This is
usable with Oracle Database 12.2 or later.
- PCRE:
. Added support for the "n" (NO_AUTO_CAPTURE) modifier, which makes simple
`(xyz)` groups non-capturing. Only named groups like `(?<name>xyz)` are
capturing. This only affects which groups are capturing, it is still
possible to use numbered subpattern references, and the matches array will
still contain numbered results.
========================================
3. Changes in SAPI modules
========================================
========================================
4. Deprecated Functionality
========================================
- Core:
. Creation of dynamic properties is deprecated, unless the class opts in by
using the #[AllowDynamicProperties] attribute. stdClass allows dynamic
properties. Usage of __get()/__set() is not affected by this change. A
dynamic properties deprecation warning can be addressed by:
- Declaring the property (preferred).
- Adding the #[AllowDynamicProperties] attribute to the class (which also
applies to all child classes).
- Using a WeakMap if you wish to associate additional data with an object
you do not own.
. Callables that are not accepted by the $callable() syntax (but are accepted
by call_user_func) are deprecated. In particular:
"self::method"
"parent::method"
"static::method"
["self", "method"]
["parent", "method"]
["static", "method"]
["Foo", "Bar::method"]
[new Foo, "Bar::method"]
This does not affect normal method callables like "A::method" or
["A", "method"]. A deprecation notice is only emitted on call. Both
is_callable() and the callable type will silently accept these callables
until support for them is removed entirely.
RFC: https://wiki.php.net/rfc/deprecate_partially_supported_callables
- Mbstring:
. Use of QPrint, Base64, Uuencode, and HTML-ENTITIES 'text encodings' is
deprecated for all Mbstring functions. Unlike all the other text
encodings supported by Mbstring, these do not encode a sequence of
Unicode codepoints, but rather a sequence of raw bytes. It is not
clear what the correct return values for most Mbstring functions should
be when one of these non-encodings is specified. Further, PHP has
separate, built-in implementations of all of them; for example, UUencoded
data can be handled using convert_uuencode/convert_uudecode.
========================================
5. Changed Functions
========================================
- DBA
. dba_open() and dba_popen() now have the following enforced function signature
dba_open(string $path, string $mode, ?string $handler = null, int $permission = 0o644, int $map_size = 0)
. dba_fetch()'s optional skip argument is now at the end in line with
PHP userland semantics its signature now is:
dba_fetch(string|array $key, $dba, int $skip = 0): string|false
The overloaded signature
dba_fetch(string|array $key, $skip, $dba): string|false
is still accepted, but it is recommended to use the new standard variant.
========================================
6. New Functions
========================================
- Sodium:
. sodium_crypto_stream_xchacha20_xor_ic()
- Standard:
. The peak memory usage can now be reset to the current usage thanks to
memory_reset_peak_usage().
========================================
7. New Classes and Interfaces
========================================
========================================
8. Removed Extensions and SAPIs
========================================
========================================
9. Other Changes to Extensions
========================================
- Intl:
. IntlBreakIterator, IntlRuleBasedBreakIterator, IntlCodePointBreakIterator,
IntlPartsIterator, IntlCalendar, IntlCalendar, Collator, IntlIterator,
UConverter, IntlDateFormatter, IntlDatePatternGenerator, MessageFormatter,
ResourceBundle, Spoofchecker, IntlTimeZone and Transliterator instances are
no longer serializable. Previously, they could be serialized, but
unserialization yielded unusable objects or failed.
- OCI8:
. The minimum Oracle Client library version required is now 11.2.
- SQLite3:
. sqlite3.defensive is now PHP_INI_USER.
- Standard:
. getimagesize() now reports the actual image dimensions, bits and channels
of AVIF images. Previously, the dimensions have been reported as 0x0, and
bits and channels have not been reported at all.
- Zip:
. extension updated to 1.20.0 with new methods:
ZipArchive::clearError, getStreamName and getStreamIndex
========================================
10. New Global Constants
========================================
- COM_DOTNET:
. LOCALE_NEUTRAL
- Curl:
. CURLOPT_XFERINFOFUNCTION
- Sockets:
. SO_INCOMING_CPU
========================================
11. Changes to INI File Handling
========================================
========================================
12. Windows Support
========================================
- Core:
. Windows specific error messages are no longer localized, but instead in
English to better match PHP error messages.
- OCI8:
. Since building against Oracle Client 10g is no longer supported anyway,
the configuration option --with-oci8 has been dropped. --with-oci8-11g,
--with-oci8-12c and --with-oci8-19 are still supported.
========================================
13. Other Changes
========================================
========================================
14. Performance Improvements
========================================