If a parameter with a default value is followed by a required parameter, the default value has
no effect. This is deprecated as of PHP 8.0.0 and can generally be resolved by dropping the
default value, without a change in functionality:
<?php
function test($a = [], $b) {} // Before
function test($a, $b) {} // After
?>
One exception to this rule are parameters of the form Type $param = null, where
the null default makes the type implicitly nullable. This usage remains allowed, but it is
recommended to use an explicit nullable type instead:
<?php
function test(A $a = null, $b) {} // Still allowed
function test(?A $a, $b) {} // Recommended
?>
libxml_disable_entity_loader() has been deprecated. As libxml 2.9.0 is now
required, external entity loading is guaranteed to be disabled by default, and this function is
no longer needed to protect against XXE attacks, unless the (still vulnerable)
LIBXML_NOENT is used.
In that case, it is recommended to refactor the code using
libxml_set_external_entity_loader() to suppress loading of external entities.
Sort comparison functions that return true or false will now throw a deprecation warning, and
should be replaced with an implementation that returns an integer less than, equal to, or greater
than zero.
Using an empty file as ZipArchive is deprecated. Libzip 1.6.0 does not accept empty files as
valid zip archives any longer. The existing workaround will be removed in the next version.
The procedural API of Zip is deprecated. Use ZipArchive instead.
Iteration over all entries can be accomplished using ZipArchive::statIndex()
and a for loop:
<?php
// iterate using the procedural API
assert(is_resource($zip));
while ($entry = zip_read($zip)) {
echo zip_entry_name($entry);
}
// iterate using the object-oriented API
assert($zip instanceof ZipArchive);
for ($i = 0; $entry = $zip->statIndex($i); $i++) {
echo $entry['name'];
}
?>