Server IP : 192.158.238.246 / Your IP : 3.135.215.148 Web Server : LiteSpeed System : Linux uniform.iwebfusion.net 4.18.0-553.27.1.lve.1.el8.x86_64 #1 SMP Wed Nov 20 15:58:00 UTC 2024 x86_64 User : jenniferflocom ( 1321) PHP Version : 8.1.32 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /opt/cpanel/ea-php80/root/usr/share/tests/pecl/igbinary/tests/ |
Upload File : |
--TEST-- Test unserializing valid and invalid enums --SKIPIF-- <?php if (PHP_VERSION_ID < 80100) { echo "skip enums requires php 8.1"; } ?> --FILE-- <?php class ABCD { } enum Suit { case Hearts; case Diamonds; case Spades; case Clubs; const HEARTS = self::Hearts; } $arr = ['Hearts' => Suit::Hearts]; $arr[1] = &$arr['Hearts']; $serArray = igbinary_serialize($arr); // PHP 8.1 added support for %0 as a null byte in EXPECTF in https://github.com/php/php-src/pull/7069 // Igbinary's use case of urlencode on binary data is rare. // So replace % with \x echo str_replace(['\\', '%'], ['\\\\', '\x'], urlencode($serArray)), "\n"; $result = igbinary_unserialize($serArray); var_dump($result); $result[1] = 'new'; var_dump($result); $serInvalid = str_replace('Hearts', 'HEARTS', $serArray); var_dump(igbinary_unserialize($serInvalid)); $serInvalidConst = str_replace('Hearts', 'vvvvvv', $serArray); var_dump(igbinary_unserialize($serInvalidConst)); $serMissingClass = str_replace('Suit', 'Club', $serArray); var_dump(igbinary_unserialize($serMissingClass)); $serInvalidClass = str_replace('Suit', 'ABCD', $serArray); var_dump(igbinary_unserialize($serInvalidClass)); ?> --EXPECTF-- \x00\x00\x00\x02\x14\x02\x11\x06Hearts\x25\x17\x04Suit\x27\x0E\x00\x06\x01\x25\x22\x01 array(2) { ["Hearts"]=> &enum(Suit::Hearts) [1]=> &enum(Suit::Hearts) } array(2) { ["Hearts"]=> &string(3) "new" [1]=> &string(3) "new" } Warning: igbinary_unserialize_object_enum_case: Suit::HEARTS is not an enum case in %s on line 25 NULL Warning: igbinary_unserialize_object_enum_case: Undefined constant Suit::vvvvvv in %s on line 28 NULL Warning: igbinary_unserialize_object_enum_case: Class 'Club' does not exist in %s on line 31 NULL Warning: igbinary_unserialize_object_enum_case: Class 'ABCD' is not an enum in %s on line 34 NULL