summaryrefslogtreecommitdiff
path: root/Zend/zend_inheritance.c
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2019-02-15 11:28:14 +0100
committerNikita Popov <nikita.ppv@gmail.com>2019-02-15 11:28:14 +0100
commit903821b1c7d6d4e8358608e19c6e47ce4c33ccb5 (patch)
tree9a18f6455e8d11110a7929a85602d4029ff99f8a /Zend/zend_inheritance.c
parentc3b63706a660ca3bf80fc7a062e21049f7b50a3c (diff)
parenta2e953479857451640afa604a533ca177f2a9bf5 (diff)
downloadphp-git-903821b1c7d6d4e8358608e19c6e47ce4c33ccb5.tar.gz
Merge branch 'PHP-7.4'
Diffstat (limited to 'Zend/zend_inheritance.c')
-rw-r--r--Zend/zend_inheritance.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/Zend/zend_inheritance.c b/Zend/zend_inheritance.c
index 072e0b1801..5ffc0b6520 100644
--- a/Zend/zend_inheritance.c
+++ b/Zend/zend_inheritance.c
@@ -124,9 +124,15 @@ static void do_inherit_parent_constructor(zend_class_entry *ce) /* {{{ */
if (EXPECTED(!ce->clone)) {
ce->clone = parent->clone;
}
+ if (EXPECTED(!ce->serialize_func)) {
+ ce->serialize_func = parent->serialize_func;
+ }
if (EXPECTED(!ce->serialize)) {
ce->serialize = parent->serialize;
}
+ if (EXPECTED(!ce->unserialize_func)) {
+ ce->unserialize_func = parent->unserialize_func;
+ }
if (EXPECTED(!ce->unserialize)) {
ce->unserialize = parent->unserialize;
}
@@ -1287,7 +1293,11 @@ static void zend_do_implement_interfaces(zend_class_entry *ce) /* {{{ */
static void zend_add_magic_methods(zend_class_entry* ce, zend_string* mname, zend_function* fe) /* {{{ */
{
- if (ZSTR_VAL(mname)[0] != '_' || ZSTR_VAL(mname)[1] != '_') {
+ if (zend_string_equals_literal(mname, "serialize")) {
+ ce->serialize_func = fe;
+ } else if (zend_string_equals_literal(mname, "unserialize")) {
+ ce->unserialize_func = fe;
+ } else if (ZSTR_VAL(mname)[0] != '_' || ZSTR_VAL(mname)[1] != '_') {
/* pass */
} else if (zend_string_equals_literal(mname, ZEND_CLONE_FUNC_NAME)) {
ce->clone = fe;