Bug #44352 mysqli_connect_error() false negative for host errors
From now on the mysqli object doesn't have that magic properties, like
error, which were readable but not visible through isset(), property_exists()
and var_dump(). All other ext/mysqli classes were fixed too.
Now it will be easier to debug mysqli based applications.
The following pseudo-code explains how it should be used in opcode cache.
function cache_compile_file($filename) {
if (!is_cached($filename)) {
...
orig_compiler_options = CG(compiler_optins);
CG(compiler_options) |= ZEND_COMPILE_IGNORE_INTERNAL_CLASSES |
ZEND_COMPILE_DELAYED_BINDING;
$op_array = orig_compile_file($filename);
CG(compiler_options) = orig_copiler_options;
...
} else {
$op_array = restore_from_cache($filename);
}
zend_do_delayed_early_binding($op_array);
}
[DOC]
# Class FilesystemIterator was introduced to have a better DirectoryIterator
# without having to change DirectoryIterator or RecursiveDirectoryIterator.
# On top of FilterIterator the new GlobIterator was introduced. This one allows
# to implement Countable(). But a glob stream flattens all structure, so it
# cannot be derived from RedursiveIterator. With the new structure all children
# of FilesystemIterator have nearly the same behavior. Just their capabilities
# are a bit different. Check out new inheritance tree on SplFileInfo:
#
# [marcus@frodo PHP_5_3]$ php ext/spl/examples/class_tree.php SplFileInfo
# make: `sapi/cli/php' is up to date.
# SplFileInfo
# |-DirectoryIterator (Iterator)
# | \-FilesystemIterator
# | |-GlobIterator (Countable)
# | \-RecursiveDirectoryIterator (RecursiveIterator)
# | \-Phar (ArrayAccess, Countable)
# |-PharFileInfo
# \-SplFileObject (RecursiveIterator, SeekableIterator)
# \-SplTempFileObject