#26762 [Bgs]: unserialize() produces lowercase classnames

From: Date: Fri, 02 Jan 2004 02:25:01 +0000
Subject: #26762 [Bgs]: unserialize() produces lowercase classnames
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-52688@lists.php.net to get a copy of this message
ID: 26762 Updated by: helly@php.net Reported By: mail at alexanderklein dot de Status: Bogus Bug Type: Class/Object related -Operating System: Linux & Win32 +Operating System: * PHP Version: 5.0.0b3 (beta3) New Comment: Behavior is correct as you can see below: marcus@zaphod /usr/src/php5 $ php -r 'class FOO{}$o=new FOO;var_dump(serialize($o));' string(14) "O:3:"FOO":0:{}" marcus@zaphod /usr/src/php5 $ php -r '$o=unserialize("O:3:\"FOO\":0:{}");var_dump($o);' object(__PHP_Incomplete_Class)#1 (1) { ["__PHP_Incomplete_Class_Name"]=> string(3) "foo" } marcus@zaphod /usr/src/php5 $ php -r 'class FOO{}$o=unserialize("O:3:\"FOO\":0:{}");var_dump($o);' object(FOO)#1 (0) { } Previous Comments: ------------------------------------------------------------------------ [2004-01-01 20:21:26] mail at alexanderklein dot de Ok, you say > In php class names are not case sensitive and are > stored in lowercase form internally. but why does the __autoload() function not convert to lowercase if i make an instance like "new myTestWithUpper"? this is a _little_ bit confusing :-( ------------------------------------------------------------------------ [2004-01-01 19:42:50] iliaa@php.net Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php In php class names are not case sensitive and are stored in lowercase form internally. ------------------------------------------------------------------------ [2004-01-01 18:24:39] mail at alexanderklein dot de A short sample script STEP One: function __autoload($sClass) { echo $sClass."<br>"; } ini_set( 'unserialize_callback_func', '__autoload' ); class myTestWithUpper { public $test; protected function __sleep() { return array('test'); } } file_put_contents( "./test.dat", serialize( new myTestWithUpper() ) ); STEP Two: unserialize( file_get_contents ("./test.dat") ); ------------------------------------------------------------------------ [2004-01-01 18:04:25] mail at alexanderklein dot de Description: ------------ I use the __autoload($sClass) feature, and the $sClass names are always transmitted as is. With upper and lower characters. But when i cache a class with serialize and try to unserialize, the $sClass names are only lowercase. System 1 System Windows NT 5.1 Build Date Jan 1 2004 16:06:44 Server API CGI/FastCGI PHP API 20031224 PHP Extension 20020429 Zend Extension 90021012 System 2 System Linux * 2.4.18 #1 SMP i686 Build Date Dec 23 2003 04:48:50 Server API Apache Virtual Directory Support disabled PHP API 20031103 PHP Extension 20020429 Zend Extension 90021012 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=26762&edit=1

« previous php.bugs (#52688) next »