⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 005.phpt

📁 PHP v6.0 For Linux 运行环境:Win9X/ WinME/ WinNT/ Win2K/ WinXP
💻 PHPT
字号:
--TEST--serialize()/unserialize() objects--SKIPIF--<?php if (!interface_exists('Serializable')) die('skip Interface Serialzable not defined'); ?>--FILE--<?php// This test verifies that old and new style (un)serializing do not interfere.function do_autoload($class_name){	if ($class_name != 'autoload_not_available')	{		require_once(dirname(__FILE__) . '/' . strtolower($class_name) . '.p5c');	}	echo __FUNCTION__ . "($class_name)\n";}function unserializer($class_name){	echo __METHOD__ . "($class_name)\n";	switch($class_name)	{	case 'TestNAOld':		eval("class TestNAOld extends TestOld {}");		break;	case 'TestNANew':		eval("class TestNANew extends TestNew {}");		break;	case 'TestNANew2':		eval("class TestNANew2 extends TestNew {}");		break;	default:		echo "Try __autoload()\n";		if (!function_exists('__autoload'))		{			eval('function __autoload($class_name) { do_autoload($class_name); }');		}		__autoload($class_name);		break;	}}ini_set('unserialize_callback_func', 'unserializer');class TestOld{	function serialize()	{		echo __METHOD__ . "()\n";	}		function unserialize($serialized)	{		echo __METHOD__ . "()\n";	}		function __wakeup()	{		echo __METHOD__ . "()\n";	}		function __sleep()	{		echo __METHOD__ . "()\n";		return array();	}}class TestNew implements Serializable{	protected static $check = 0;	function serialize()	{		echo __METHOD__ . "()\n";		switch(++self::$check)		{		case 1:			return NULL;		case 2:			return "2";		}	}		function unserialize($serialized)	{		echo __METHOD__ . "()\n";	}		function __wakeup()	{		echo __METHOD__ . "()\n";	}		function __sleep()	{		echo __METHOD__ . "()\n";	}}echo "===O1===\n";var_dump($ser = serialize(new TestOld));var_dump(unserialize($ser));echo "===N1===\n";var_dump($ser = serialize(new TestNew));var_dump(unserialize($ser));echo "===N2===\n";var_dump($ser = serialize(new TestNew));var_dump(unserialize($ser));echo "===NAOld===\n";var_dump(unserialize('O:9:"TestNAOld":0:{}'));echo "===NANew===\n";var_dump(unserialize('O:9:"TestNANew":0:{}'));echo "===NANew2===\n";var_dump(unserialize('C:10:"TestNANew2":0:{}'));echo "===AutoOld===\n";var_dump(unserialize('O:19:"autoload_implements":0:{}'));// Now we have __autoload(), that will be called before the old style header.// If the old style handler also fails to register the class then the object// becomes an incomplete class instance.echo "===AutoNA===\n";var_dump(unserialize('O:22:"autoload_not_available":0:{}'));?>===DONE===<?php exit(0); ?>--EXPECTF--===O1===TestOld::__sleep()string(18) "O:7:"TestOld":0:{}"TestOld::__wakeup()object(TestOld)#%d (0) {}===N1===TestNew::serialize()string(2) "N;"NULL===N2===TestNew::serialize()string(19) "C:7:"TestNew":1:{2}"TestNew::unserialize()object(TestNew)#%d (0) {}===NAOld===unserializer(TestNAOld)TestOld::__wakeup()object(TestNAOld)#%d (0) {}===NANew===unserializer(TestNANew)TestNew::__wakeup()object(TestNANew)#%d (0) {}===NANew2===unserializer(TestNANew2)TestNew::unserialize()object(TestNANew2)#%d (0) {}===AutoOld===unserializer(autoload_implements)Try __autoload()do_autoload(autoload_interface)do_autoload(autoload_implements)object(autoload_implements)#%d (0) {}===AutoNA===do_autoload(autoload_not_available)unserializer(autoload_not_available)Try __autoload()do_autoload(autoload_not_available)do_autoload(autoload_not_available)Warning: unserialize(): Function unserializer() hasn't defined the class it was called for in %s005.php on line %dobject(__PHP_Incomplete_Class)#1 (1) {  ["__PHP_Incomplete_Class_Name"]=>  string(22) "autoload_not_available"}===DONE===--UEXPECTF--===O1===TestOld::__sleep()unicode(18) "O:7:"TestOld":0:{}"TestOld::__wakeup()object(TestOld)#%d (0) {}===N1===TestNew::serialize()unicode(2) "N;"NULL===N2===TestNew::serialize()unicode(19) "C:7:"TestNew":1:{2}"TestNew::unserialize()object(TestNew)#%d (0) {}===NAOld===unserializer(TestNAOld)TestOld::__wakeup()object(TestNAOld)#%d (0) {}===NANew===unserializer(TestNANew)TestNew::__wakeup()object(TestNANew)#%d (0) {}===NANew2===unserializer(TestNANew2)TestNew::unserialize()object(TestNANew2)#%d (0) {}===AutoOld===unserializer(autoload_implements)Try __autoload()do_autoload(autoload_interface)do_autoload(autoload_implements)object(autoload_implements)#%d (0) {}===AutoNA===do_autoload(autoload_not_available)unserializer(autoload_not_available)Try __autoload()do_autoload(autoload_not_available)do_autoload(autoload_not_available)Warning: unserialize(): Function unserializer() hasn't defined the class it was called for in %s005.php on line %dobject(__PHP_Incomplete_Class)#1 (1) {  [u"__PHP_Incomplete_Class_Name"]=>  unicode(22) "autoload_not_available"}===DONE===

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -