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

📄 bug38450_1.phpt

📁 PHP v6.0 For Linux 运行环境:Win9X/ WinME/ WinNT/ Win2K/ WinXP
💻 PHPT
字号:
--TEST--Bug #38450 (constructor is not called for classes used in userspace stream wrappers)--FILE--<?phpclass VariableStream {	var $position;	var $varname;	function __construct($var) {		var_dump("constructor!");	}	function stream_open($path, $mode, $options, &$opened_path)	{		$url = parse_url($path);		$this->varname = $url["host"];		$this->position = 0;		return true;	}	function stream_read($count)	{		$ret = substr($GLOBALS[$this->varname], $this->position, $count);		$this->position += strlen($ret);		return $ret;	}	function stream_write($data)	{		$left = substr($GLOBALS[$this->varname], 0, $this->position);		$right = substr($GLOBALS[$this->varname], $this->position + strlen($data));		$GLOBALS[$this->varname] = $left . $data . $right;		$this->position += strlen($data);		return strlen($data);	}	function stream_tell()	{		return $this->position;	}	function stream_eof()	{		return $this->position >= strlen($GLOBALS[$this->varname]);	}	function stream_seek($offset, $whence)	{		switch ($whence) {		case SEEK_SET:			if ($offset < strlen($GLOBALS[$this->varname]) && $offset >= 0) {				$this->position = $offset;				return true;			} else {				return false;			}			break;		case SEEK_CUR:			if ($offset >= 0) {				$this->position += $offset;				return true;			} else {				return false;			}			break;		case SEEK_END:			if (strlen($GLOBALS[$this->varname]) + $offset >= 0) {				$this->position = strlen($GLOBALS[$this->varname]) + $offset;				return true;			} else {				return false;			}			break;		default:			return false;		}	}}stream_wrapper_register("var", "VariableStream")	or die("Failed to register protocol");$myvar = "";$fp = fopen("var://myvar", "r+");fwrite($fp, "line1\n");fwrite($fp, "line2\n");fwrite($fp, "line3\n");rewind($fp);while (!feof($fp)) {	echo fgets($fp);}fclose($fp);var_dump($myvar);echo "Done\n";?>--EXPECTF--	Warning: Missing argument 1 for VariableStream::__construct() in %s on line %dstring(12) "constructor!"line1line2line3string(18) "line1line2line3"Done--UEXPECTF--Warning: Missing argument 1 for VariableStream::__construct() in %s on line %dunicode(12) "constructor!"line1line2line3string(18) "line1line2line3"Done

⌨️ 快捷键说明

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