1--TEST--
2Test token_get_all() function : usage variations - with function constructs
3--SKIPIF--
4<?php if (!extension_loaded("tokenizer")) print "skip"; ?>
5--FILE--
6<?php
7/*
8 * Testing token_get_all() with different function keywords
9 *   function - T_FUNCTION(333), return - T_RETURN(335)
10 *   different functions:
11 *     include() - T_INCLUDE(262), print() - T_PRINT(266),
12 *     isset() - T_ISSET(349), list() - T_LIST(358),
13 *     require() - T_REQUIRE(259), empty() - T_EMPTY(350),
14 *     declare() - T_DECLARE(324), array() - T_ARRAY(359),
15 *      __halt_compiler() - T_HALT_COMPILER(351)
16*/
17
18echo "*** Testing token_get_all() : with different function constructs ***\n";
19
20$source = '<?php
21declare(VALUE=100);
22include("addfile.php");
23require("sumfile.php");
24
25function myFunction($a)
26{
27  if($a % 2)
28    return 1;
29  else
30    exit;
31}
32
33$a = VALUE;
34$b = 20;
35$c = array(1,2);
36$b >>= 2;
37
38if($b <= 0)
39  die;
40else
41  print($b);
42
43list($value1,$value2) = $c;
44if(empty($value1) && !isset($value1)) {
45  myFunction();
46}
47?>';
48$tokens =  token_get_all($source);
49var_dump($tokens);
50
51echo "Done";
52?>
53--EXPECTF--
54*** Testing token_get_all() : with different function constructs ***
55array(142) {
56  [0]=>
57  array(3) {
58    [0]=>
59    int(%d)
60    [1]=>
61    string(6) "<?php
62"
63    [2]=>
64    int(1)
65  }
66  [1]=>
67  array(3) {
68    [0]=>
69    int(%d)
70    [1]=>
71    string(7) "declare"
72    [2]=>
73    int(2)
74  }
75  [2]=>
76  string(1) "("
77  [3]=>
78  array(3) {
79    [0]=>
80    int(%d)
81    [1]=>
82    string(5) "VALUE"
83    [2]=>
84    int(2)
85  }
86  [4]=>
87  string(1) "="
88  [5]=>
89  array(3) {
90    [0]=>
91    int(%d)
92    [1]=>
93    string(3) "100"
94    [2]=>
95    int(2)
96  }
97  [6]=>
98  string(1) ")"
99  [7]=>
100  string(1) ";"
101  [8]=>
102  array(3) {
103    [0]=>
104    int(%d)
105    [1]=>
106    string(1) "
107"
108    [2]=>
109    int(2)
110  }
111  [9]=>
112  array(3) {
113    [0]=>
114    int(%d)
115    [1]=>
116    string(7) "include"
117    [2]=>
118    int(3)
119  }
120  [10]=>
121  string(1) "("
122  [11]=>
123  array(3) {
124    [0]=>
125    int(%d)
126    [1]=>
127    string(13) ""addfile.php""
128    [2]=>
129    int(3)
130  }
131  [12]=>
132  string(1) ")"
133  [13]=>
134  string(1) ";"
135  [14]=>
136  array(3) {
137    [0]=>
138    int(%d)
139    [1]=>
140    string(1) "
141"
142    [2]=>
143    int(3)
144  }
145  [15]=>
146  array(3) {
147    [0]=>
148    int(%d)
149    [1]=>
150    string(7) "require"
151    [2]=>
152    int(4)
153  }
154  [16]=>
155  string(1) "("
156  [17]=>
157  array(3) {
158    [0]=>
159    int(%d)
160    [1]=>
161    string(13) ""sumfile.php""
162    [2]=>
163    int(4)
164  }
165  [18]=>
166  string(1) ")"
167  [19]=>
168  string(1) ";"
169  [20]=>
170  array(3) {
171    [0]=>
172    int(%d)
173    [1]=>
174    string(2) "
175
176"
177    [2]=>
178    int(4)
179  }
180  [21]=>
181  array(3) {
182    [0]=>
183    int(%d)
184    [1]=>
185    string(8) "function"
186    [2]=>
187    int(6)
188  }
189  [22]=>
190  array(3) {
191    [0]=>
192    int(%d)
193    [1]=>
194    string(1) " "
195    [2]=>
196    int(6)
197  }
198  [23]=>
199  array(3) {
200    [0]=>
201    int(%d)
202    [1]=>
203    string(10) "myFunction"
204    [2]=>
205    int(6)
206  }
207  [24]=>
208  string(1) "("
209  [25]=>
210  array(3) {
211    [0]=>
212    int(%d)
213    [1]=>
214    string(2) "$a"
215    [2]=>
216    int(6)
217  }
218  [26]=>
219  string(1) ")"
220  [27]=>
221  array(3) {
222    [0]=>
223    int(%d)
224    [1]=>
225    string(1) "
226"
227    [2]=>
228    int(6)
229  }
230  [28]=>
231  string(1) "{"
232  [29]=>
233  array(3) {
234    [0]=>
235    int(%d)
236    [1]=>
237    string(3) "
238  "
239    [2]=>
240    int(7)
241  }
242  [30]=>
243  array(3) {
244    [0]=>
245    int(%d)
246    [1]=>
247    string(2) "if"
248    [2]=>
249    int(8)
250  }
251  [31]=>
252  string(1) "("
253  [32]=>
254  array(3) {
255    [0]=>
256    int(%d)
257    [1]=>
258    string(2) "$a"
259    [2]=>
260    int(8)
261  }
262  [33]=>
263  array(3) {
264    [0]=>
265    int(%d)
266    [1]=>
267    string(1) " "
268    [2]=>
269    int(8)
270  }
271  [34]=>
272  string(1) "%"
273  [35]=>
274  array(3) {
275    [0]=>
276    int(%d)
277    [1]=>
278    string(1) " "
279    [2]=>
280    int(8)
281  }
282  [36]=>
283  array(3) {
284    [0]=>
285    int(%d)
286    [1]=>
287    string(1) "2"
288    [2]=>
289    int(8)
290  }
291  [37]=>
292  string(1) ")"
293  [38]=>
294  array(3) {
295    [0]=>
296    int(%d)
297    [1]=>
298    string(5) "
299    "
300    [2]=>
301    int(8)
302  }
303  [39]=>
304  array(3) {
305    [0]=>
306    int(%d)
307    [1]=>
308    string(6) "return"
309    [2]=>
310    int(9)
311  }
312  [40]=>
313  array(3) {
314    [0]=>
315    int(%d)
316    [1]=>
317    string(1) " "
318    [2]=>
319    int(9)
320  }
321  [41]=>
322  array(3) {
323    [0]=>
324    int(%d)
325    [1]=>
326    string(1) "1"
327    [2]=>
328    int(9)
329  }
330  [42]=>
331  string(1) ";"
332  [43]=>
333  array(3) {
334    [0]=>
335    int(%d)
336    [1]=>
337    string(3) "
338  "
339    [2]=>
340    int(9)
341  }
342  [44]=>
343  array(3) {
344    [0]=>
345    int(%d)
346    [1]=>
347    string(4) "else"
348    [2]=>
349    int(10)
350  }
351  [45]=>
352  array(3) {
353    [0]=>
354    int(%d)
355    [1]=>
356    string(5) "
357    "
358    [2]=>
359    int(10)
360  }
361  [46]=>
362  array(3) {
363    [0]=>
364    int(%d)
365    [1]=>
366    string(4) "exit"
367    [2]=>
368    int(11)
369  }
370  [47]=>
371  string(1) ";"
372  [48]=>
373  array(3) {
374    [0]=>
375    int(%d)
376    [1]=>
377    string(1) "
378"
379    [2]=>
380    int(11)
381  }
382  [49]=>
383  string(1) "}"
384  [50]=>
385  array(3) {
386    [0]=>
387    int(%d)
388    [1]=>
389    string(2) "
390
391"
392    [2]=>
393    int(12)
394  }
395  [51]=>
396  array(3) {
397    [0]=>
398    int(%d)
399    [1]=>
400    string(2) "$a"
401    [2]=>
402    int(14)
403  }
404  [52]=>
405  array(3) {
406    [0]=>
407    int(%d)
408    [1]=>
409    string(1) " "
410    [2]=>
411    int(14)
412  }
413  [53]=>
414  string(1) "="
415  [54]=>
416  array(3) {
417    [0]=>
418    int(%d)
419    [1]=>
420    string(1) " "
421    [2]=>
422    int(14)
423  }
424  [55]=>
425  array(3) {
426    [0]=>
427    int(%d)
428    [1]=>
429    string(5) "VALUE"
430    [2]=>
431    int(14)
432  }
433  [56]=>
434  string(1) ";"
435  [57]=>
436  array(3) {
437    [0]=>
438    int(%d)
439    [1]=>
440    string(1) "
441"
442    [2]=>
443    int(14)
444  }
445  [58]=>
446  array(3) {
447    [0]=>
448    int(%d)
449    [1]=>
450    string(2) "$b"
451    [2]=>
452    int(15)
453  }
454  [59]=>
455  array(3) {
456    [0]=>
457    int(%d)
458    [1]=>
459    string(1) " "
460    [2]=>
461    int(15)
462  }
463  [60]=>
464  string(1) "="
465  [61]=>
466  array(3) {
467    [0]=>
468    int(%d)
469    [1]=>
470    string(1) " "
471    [2]=>
472    int(15)
473  }
474  [62]=>
475  array(3) {
476    [0]=>
477    int(%d)
478    [1]=>
479    string(2) "20"
480    [2]=>
481    int(15)
482  }
483  [63]=>
484  string(1) ";"
485  [64]=>
486  array(3) {
487    [0]=>
488    int(%d)
489    [1]=>
490    string(1) "
491"
492    [2]=>
493    int(15)
494  }
495  [65]=>
496  array(3) {
497    [0]=>
498    int(%d)
499    [1]=>
500    string(2) "$c"
501    [2]=>
502    int(16)
503  }
504  [66]=>
505  array(3) {
506    [0]=>
507    int(%d)
508    [1]=>
509    string(1) " "
510    [2]=>
511    int(16)
512  }
513  [67]=>
514  string(1) "="
515  [68]=>
516  array(3) {
517    [0]=>
518    int(%d)
519    [1]=>
520    string(1) " "
521    [2]=>
522    int(16)
523  }
524  [69]=>
525  array(3) {
526    [0]=>
527    int(%d)
528    [1]=>
529    string(5) "array"
530    [2]=>
531    int(16)
532  }
533  [70]=>
534  string(1) "("
535  [71]=>
536  array(3) {
537    [0]=>
538    int(%d)
539    [1]=>
540    string(1) "1"
541    [2]=>
542    int(16)
543  }
544  [72]=>
545  string(1) ","
546  [73]=>
547  array(3) {
548    [0]=>
549    int(%d)
550    [1]=>
551    string(1) "2"
552    [2]=>
553    int(16)
554  }
555  [74]=>
556  string(1) ")"
557  [75]=>
558  string(1) ";"
559  [76]=>
560  array(3) {
561    [0]=>
562    int(%d)
563    [1]=>
564    string(1) "
565"
566    [2]=>
567    int(16)
568  }
569  [77]=>
570  array(3) {
571    [0]=>
572    int(%d)
573    [1]=>
574    string(2) "$b"
575    [2]=>
576    int(17)
577  }
578  [78]=>
579  array(3) {
580    [0]=>
581    int(%d)
582    [1]=>
583    string(1) " "
584    [2]=>
585    int(17)
586  }
587  [79]=>
588  array(3) {
589    [0]=>
590    int(%d)
591    [1]=>
592    string(3) ">>="
593    [2]=>
594    int(17)
595  }
596  [80]=>
597  array(3) {
598    [0]=>
599    int(%d)
600    [1]=>
601    string(1) " "
602    [2]=>
603    int(17)
604  }
605  [81]=>
606  array(3) {
607    [0]=>
608    int(%d)
609    [1]=>
610    string(1) "2"
611    [2]=>
612    int(17)
613  }
614  [82]=>
615  string(1) ";"
616  [83]=>
617  array(3) {
618    [0]=>
619    int(%d)
620    [1]=>
621    string(2) "
622
623"
624    [2]=>
625    int(17)
626  }
627  [84]=>
628  array(3) {
629    [0]=>
630    int(%d)
631    [1]=>
632    string(2) "if"
633    [2]=>
634    int(19)
635  }
636  [85]=>
637  string(1) "("
638  [86]=>
639  array(3) {
640    [0]=>
641    int(%d)
642    [1]=>
643    string(2) "$b"
644    [2]=>
645    int(19)
646  }
647  [87]=>
648  array(3) {
649    [0]=>
650    int(%d)
651    [1]=>
652    string(1) " "
653    [2]=>
654    int(19)
655  }
656  [88]=>
657  array(3) {
658    [0]=>
659    int(%d)
660    [1]=>
661    string(2) "<="
662    [2]=>
663    int(19)
664  }
665  [89]=>
666  array(3) {
667    [0]=>
668    int(%d)
669    [1]=>
670    string(1) " "
671    [2]=>
672    int(19)
673  }
674  [90]=>
675  array(3) {
676    [0]=>
677    int(%d)
678    [1]=>
679    string(1) "0"
680    [2]=>
681    int(19)
682  }
683  [91]=>
684  string(1) ")"
685  [92]=>
686  array(3) {
687    [0]=>
688    int(%d)
689    [1]=>
690    string(3) "
691  "
692    [2]=>
693    int(19)
694  }
695  [93]=>
696  array(3) {
697    [0]=>
698    int(%d)
699    [1]=>
700    string(3) "die"
701    [2]=>
702    int(20)
703  }
704  [94]=>
705  string(1) ";"
706  [95]=>
707  array(3) {
708    [0]=>
709    int(%d)
710    [1]=>
711    string(1) "
712"
713    [2]=>
714    int(20)
715  }
716  [96]=>
717  array(3) {
718    [0]=>
719    int(%d)
720    [1]=>
721    string(4) "else"
722    [2]=>
723    int(21)
724  }
725  [97]=>
726  array(3) {
727    [0]=>
728    int(%d)
729    [1]=>
730    string(3) "
731  "
732    [2]=>
733    int(21)
734  }
735  [98]=>
736  array(3) {
737    [0]=>
738    int(%d)
739    [1]=>
740    string(5) "print"
741    [2]=>
742    int(22)
743  }
744  [99]=>
745  string(1) "("
746  [100]=>
747  array(3) {
748    [0]=>
749    int(%d)
750    [1]=>
751    string(2) "$b"
752    [2]=>
753    int(22)
754  }
755  [101]=>
756  string(1) ")"
757  [102]=>
758  string(1) ";"
759  [103]=>
760  array(3) {
761    [0]=>
762    int(%d)
763    [1]=>
764    string(2) "
765
766"
767    [2]=>
768    int(22)
769  }
770  [104]=>
771  array(3) {
772    [0]=>
773    int(%d)
774    [1]=>
775    string(4) "list"
776    [2]=>
777    int(24)
778  }
779  [105]=>
780  string(1) "("
781  [106]=>
782  array(3) {
783    [0]=>
784    int(%d)
785    [1]=>
786    string(7) "$value1"
787    [2]=>
788    int(24)
789  }
790  [107]=>
791  string(1) ","
792  [108]=>
793  array(3) {
794    [0]=>
795    int(%d)
796    [1]=>
797    string(7) "$value2"
798    [2]=>
799    int(24)
800  }
801  [109]=>
802  string(1) ")"
803  [110]=>
804  array(3) {
805    [0]=>
806    int(%d)
807    [1]=>
808    string(1) " "
809    [2]=>
810    int(24)
811  }
812  [111]=>
813  string(1) "="
814  [112]=>
815  array(3) {
816    [0]=>
817    int(%d)
818    [1]=>
819    string(1) " "
820    [2]=>
821    int(24)
822  }
823  [113]=>
824  array(3) {
825    [0]=>
826    int(%d)
827    [1]=>
828    string(2) "$c"
829    [2]=>
830    int(24)
831  }
832  [114]=>
833  string(1) ";"
834  [115]=>
835  array(3) {
836    [0]=>
837    int(%d)
838    [1]=>
839    string(1) "
840"
841    [2]=>
842    int(24)
843  }
844  [116]=>
845  array(3) {
846    [0]=>
847    int(%d)
848    [1]=>
849    string(2) "if"
850    [2]=>
851    int(25)
852  }
853  [117]=>
854  string(1) "("
855  [118]=>
856  array(3) {
857    [0]=>
858    int(%d)
859    [1]=>
860    string(5) "empty"
861    [2]=>
862    int(25)
863  }
864  [119]=>
865  string(1) "("
866  [120]=>
867  array(3) {
868    [0]=>
869    int(%d)
870    [1]=>
871    string(7) "$value1"
872    [2]=>
873    int(25)
874  }
875  [121]=>
876  string(1) ")"
877  [122]=>
878  array(3) {
879    [0]=>
880    int(%d)
881    [1]=>
882    string(1) " "
883    [2]=>
884    int(25)
885  }
886  [123]=>
887  array(3) {
888    [0]=>
889    int(%d)
890    [1]=>
891    string(2) "&&"
892    [2]=>
893    int(25)
894  }
895  [124]=>
896  array(3) {
897    [0]=>
898    int(%d)
899    [1]=>
900    string(1) " "
901    [2]=>
902    int(25)
903  }
904  [125]=>
905  string(1) "!"
906  [126]=>
907  array(3) {
908    [0]=>
909    int(%d)
910    [1]=>
911    string(5) "isset"
912    [2]=>
913    int(25)
914  }
915  [127]=>
916  string(1) "("
917  [128]=>
918  array(3) {
919    [0]=>
920    int(%d)
921    [1]=>
922    string(7) "$value1"
923    [2]=>
924    int(25)
925  }
926  [129]=>
927  string(1) ")"
928  [130]=>
929  string(1) ")"
930  [131]=>
931  array(3) {
932    [0]=>
933    int(%d)
934    [1]=>
935    string(1) " "
936    [2]=>
937    int(25)
938  }
939  [132]=>
940  string(1) "{"
941  [133]=>
942  array(3) {
943    [0]=>
944    int(%d)
945    [1]=>
946    string(3) "
947  "
948    [2]=>
949    int(25)
950  }
951  [134]=>
952  array(3) {
953    [0]=>
954    int(%d)
955    [1]=>
956    string(10) "myFunction"
957    [2]=>
958    int(26)
959  }
960  [135]=>
961  string(1) "("
962  [136]=>
963  string(1) ")"
964  [137]=>
965  string(1) ";"
966  [138]=>
967  array(3) {
968    [0]=>
969    int(%d)
970    [1]=>
971    string(1) "
972"
973    [2]=>
974    int(26)
975  }
976  [139]=>
977  string(1) "}"
978  [140]=>
979  array(3) {
980    [0]=>
981    int(%d)
982    [1]=>
983    string(1) "
984"
985    [2]=>
986    int(27)
987  }
988  [141]=>
989  array(3) {
990    [0]=>
991    int(%d)
992    [1]=>
993    string(2) "?>"
994    [2]=>
995    int(28)
996  }
997}
998Done
999