1--TEST-- 2Test fgetc() function : usage variations - different read modes 3--FILE-- 4<?php 5/* 6 Prototype: string fgetc ( resource $handle ); 7 Description: Gets character from file pointer 8*/ 9 10/* read from fie using fgetc, file opened using different 11 read read modes */ 12 13echo "*** Testing fgetc() : usage variations ***\n"; 14echo "-- Testing fgetc() with files opened with different read modes --\n"; 15 16$file_modes = array( "a+", "a+b", "a+t", 17 "x+", "x+b", "x+t", 18 "w+", "w+b", "w+t" ); 19 20$filename = __DIR__."/fgetc_variation4.tmp"; 21foreach ($file_modes as $file_mode ) { 22 echo "-- File opened in mode : $file_mode --\n"; 23 24 $file_handle = fopen($filename, $file_mode); 25 if(!$file_handle) { 26 echo "Error: failed to open file $filename!\n"; 27 exit(); 28 } 29 $data = "fgetc\n test"; 30 fwrite($file_handle, $data); 31 32 // rewind the file pointer to beginning of the file 33 var_dump( rewind($file_handle) ); 34 var_dump( ftell($file_handle) ); 35 var_dump( feof($file_handle) ); 36 37 // read from file, at least 7 chars 38 for($counter =0; $counter < 7; $counter ++) { 39 var_dump( fgetc($file_handle) ); // expected : 1 char 40 var_dump( ftell($file_handle) ); 41 var_dump( feof($file_handle) ); // check if end of file pointer is set 42 } 43 44 // close the file 45 fclose($file_handle); 46 47 // delete the file 48 unlink($filename); 49} 50 51echo "Done\n"; 52?> 53--EXPECT-- 54 *** Testing fgetc() : usage variations *** 55-- Testing fgetc() with files opened with different read modes -- 56-- File opened in mode : a+ -- 57bool(true) 58int(0) 59bool(false) 60string(1) "f" 61int(1) 62bool(false) 63string(1) "g" 64int(2) 65bool(false) 66string(1) "e" 67int(3) 68bool(false) 69string(1) "t" 70int(4) 71bool(false) 72string(1) "c" 73int(5) 74bool(false) 75string(1) " 76" 77int(6) 78bool(false) 79string(1) " " 80int(7) 81bool(false) 82-- File opened in mode : a+b -- 83bool(true) 84int(0) 85bool(false) 86string(1) "f" 87int(1) 88bool(false) 89string(1) "g" 90int(2) 91bool(false) 92string(1) "e" 93int(3) 94bool(false) 95string(1) "t" 96int(4) 97bool(false) 98string(1) "c" 99int(5) 100bool(false) 101string(1) " 102" 103int(6) 104bool(false) 105string(1) " " 106int(7) 107bool(false) 108-- File opened in mode : a+t -- 109bool(true) 110int(0) 111bool(false) 112string(1) "f" 113int(1) 114bool(false) 115string(1) "g" 116int(2) 117bool(false) 118string(1) "e" 119int(3) 120bool(false) 121string(1) "t" 122int(4) 123bool(false) 124string(1) "c" 125int(5) 126bool(false) 127string(1) " 128" 129int(6) 130bool(false) 131string(1) " " 132int(7) 133bool(false) 134-- File opened in mode : x+ -- 135bool(true) 136int(0) 137bool(false) 138string(1) "f" 139int(1) 140bool(false) 141string(1) "g" 142int(2) 143bool(false) 144string(1) "e" 145int(3) 146bool(false) 147string(1) "t" 148int(4) 149bool(false) 150string(1) "c" 151int(5) 152bool(false) 153string(1) " 154" 155int(6) 156bool(false) 157string(1) " " 158int(7) 159bool(false) 160-- File opened in mode : x+b -- 161bool(true) 162int(0) 163bool(false) 164string(1) "f" 165int(1) 166bool(false) 167string(1) "g" 168int(2) 169bool(false) 170string(1) "e" 171int(3) 172bool(false) 173string(1) "t" 174int(4) 175bool(false) 176string(1) "c" 177int(5) 178bool(false) 179string(1) " 180" 181int(6) 182bool(false) 183string(1) " " 184int(7) 185bool(false) 186-- File opened in mode : x+t -- 187bool(true) 188int(0) 189bool(false) 190string(1) "f" 191int(1) 192bool(false) 193string(1) "g" 194int(2) 195bool(false) 196string(1) "e" 197int(3) 198bool(false) 199string(1) "t" 200int(4) 201bool(false) 202string(1) "c" 203int(5) 204bool(false) 205string(1) " 206" 207int(6) 208bool(false) 209string(1) " " 210int(7) 211bool(false) 212-- File opened in mode : w+ -- 213bool(true) 214int(0) 215bool(false) 216string(1) "f" 217int(1) 218bool(false) 219string(1) "g" 220int(2) 221bool(false) 222string(1) "e" 223int(3) 224bool(false) 225string(1) "t" 226int(4) 227bool(false) 228string(1) "c" 229int(5) 230bool(false) 231string(1) " 232" 233int(6) 234bool(false) 235string(1) " " 236int(7) 237bool(false) 238-- File opened in mode : w+b -- 239bool(true) 240int(0) 241bool(false) 242string(1) "f" 243int(1) 244bool(false) 245string(1) "g" 246int(2) 247bool(false) 248string(1) "e" 249int(3) 250bool(false) 251string(1) "t" 252int(4) 253bool(false) 254string(1) "c" 255int(5) 256bool(false) 257string(1) " 258" 259int(6) 260bool(false) 261string(1) " " 262int(7) 263bool(false) 264-- File opened in mode : w+t -- 265bool(true) 266int(0) 267bool(false) 268string(1) "f" 269int(1) 270bool(false) 271string(1) "g" 272int(2) 273bool(false) 274string(1) "e" 275int(3) 276bool(false) 277string(1) "t" 278int(4) 279bool(false) 280string(1) "c" 281int(5) 282bool(false) 283string(1) " 284" 285int(6) 286bool(false) 287string(1) " " 288int(7) 289bool(false) 290Done 291