or overloaded functions and methods. The issue is that a function might
set and rely on a certain mode and then calls another internal function
which changes it again, probably changing it back to the normal mode.
With this change we need to drop all calls that change the mode back to
normal using php_std_error_handling(). However there might be places
where someone wants to restore the last mode. If there is such a case we
need to add two functions one to save and one to restore. I briefly on
this and not all cases are clear, especially one in sqlite but that seems
to be a rather misleading comment. Eitherway I chose to not drop and mark
as deprecated for now.
Here are the signal changes from the 5.3 branch that optimizes signal
handler registration and switches from longjmp to siglongjmp in order
to make signal mask handling consistent across different UNIX operating
systems.
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);
}
checking for both (class from current namespace and internal class)
- improved class fetching performance
- fixed wrong (lowercase) name passed to __autoload() from call_user_func()
namespace A;
B::foo(); // 1. this is function "foo" from namespace "B"
// 2. this is static method "foo" of class "B" from namespace "A"
// 3. this is static methos "boo" of internal class "B"
namespace A;
A::foo(); // 1. this is function "foo" from namespace "A"
// 2. this is static method "foo" of class "A" from namespace "A"
// 3. this is static methos "foo" of internal class "A"