|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
Patchesbug64354.patch (last revision 2013-03-05 08:07 UTC by laruence@php.net)Pull RequestsHistoryAllCommentsChangesGit/SVN commits
[2013-03-05 08:06 UTC] laruence@php.net
[2013-03-05 08:07 UTC] laruence@php.net
[2013-03-05 08:08 UTC] laruence@php.net
[2013-03-06 04:39 UTC] laruence@php.net
[2013-03-09 13:56 UTC] laruence@php.net
[2013-03-09 13:56 UTC] laruence@php.net
-Assigned To:
+Assigned To: mike
[2013-03-09 14:00 UTC] mike@php.net
-Assigned To: mike
+Assigned To: laruence
[2013-03-09 14:00 UTC] mike@php.net
[2013-03-09 15:01 UTC] laruence@php.net
-Status: Assigned
+Status: Closed
[2013-03-09 15:01 UTC] laruence@php.net
[2013-03-09 15:12 UTC] laruence@php.net
[2013-03-09 15:12 UTC] laruence@php.net
[2014-10-07 23:20 UTC] stas@php.net
[2014-10-07 23:31 UTC] stas@php.net
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Mon Nov 03 03:00:01 2025 UTC |
Description: ------------ We have serialized object of class A and array with 2 such objects <?php class A {} echo serialize(new A()).PHP_EOL; echo serialize(array(new A(), new A())).PHP_EOL; ?> Then we write autoload function which throws exception if can't find a file with class. And in first case - we have a normal behaviour (we can catch exception). In second we have uncaughted exception. Test script: --------------- <?php spl_autoload_register( function($class) { if (!file_exists($class.'.php')) throw new Exception(); require_once $class.'.php'; } ); try { var_dump(unserialize('O:1:"A":0:{}')); echo 'Serialized'.PHP_EOL; } catch (Exception $e) { echo 'Failed'.PHP_EOL; } try { var_dump(unserialize('a:2:{i:0;O:1:"A":0:{}i:1;O:1:"A":0:{}}')); echo 'Serialized'.PHP_EOL; } catch (Exception $e) { echo 'Failed'.PHP_EOL; } Expected result: ---------------- Failed Failed Actual result: -------------- Failed PHP Fatal error: Uncaught exception 'Exception' in -:5 Stack trace: #0 [internal function]: {closure}('A') #1 [internal function]: spl_autoload_call('A') #2 -(20): unserialize('a:2:{i:0;O:1:"A...') #3 {main} Next exception 'Exception' in -:5 Stack trace: #0 [internal function]: {closure}('A') #1 -(0): spl_autoload_call('A') #2 {main} thrown in - on line 5