1--TEST--
2Test token_get_all() function : usage variations - with predefined language constants
3--SKIPIF--
4<?php if (!extension_loaded("tokenizer")) print "skip"; ?>
5--FILE--
6<?php
7/*
8 * Testing token_get_all() with following predefined language constants:
9 *   __FILE__     - T_FILE
10 *   __CLASS__    - T_CLASS_C
11 *   __TRAIT__    - T_TRAIT_C
12 *   __FUNCTION__ - T_FUNC_C
13 *   __LINE__     - T_LINE
14 *   __METHOD__   - T_METHOD_C
15*/
16
17echo "*** Testing token_get_all() : with language constants ***\n";
18
19// parsing __FILE__ token
20echo "-- with FILE --\n";
21$source = "<?php
22\$fp =  fopen(__FILE__, 'r');
23?>";
24var_dump( token_get_all($source));
25
26// parsing __CLASS__, __TRAIT__ and __FUNCTION__ tokens
27echo "-- with CLASS, TRAIT and FUNCTION --\n";
28$source = '<?php
29class MyClass
30{
31  echo  __CLASS__;
32  echo  __TRAIT__;
33  function myFunction()
34  {  echo  __FUNCTION__; }
35}
36?>';
37var_dump( token_get_all($source));
38
39// parsing __LINE__ and __METHOD__ tokens
40echo "-- with LINE and METHOD --\n";
41$source = '<?php
42  $a = __LINE__;
43  $b = $b.__METHOD__;
44?>';
45var_dump( token_get_all($source));
46
47echo "Done"
48?>
49--EXPECTF--
50*** Testing token_get_all() : with language constants ***
51-- with FILE --
52array(15) {
53  [0]=>
54  array(3) {
55    [0]=>
56    int(%d)
57    [1]=>
58    string(6) "<?php
59"
60    [2]=>
61    int(1)
62  }
63  [1]=>
64  array(3) {
65    [0]=>
66    int(%d)
67    [1]=>
68    string(3) "$fp"
69    [2]=>
70    int(2)
71  }
72  [2]=>
73  array(3) {
74    [0]=>
75    int(%d)
76    [1]=>
77    string(1) " "
78    [2]=>
79    int(2)
80  }
81  [3]=>
82  string(1) "="
83  [4]=>
84  array(3) {
85    [0]=>
86    int(%d)
87    [1]=>
88    string(2) "  "
89    [2]=>
90    int(2)
91  }
92  [5]=>
93  array(3) {
94    [0]=>
95    int(%d)
96    [1]=>
97    string(5) "fopen"
98    [2]=>
99    int(2)
100  }
101  [6]=>
102  string(1) "("
103  [7]=>
104  array(3) {
105    [0]=>
106    int(%d)
107    [1]=>
108    string(8) "__FILE__"
109    [2]=>
110    int(2)
111  }
112  [8]=>
113  string(1) ","
114  [9]=>
115  array(3) {
116    [0]=>
117    int(%d)
118    [1]=>
119    string(1) " "
120    [2]=>
121    int(2)
122  }
123  [10]=>
124  array(3) {
125    [0]=>
126    int(%d)
127    [1]=>
128    string(3) "'r'"
129    [2]=>
130    int(2)
131  }
132  [11]=>
133  string(1) ")"
134  [12]=>
135  string(1) ";"
136  [13]=>
137  array(3) {
138    [0]=>
139    int(%d)
140    [1]=>
141    string(1) "
142"
143    [2]=>
144    int(2)
145  }
146  [14]=>
147  array(3) {
148    [0]=>
149    int(%d)
150    [1]=>
151    string(2) "?>"
152    [2]=>
153    int(%d)
154  }
155}
156-- with CLASS, TRAIT and FUNCTION --
157array(35) {
158  [0]=>
159  array(3) {
160    [0]=>
161    int(%d)
162    [1]=>
163    string(6) "<?php
164"
165    [2]=>
166    int(1)
167  }
168  [1]=>
169  array(3) {
170    [0]=>
171    int(%d)
172    [1]=>
173    string(5) "class"
174    [2]=>
175    int(2)
176  }
177  [2]=>
178  array(3) {
179    [0]=>
180    int(%d)
181    [1]=>
182    string(1) " "
183    [2]=>
184    int(2)
185  }
186  [3]=>
187  array(3) {
188    [0]=>
189    int(%d)
190    [1]=>
191    string(7) "MyClass"
192    [2]=>
193    int(2)
194  }
195  [4]=>
196  array(3) {
197    [0]=>
198    int(%d)
199    [1]=>
200    string(1) "
201"
202    [2]=>
203    int(2)
204  }
205  [5]=>
206  string(1) "{"
207  [6]=>
208  array(3) {
209    [0]=>
210    int(%d)
211    [1]=>
212    string(3) "
213  "
214    [2]=>
215    int(%d)
216  }
217  [7]=>
218  array(3) {
219    [0]=>
220    int(%d)
221    [1]=>
222    string(4) "echo"
223    [2]=>
224    int(4)
225  }
226  [8]=>
227  array(3) {
228    [0]=>
229    int(%d)
230    [1]=>
231    string(2) "  "
232    [2]=>
233    int(4)
234  }
235  [9]=>
236  array(3) {
237    [0]=>
238    int(%d)
239    [1]=>
240    string(9) "__CLASS__"
241    [2]=>
242    int(4)
243  }
244  [10]=>
245  string(1) ";"
246  [11]=>
247  array(3) {
248    [0]=>
249    int(%d)
250    [1]=>
251    string(3) "
252  "
253    [2]=>
254    int(%d)
255  }
256  [12]=>
257  array(3) {
258    [0]=>
259    int(%d)
260    [1]=>
261    string(4) "echo"
262    [2]=>
263    int(5)
264  }
265  [13]=>
266  array(3) {
267    [0]=>
268    int(%d)
269    [1]=>
270    string(2) "  "
271    [2]=>
272    int(5)
273  }
274  [14]=>
275  array(3) {
276    [0]=>
277    int(%d)
278    [1]=>
279    string(9) "__TRAIT__"
280    [2]=>
281    int(5)
282  }
283  [15]=>
284  string(1) ";"
285  [16]=>
286  array(3) {
287    [0]=>
288    int(%d)
289    [1]=>
290    string(3) "
291  "
292    [2]=>
293    int(5)
294  }
295  [17]=>
296  array(3) {
297    [0]=>
298    int(%d)
299    [1]=>
300    string(8) "function"
301    [2]=>
302    int(6)
303  }
304  [18]=>
305  array(3) {
306    [0]=>
307    int(%d)
308    [1]=>
309    string(1) " "
310    [2]=>
311    int(6)
312  }
313  [19]=>
314  array(3) {
315    [0]=>
316    int(%d)
317    [1]=>
318    string(10) "myFunction"
319    [2]=>
320    int(6)
321  }
322  [20]=>
323  string(1) "("
324  [21]=>
325  string(1) ")"
326  [22]=>
327  array(3) {
328    [0]=>
329    int(%d)
330    [1]=>
331    string(3) "
332  "
333    [2]=>
334    int(6)
335  }
336  [23]=>
337  string(1) "{"
338  [24]=>
339  array(3) {
340    [0]=>
341    int(%d)
342    [1]=>
343    string(2) "  "
344    [2]=>
345    int(7)
346  }
347  [25]=>
348  array(3) {
349    [0]=>
350    int(%d)
351    [1]=>
352    string(4) "echo"
353    [2]=>
354    int(7)
355  }
356  [26]=>
357  array(3) {
358    [0]=>
359    int(%d)
360    [1]=>
361    string(2) "  "
362    [2]=>
363    int(7)
364  }
365  [27]=>
366  array(3) {
367    [0]=>
368    int(%d)
369    [1]=>
370    string(12) "__FUNCTION__"
371    [2]=>
372    int(7)
373  }
374  [28]=>
375  string(1) ";"
376  [29]=>
377  array(3) {
378    [0]=>
379    int(%d)
380    [1]=>
381    string(1) " "
382    [2]=>
383    int(7)
384  }
385  [30]=>
386  string(1) "}"
387  [31]=>
388  array(3) {
389    [0]=>
390    int(%d)
391    [1]=>
392    string(1) "
393"
394    [2]=>
395    int(7)
396  }
397  [32]=>
398  string(1) "}"
399  [33]=>
400  array(3) {
401    [0]=>
402    int(%d)
403    [1]=>
404    string(1) "
405"
406    [2]=>
407    int(8)
408  }
409  [34]=>
410  array(3) {
411    [0]=>
412    int(%d)
413    [1]=>
414    string(2) "?>"
415    [2]=>
416    int(9)
417  }
418}
419-- with LINE and METHOD --
420array(19) {
421  [0]=>
422  array(3) {
423    [0]=>
424    int(%d)
425    [1]=>
426    string(6) "<?php
427"
428    [2]=>
429    int(1)
430  }
431  [1]=>
432  array(3) {
433    [0]=>
434    int(%d)
435    [1]=>
436    string(2) "  "
437    [2]=>
438    int(2)
439  }
440  [2]=>
441  array(3) {
442    [0]=>
443    int(%d)
444    [1]=>
445    string(2) "$a"
446    [2]=>
447    int(2)
448  }
449  [3]=>
450  array(3) {
451    [0]=>
452    int(%d)
453    [1]=>
454    string(1) " "
455    [2]=>
456    int(2)
457  }
458  [4]=>
459  string(1) "="
460  [5]=>
461  array(3) {
462    [0]=>
463    int(%d)
464    [1]=>
465    string(1) " "
466    [2]=>
467    int(2)
468  }
469  [6]=>
470  array(3) {
471    [0]=>
472    int(%d)
473    [1]=>
474    string(8) "__LINE__"
475    [2]=>
476    int(2)
477  }
478  [7]=>
479  string(1) ";"
480  [8]=>
481  array(3) {
482    [0]=>
483    int(%d)
484    [1]=>
485    string(3) "
486  "
487    [2]=>
488    int(2)
489  }
490  [9]=>
491  array(3) {
492    [0]=>
493    int(%d)
494    [1]=>
495    string(2) "$b"
496    [2]=>
497    int(%d)
498  }
499  [10]=>
500  array(3) {
501    [0]=>
502    int(%d)
503    [1]=>
504    string(1) " "
505    [2]=>
506    int(%d)
507  }
508  [11]=>
509  string(1) "="
510  [12]=>
511  array(3) {
512    [0]=>
513    int(%d)
514    [1]=>
515    string(1) " "
516    [2]=>
517    int(%d)
518  }
519  [13]=>
520  array(3) {
521    [0]=>
522    int(%d)
523    [1]=>
524    string(2) "$b"
525    [2]=>
526    int(%d)
527  }
528  [14]=>
529  string(1) "."
530  [15]=>
531  array(3) {
532    [0]=>
533    int(%d)
534    [1]=>
535    string(10) "__METHOD__"
536    [2]=>
537    int(%d)
538  }
539  [16]=>
540  string(1) ";"
541  [17]=>
542  array(3) {
543    [0]=>
544    int(%d)
545    [1]=>
546    string(1) "
547"
548    [2]=>
549    int(%d)
550  }
551  [18]=>
552  array(3) {
553    [0]=>
554    int(%d)
555    [1]=>
556    string(2) "?>"
557    [2]=>
558    int(4)
559  }
560}
561Done
562