|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #79740 serialize() and unserialize() methods can not be called statically
Submitted: 2020-06-26 08:10 UTC Modified: 2020-06-26 10:54 UTC
From: qqqqqwwwww731 at gmail dot com Assigned: nikic (profile)
Status: Closed Package: *General Issues
PHP Version: 7.4.7 OS: Linux
Private report: No CVE-ID: None
 [2020-06-26 08:10 UTC] qqqqqwwwww731 at gmail dot com
is_callable function behavior changed in php 7.4

Test script:
class A
    public function serialize($v)


    public function func($v)


var_dump(is_callable(['A', 'serialize']));

var_dump(is_callable(['A', 'func']));

Expected result:

as in php before 7.4

Actual result:
in php 7.4 we have


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2020-06-26 08:20 UTC]
The correct result is bool(false) for both, which is returned in PHP 8.

What's weird here is that one of the cases returns false and the other true. At least they should be returning the same value.
 [2020-06-26 08:26 UTC]
-Status: Open +Status: Verified
 [2020-06-26 08:26 UTC]
The problem is that we do not set ZEND_ACC_ALLOW_STATIC for serialize/unserialize methods anymore.
 [2020-06-26 08:30 UTC]
-Summary: is_callable issue +Summary: serialize() and unserialize() methods can not be called statically -Status: Verified +Status: Assigned -Assigned To: +Assigned To: nikic
 [2020-06-26 10:54 UTC]
-Status: Assigned +Status: Closed
 [2020-06-26 10:54 UTC]
Fixed by, for some reason the auto-close did not trigger.
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Fri Apr 12 20:01:30 2024 UTC