| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
protected classes)
|
| |
|
| |
|
|
|
|
|
| |
functions for bool, double and binary safe string data
|
| |
|
| |
|
|
|
|
|
|
|
| |
- Extensions which delete global variables need to use new special function
- delete_global_variable() (I'm about to rename it) to remove them.
- Will post to internals@ or via commit messages if there's anything else.
|
| |
|
|
|
|
|
|
| |
- Check signature of magic methods
- Register __get/__set/__call for internal classes
|
| |
|
|
|
|
|
| |
- Register __get/__set/__call for internal classes
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
used to return "" and not bool(false). It's not worth keeping it because
STR_FREE() and zval_dtor() always have to check for it and it slows down
the general case. In addition, it seems that empty_string has been abused
quite a lot, and was used not only for setting zval's but generally in
PHP code instead of "", which wasn't the intention. Last but not least,
nuking empty_string should improve stability as I doubt every place
correctly checked if they are not mistakenly erealloc()'ing it or
calling efree() on it.
NOTE: Some code is probably broken. Each extension maintainer should
check and see that my changes are OK. Also, I haven't had time to touch
PECL yet. Will try and do it tomorrow.
|
| |
|
| |
|
|
|
|
|
|
| |
- Add ability to get the extension an internal class was defined in
# This is the patch Andi and me used to search for underscrores...
|
|
|
|
|
|
| |
extensions. The new hook will be run after the symbol table and destructors
are run. (Derick)
|
|
|
|
|
|
| |
zend_parse_method_parameters().
# Obviously its only place of use is in pdo just right now.
|
|
|
|
|
| |
- Initial fix for foreach($o->mthd()->arr) crash (now leaks)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Add infrastructure for built-in functions to hint whether they
return by reference or not. It is NOT currently used for anything,
except for interface prototypes (you can use it to request that the
function that implements your prototype returns by reference or
doesn't return by reference).
For downwards compatibility - by default, interface prototypes are
agnostic as to whether the function that implements them returns
by reference or not. Use ZEND_BEGIN_ARG_INFO_EX() with
ZEND_RETURN_VALUE/ZEND_RETURN_REFERENCE to change that.
- Fix ArrayAccess::getOffset() to conduct additional checks.
If your getOffset() should work with multidimensional arrays - it
must return by reference.
|
|
|
|
|
| |
and its MINIT function has been called.
|
|
|
|
|
| |
# by popular demand, more and more exts need this
|
|
|
|
|
| |
# Should the LICENSE and Zend/LICENSE dates be updated too?
|
|
|
|
|
| |
# You need to completley rebuild PHP after this patch.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
This is needed because one cannot use REPLACE_ZVAL_VALUE with return_value.
|
| |
|
|
|
|
|
|
| |
At the moment this function only converts strings of the form class::method
to an array(class,method).
|
|
|
|
|
|
| |
In short: zend_class_entry->interface_gets_implemented() allows to modify
the class entry of a class when an interface gets implemented.
|
| |
|
|
|
|
|
| |
# After 4 Month work and endless discussions...
|
| |
|
|
|
|
| |
reflection api.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
- Explain drawbacks of object_and_properties_init and zend_merge_properties.
#
# I guess we can live with the purity problem of potentially calling __set()
# of an object which wasn't already ctored.
#
|
|
|
|
|
|
| |
- Allow internal zval's of type string and disallow complex types.
- Define the default string for extensions at class level instead of ctor.
|
| |
|
| |
|
|
|
|
|
| |
- Unify way of function_entry generation by new macro ZEND_FENTRY
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
zend_call_function() now takes a structure that should contain all of the
necessary information. If further information is necessary in the future,
then we'll be able to add it without having to introduce a new function.
As for caching - the 2nd, optional argument is a struct that can hold all
of the information that's necessary to invoke the function, including its
handler, scope and object it operates on (if any). Note that you may only
use a cache if the arguments you provide to zend_call_function() are
identical to the ones of the last call, except for the argument and return
value information.
The recently introduced fast_call_user_function() was removed
I fixed most of the places that used fast_call_user_function() to use caching
but there are still some that need to be fixed (XML and reflection)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
including:
- Whether or not to pass by ref (replaces the old arg_types, with arg_info)
- Argument name (for future use, maybe introspection)
- Class/Interface name (for type hints)
- If a class/interface name is available, whether to allow a null instance
Both user and builtin functions share the same data structures.
To declare a builtin function that expects its first arg to be an instance
of class 'Person', its second argument as a regular arg, and its third by
reference, use:
ZEND_BEGIN_ARG_INFO(my_func_arg_info, 0)
ZEND_ARG_OBJ_INFO(0, someone, Person, 1)
ZEND_ARG_PASS_INFO(0)
ZEND_ARG_PASS_INFO(1)
ZEND_END_ARG_INFO();
and use my_func_arg_info as the arg_info parameter to the ZEND_FE() family
of macros.
The first arg to each ZEND_ARG_*() macro is whether or not to pass by ref.
The boolean arg to ZEND_BEGIN_ARG_INFO() tells the engine whether to treat
the arguments for which there's no explicit information as pass by reference
or not.
The boolean argument to ZEND_ARG_OBJ_INFO() (4th arg) is whether or not to allownull values.
|
|
|
|
|
| |
modules may touch the symbol table reliably
|