Return to include_userstream_001.phpt CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / standard / tests / file |
1.1 misho 1: --TEST-- 2: User streams and include() 3: --INI-- 4: allow_url_fopen=1 5: allow_url_include=0 6: --FILE-- 7: <?php 8: class test { 9: private $data = '<?php echo "Hello World\n";?>'; 10: private $pos; 11: 12: function stream_open($path, $mode, $options, &$opened_path) 13: { 14: if (strchr($mode, 'a')) 15: $this->pos = strlen($this->data); 16: else 17: $this->po = 0; 18: 19: return true; 20: } 21: 22: function stream_read($count) 23: { 24: $ret = substr($this->data, $this->pos, $count); 25: $this->pos += strlen($ret); 26: return $ret; 27: } 28: 29: function stream_tell() 30: { 31: return $this->pos; 32: } 33: 34: function stream_eof() 35: { 36: return $this->pos >= strlen($this->data); 37: } 38: 39: function stream_seek($offset, $whence) 40: { 41: switch($whence) { 42: case SEEK_SET: 43: if ($offset < $this->data && $offset >= 0) { 44: $this->pos = $offset; 45: return true; 46: } else { 47: return false; 48: } 49: break; 50: case SEEK_CUR: 51: if ($offset >= 0) { 52: $this->pos += $offset; 53: return true; 54: } else { 55: return false; 56: } 57: break; 58: case SEEK_END: 59: if (strlen($this->data) + $offset >= 0) { 60: $this->pos = strlen($this->data) + $offset; 61: return true; 62: } else { 63: return false; 64: } 65: break; 66: default: 67: return false; 68: } 69: } 70: 71: } 72: 73: stream_register_wrapper("test1", "test", STREAM_IS_URL); 74: stream_register_wrapper("test2", "test"); 75: echo @file_get_contents("test1://hello"),"\n"; 76: @include "test1://hello"; 77: echo @file_get_contents("test2://hello"),"\n"; 78: @include "test2://hello"; 79: --EXPECT-- 80: <?php echo "Hello World\n";?> 81: <?php echo "Hello World\n";?> 82: Hello World