DeprecatedFunctionsSniff   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 884
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 0
Metric Value
wmc 6
c 0
b 0
f 0
lcom 1
cbo 1
dl 0
loc 884
rs 9.716

4 Methods

Rating   Name   Duplication   Size   Complexity  
A register() 0 8 1
A process() 0 34 3
A getItemArray() 0 4 1
A getErrorMsgTemplate() 0 4 1
1
<?php
2
/**
3
 * \PHPCompatibility\Sniffs\PHP\DeprecatedFunctionsSniff.
4
 *
5
 * @category PHP
6
 * @package  PHPCompatibility
7
 * @author   Wim Godden <[email protected]>
8
 */
9
10
namespace PHPCompatibility\Sniffs\PHP;
11
12
use PHPCompatibility\AbstractRemovedFeatureSniff;
13
14
/**
15
 * \PHPCompatibility\Sniffs\PHP\DeprecatedFunctionsSniff.
16
 *
17
 * @category PHP
18
 * @package  PHPCompatibility
19
 * @author   Wim Godden <[email protected]>
20
 */
21
class DeprecatedFunctionsSniff extends AbstractRemovedFeatureSniff
22
{
23
    /**
24
     * A list of deprecated and removed functions with their alternatives.
25
     *
26
     * The array lists : version number with false (deprecated) or true (removed) and an alternative function.
27
     * If no alternative exists, it is NULL, i.e, the function should just not be used.
28
     *
29
     * @var array(string => array(string => bool|string|null))
30
     */
31
    protected $removedFunctions = array(
32
        'php_check_syntax' => array(
33
            '5.0.5' => true,
34
            'alternative' => null,
35
        ),
36
        'call_user_method' => array(
37
            '5.3' => false,
38
            '5.4' => false,
39
            '5.5' => false,
40
            '5.6' => false,
41
            '7.0' => true,
42
            'alternative' => 'call_user_func()',
43
        ),
44
        'call_user_method_array' => array(
45
            '5.3' => false,
46
            '5.4' => false,
47
            '5.5' => false,
48
            '5.6' => false,
49
            '7.0' => true,
50
            'alternative' => 'call_user_func_array()',
51
        ),
52
        'define_syslog_variables' => array(
53
            '5.3' => false,
54
            '5.4' => true,
55
            '5.5' => true,
56
            '5.6' => true,
57
            'alternative' => null,
58
        ),
59
        'dl' => array(
60
            '5.3' => false,
61
            '5.4' => false,
62
            '5.5' => false,
63
            '5.6' => false,
64
            'alternative' => null,
65
        ),
66
        'ereg' => array(
67
            '5.3' => false,
68
            '5.4' => false,
69
            '5.5' => false,
70
            '5.6' => false,
71
            '7.0' => true,
72
            'alternative' => 'preg_match()',
73
        ),
74
        'ereg_replace' => array(
75
            '5.3' => false,
76
            '5.4' => false,
77
            '5.5' => false,
78
            '5.6' => false,
79
            '7.0' => true,
80
            'alternative' => 'preg_replace()',
81
        ),
82
        'eregi' => array(
83
            '5.3' => false,
84
            '5.4' => false,
85
            '5.5' => false,
86
            '5.6' => false,
87
            '7.0' => true,
88
            'alternative' => 'preg_match()',
89
        ),
90
        'eregi_replace' => array(
91
            '5.3' => false,
92
            '5.4' => false,
93
            '5.5' => false,
94
            '5.6' => false,
95
            '7.0' => true,
96
            'alternative' => 'preg_replace()',
97
        ),
98
        'imagepsbbox' => array(
99
            '7.0' => true,
100
            'alternative' => null,
101
        ),
102
        'imagepsencodefont' => array(
103
            '7.0' => true,
104
            'alternative' => null,
105
        ),
106
        'imagepsextendfont' => array(
107
            '7.0' => true,
108
            'alternative' => null,
109
        ),
110
        'imagepsfreefont' => array(
111
            '7.0' => true,
112
            'alternative' => null,
113
        ),
114
        'imagepsloadfont' => array(
115
            '7.0' => true,
116
            'alternative' => null,
117
        ),
118
        'imagepsslantfont' => array(
119
            '7.0' => true,
120
            'alternative' => null,
121
        ),
122
        'imagepstext' => array(
123
            '7.0' => true,
124
            'alternative' => null,
125
        ),
126
        'import_request_variables' => array(
127
            '5.3' => false,
128
            '5.4' => true,
129
            'alternative' => null,
130
        ),
131
        'ldap_sort' => array(
132
            '7.0' => false,
133
            'alternative' => null,
134
        ),
135
        'mcrypt_generic_end' => array(
136
            '5.3' => false,
137
            '5.4' => false,
138
            '5.5' => false,
139
            '5.6' => false,
140
            '7.0' => true,
141
            'alternative' => 'mcrypt_generic_deinit()',
142
        ),
143
        'mysql_db_query' => array(
144
            '5.3' => false,
145
            '5.4' => false,
146
            '5.5' => false,
147
            '5.6' => false,
148
            '7.0' => true,
149
            'alternative' => 'mysqli::select_db() and mysqli::query()',
150
        ),
151
        'mysql_escape_string' => array(
152
            '5.3' => false,
153
            '5.4' => false,
154
            '5.5' => false,
155
            '5.6' => false,
156
            '7.0' => true,
157
            'alternative' => 'mysqli::real_escape_string()',
158
        ),
159
        'mysql_list_dbs' => array(
160
            '5.4' => false,
161
            '5.5' => false,
162
            '5.6' => false,
163
            '7.0' => true,
164
            'alternative' => null,
165
        ),
166
        'mysqli_bind_param' => array(
167
            '5.3' => false,
168
            '5.4' => true,
169
            '5.5' => true,
170
            '5.6' => true,
171
            'alternative' => 'mysqli_stmt::bind_param()',
172
        ),
173
        'mysqli_bind_result' => array(
174
            '5.3' => false,
175
            '5.4' => true,
176
            '5.5' => true,
177
            '5.6' => true,
178
            'alternative' => 'mysqli_stmt::bind_result()',
179
        ),
180
        'mysqli_client_encoding' => array(
181
            '5.3' => false,
182
            '5.4' => true,
183
            '5.5' => true,
184
            '5.6' => true,
185
            'alternative' => 'mysqli::character_set_name()',
186
        ),
187
        'mysqli_fetch' => array(
188
            '5.3' => false,
189
            '5.4' => true,
190
            '5.5' => true,
191
            '5.6' => true,
192
            'alternative' => 'mysqli_stmt::fetch()',
193
        ),
194
        'mysqli_param_count' => array(
195
            '5.3' => false,
196
            '5.4' => true,
197
            '5.5' => true,
198
            '5.6' => true,
199
            'alternative' => 'mysqli_stmt_param_count()',
200
        ),
201
        'mysqli_get_metadata' => array(
202
            '5.3' => false,
203
            '5.4' => true,
204
            '5.5' => true,
205
            '5.6' => true,
206
            'alternative' => 'mysqli_stmt::result_metadata()',
207
        ),
208
        'mysqli_send_long_data' => array(
209
            '5.3' => false,
210
            '5.4' => true,
211
            '5.5' => true,
212
            '5.6' => true,
213
            'alternative' => 'mysqli_stmt::send_long_data()',
214
        ),
215
        'magic_quotes_runtime' => array(
216
            '5.3' => false,
217
            '5.4' => false,
218
            '5.5' => false,
219
            '5.6' => false,
220
            '7.0' => true,
221
            'alternative' => null,
222
        ),
223
        'session_register' => array(
224
            '5.3' => false,
225
            '5.4' => true,
226
            '5.5' => true,
227
            '5.6' => true,
228
            'alternative' => '$_SESSION',
229
        ),
230
        'session_unregister' => array(
231
            '5.3' => false,
232
            '5.4' => true,
233
            '5.5' => true,
234
            '5.6' => true,
235
            'alternative' => '$_SESSION',
236
        ),
237
        'session_is_registered' => array(
238
            '5.3' => false,
239
            '5.4' => true,
240
            '5.5' => true,
241
            '5.6' => true,
242
            'alternative' => '$_SESSION',
243
        ),
244
        'set_magic_quotes_runtime' => array(
245
            '5.3' => false,
246
            '5.4' => false,
247
            '5.5' => false,
248
            '5.6' => false,
249
            '7.0' => true,
250
            'alternative' => null,
251
        ),
252
        'set_socket_blocking' => array(
253
            '5.3' => false,
254
            '5.4' => false,
255
            '5.5' => false,
256
            '5.6' => false,
257
            '7.0' => true,
258
            'alternative' => 'stream_set_blocking()',
259
        ),
260
        'split' => array(
261
            '5.3' => false,
262
            '5.4' => false,
263
            '5.5' => false,
264
            '5.6' => false,
265
            '7.0' => true,
266
            'alternative' => 'preg_split()',
267
        ),
268
        'spliti' => array(
269
            '5.3' => false,
270
            '5.4' => false,
271
            '5.5' => false,
272
            '5.6' => false,
273
            '7.0' => true,
274
            'alternative' => 'preg_split()',
275
        ),
276
        'sql_regcase' => array(
277
            '5.3' => false,
278
            '5.4' => false,
279
            '5.5' => false,
280
            '5.6' => false,
281
            '7.0' => true,
282
            'alternative' => null,
283
        ),
284
        'php_logo_guid' => array(
285
            '5.5' => true,
286
            '5.6' => true,
287
            'alternative' => null,
288
        ),
289
        'php_egg_logo_guid' => array(
290
            '5.5' => true,
291
            '5.6' => true,
292
            'alternative' => null,
293
        ),
294
        'php_real_logo_guid' => array(
295
            '5.5' => true,
296
            '5.6' => true,
297
            'alternative' => null,
298
        ),
299
        'zend_logo_guid' => array(
300
            '5.5' => true,
301
            '5.6' => true,
302
            'alternative' => null,
303
        ),
304
        'datefmt_set_timezone_id' => array(
305
            '5.5' => false,
306
            '5.6' => false,
307
            '7.0' => true,
308
            'alternative' => 'IntlDateFormatter::setTimeZone()',
309
        ),
310
        'mcrypt_ecb' => array(
311
            '5.5' => false,
312
            '5.6' => false,
313
            '7.0' => true,
314
            'alternative' => null,
315
        ),
316
        'mcrypt_cbc' => array(
317
            '5.5' => false,
318
            '5.6' => false,
319
            '7.0' => true,
320
            'alternative' => null,
321
        ),
322
        'mcrypt_cfb' => array(
323
            '5.5' => false,
324
            '5.6' => false,
325
            '7.0' => true,
326
            'alternative' => null,
327
        ),
328
        'mcrypt_ofb' => array(
329
            '5.5' => false,
330
            '5.6' => false,
331
            '7.0' => true,
332
            'alternative' => null,
333
        ),
334
        'ocibindbyname' => array(
335
            '5.4' => false,
336
            '5.5' => false,
337
            '5.6' => false,
338
            'alternative' => 'oci_bind_by_name()',
339
        ),
340
        'ocicancel' => array(
341
            '5.4' => false,
342
            '5.5' => false,
343
            '5.6' => false,
344
            'alternative' => 'oci_cancel()',
345
        ),
346
        'ocicloselob' => array(
347
            '5.4' => false,
348
            '5.5' => false,
349
            '5.6' => false,
350
            'alternative' => 'OCI-Lob::close()',
351
        ),
352
        'ocicollappend' => array(
353
            '5.4' => false,
354
            '5.5' => false,
355
            '5.6' => false,
356
            'alternative' => 'OCI-Collection::append()',
357
        ),
358
        'ocicollassign' => array(
359
            '5.4' => false,
360
            '5.5' => false,
361
            '5.6' => false,
362
            'alternative' => 'OCI-Collection::assign()',
363
        ),
364
        'ocicollassignelem' => array(
365
            '5.4' => false,
366
            '5.5' => false,
367
            '5.6' => false,
368
            'alternative' => 'OCI-Collection::assignElem()',
369
        ),
370
        'ocicollgetelem' => array(
371
            '5.4' => false,
372
            '5.5' => false,
373
            '5.6' => false,
374
            'alternative' => 'OCI-Collection::getElem()',
375
        ),
376
        'ocicollmax' => array(
377
            '5.4' => false,
378
            '5.5' => false,
379
            '5.6' => false,
380
            'alternative' => 'OCI-Collection::max()',
381
        ),
382
        'ocicollsize' => array(
383
            '5.4' => false,
384
            '5.5' => false,
385
            '5.6' => false,
386
            'alternative' => 'OCI-Collection::size()',
387
        ),
388
        'ocicolltrim' => array(
389
            '5.4' => false,
390
            '5.5' => false,
391
            '5.6' => false,
392
            'alternative' => 'OCI-Collection::trim()',
393
        ),
394
        'ocicolumnisnull' => array(
395
            '5.4' => false,
396
            '5.5' => false,
397
            '5.6' => false,
398
            'alternative' => 'oci_field_is_null()',
399
        ),
400
        'ocicolumnname' => array(
401
            '5.4' => false,
402
            '5.5' => false,
403
            '5.6' => false,
404
            'alternative' => 'oci_field_name()',
405
        ),
406
        'ocicolumnprecision' => array(
407
            '5.4' => false,
408
            '5.5' => false,
409
            '5.6' => false,
410
            'alternative' => 'oci_field_precision()',
411
        ),
412
        'ocicolumnscale' => array(
413
            '5.4' => false,
414
            '5.5' => false,
415
            '5.6' => false,
416
            'alternative' => 'oci_field_scale()',
417
        ),
418
        'ocicolumnsize' => array(
419
            '5.4' => false,
420
            '5.5' => false,
421
            '5.6' => false,
422
            'alternative' => 'oci_field_size()',
423
        ),
424
        'ocicolumntype' => array(
425
            '5.4' => false,
426
            '5.5' => false,
427
            '5.6' => false,
428
            'alternative' => 'oci_field_type()',
429
        ),
430
        'ocicolumntyperaw' => array(
431
            '5.4' => false,
432
            '5.5' => false,
433
            '5.6' => false,
434
            'alternative' => 'oci_field_type_raw()',
435
        ),
436
        'ocicommit' => array(
437
            '5.4' => false,
438
            '5.5' => false,
439
            '5.6' => false,
440
            'alternative' => 'oci_commit()',
441
        ),
442
        'ocidefinebyname' => array(
443
            '5.4' => false,
444
            '5.5' => false,
445
            '5.6' => false,
446
            'alternative' => 'oci_define_by_name()',
447
        ),
448
        'ocierror' => array(
449
            '5.4' => false,
450
            '5.5' => false,
451
            '5.6' => false,
452
            'alternative' => 'oci_error()',
453
        ),
454
        'ociexecute' => array(
455
            '5.4' => false,
456
            '5.5' => false,
457
            '5.6' => false,
458
            'alternative' => 'oci_execute()',
459
        ),
460
        'ocifetch' => array(
461
            '5.4' => false,
462
            '5.5' => false,
463
            '5.6' => false,
464
            'alternative' => 'oci_fetch()',
465
        ),
466
        'ocifetchinto' => array(
467
            '5.4' => false,
468
            '5.5' => false,
469
            '5.6' => false,
470
            'alternative' => null,
471
        ),
472
        'ocifetchstatement' => array(
473
            '5.4' => false,
474
            '5.5' => false,
475
            '5.6' => false,
476
            'alternative' => 'oci_fetch_all()',
477
        ),
478
        'ocifreecollection' => array(
479
            '5.4' => false,
480
            '5.5' => false,
481
            '5.6' => false,
482
            'alternative' => 'OCI-Collection::free()',
483
        ),
484
        'ocifreecursor' => array(
485
            '5.4' => false,
486
            '5.5' => false,
487
            '5.6' => false,
488
            'alternative' => 'oci_free_statement()',
489
        ),
490
        'ocifreedesc' => array(
491
            '5.4' => false,
492
            '5.5' => false,
493
            '5.6' => false,
494
            'alternative' => 'OCI-Lob::free()',
495
        ),
496
        'ocifreestatement' => array(
497
            '5.4' => false,
498
            '5.5' => false,
499
            '5.6' => false,
500
            'alternative' => 'oci_free_statement()',
501
        ),
502
        'ociinternaldebug' => array(
503
            '5.4' => false,
504
            '5.5' => false,
505
            '5.6' => false,
506
            'alternative' => 'oci_internal_debug()',
507
        ),
508
        'ociloadlob' => array(
509
            '5.4' => false,
510
            '5.5' => false,
511
            '5.6' => false,
512
            'alternative' => 'OCI-Lob::load()',
513
        ),
514
        'ocilogoff' => array(
515
            '5.4' => false,
516
            '5.5' => false,
517
            '5.6' => false,
518
            'alternative' => 'oci_close()',
519
        ),
520
        'ocilogon' => array(
521
            '5.4' => false,
522
            '5.5' => false,
523
            '5.6' => false,
524
            'alternative' => 'oci_connect()',
525
        ),
526
        'ocinewcollection' => array(
527
            '5.4' => false,
528
            '5.5' => false,
529
            '5.6' => false,
530
            'alternative' => 'oci_new_collection()',
531
        ),
532
        'ocinewcursor' => array(
533
            '5.4' => false,
534
            '5.5' => false,
535
            '5.6' => false,
536
            'alternative' => 'oci_new_cursor()',
537
        ),
538
        'ocinewdescriptor' => array(
539
            '5.4' => false,
540
            '5.5' => false,
541
            '5.6' => false,
542
            'alternative' => 'oci_new_descriptor()',
543
        ),
544
        'ocinlogon' => array(
545
            '5.4' => false,
546
            '5.5' => false,
547
            '5.6' => false,
548
            'alternative' => 'oci_new_connect()',
549
        ),
550
        'ocinumcols' => array(
551
            '5.4' => false,
552
            '5.5' => false,
553
            '5.6' => false,
554
            'alternative' => 'oci_num_fields()',
555
        ),
556
        'ociparse' => array(
557
            '5.4' => false,
558
            '5.5' => false,
559
            '5.6' => false,
560
            'alternative' => 'oci_parse()',
561
        ),
562
        'ociplogon' => array(
563
            '5.4' => false,
564
            '5.5' => false,
565
            '5.6' => false,
566
            'alternative' => 'oci_pconnect()',
567
        ),
568
        'ociresult' => array(
569
            '5.4' => false,
570
            '5.5' => false,
571
            '5.6' => false,
572
            'alternative' => 'oci_result()',
573
        ),
574
        'ocirollback' => array(
575
            '5.4' => false,
576
            '5.5' => false,
577
            '5.6' => false,
578
            'alternative' => 'oci_rollback()',
579
        ),
580
        'ocirowcount' => array(
581
            '5.4' => false,
582
            '5.5' => false,
583
            '5.6' => false,
584
            'alternative' => 'oci_num_rows()',
585
        ),
586
        'ocisavelob' => array(
587
            '5.4' => false,
588
            '5.5' => false,
589
            '5.6' => false,
590
            'alternative' => 'OCI-Lob::save()',
591
        ),
592
        'ocisavelobfile' => array(
593
            '5.4' => false,
594
            '5.5' => false,
595
            '5.6' => false,
596
            'alternative' => 'OCI-Lob::import()',
597
        ),
598
        'ociserverversion' => array(
599
            '5.4' => false,
600
            '5.5' => false,
601
            '5.6' => false,
602
            'alternative' => 'oci_server_version()',
603
        ),
604
        'ocisetprefetch' => array(
605
            '5.4' => false,
606
            '5.5' => false,
607
            '5.6' => false,
608
            'alternative' => 'oci_set_prefetch()',
609
        ),
610
        'ocistatementtype' => array(
611
            '5.4' => false,
612
            '5.5' => false,
613
            '5.6' => false,
614
            'alternative' => 'oci_statement_type()',
615
        ),
616
        'ociwritelobtofile' => array(
617
            '5.4' => false,
618
            '5.5' => false,
619
            '5.6' => false,
620
            'alternative' => 'OCI-Lob::export()',
621
        ),
622
        'ociwritetemporarylob' => array(
623
            '5.4' => false,
624
            '5.5' => false,
625
            '5.6' => false,
626
            'alternative' => 'OCI-Lob::writeTemporary()',
627
        ),
628
        'mysqli_get_cache_stats' => array(
629
            '5.4' => true,
630
            'alternative' => null,
631
        ),
632
633
        'mcrypt_create_iv' => array(
634
            '7.1' => false,
635
            '7.2' => true,
636
            'alternative' => 'random_bytes() or OpenSSL',
637
        ),
638
        'mcrypt_decrypt' => array(
639
            '7.1' => false,
640
            '7.2' => true,
641
            'alternative' => 'OpenSSL',
642
        ),
643
        'mcrypt_enc_get_algorithms_name' => array(
644
            '7.1' => false,
645
            '7.2' => true,
646
            'alternative' => 'OpenSSL',
647
        ),
648
        'mcrypt_enc_get_block_size' => array(
649
            '7.1' => false,
650
            '7.2' => true,
651
            'alternative' => 'OpenSSL',
652
        ),
653
        'mcrypt_enc_get_iv_size' => array(
654
            '7.1' => false,
655
            '7.2' => true,
656
            'alternative' => 'OpenSSL',
657
        ),
658
        'mcrypt_enc_get_key_size' => array(
659
            '7.1' => false,
660
            '7.2' => true,
661
            'alternative' => 'OpenSSL',
662
        ),
663
        'mcrypt_enc_get_modes_name' => array(
664
            '7.1' => false,
665
            '7.2' => true,
666
            'alternative' => 'OpenSSL',
667
        ),
668
        'mcrypt_enc_get_supported_key_sizes' => array(
669
            '7.1' => false,
670
            '7.2' => true,
671
            'alternative' => 'OpenSSL',
672
        ),
673
        'mcrypt_enc_is_block_algorithm_mode' => array(
674
            '7.1' => false,
675
            '7.2' => true,
676
            'alternative' => 'OpenSSL',
677
        ),
678
        'mcrypt_enc_is_block_algorithm' => array(
679
            '7.1' => false,
680
            '7.2' => true,
681
            'alternative' => 'OpenSSL',
682
        ),
683
        'mcrypt_enc_is_block_mode' => array(
684
            '7.1' => false,
685
            '7.2' => true,
686
            'alternative' => 'OpenSSL',
687
        ),
688
        'mcrypt_enc_self_test' => array(
689
            '7.1' => false,
690
            '7.2' => true,
691
            'alternative' => 'OpenSSL',
692
        ),
693
        'mcrypt_encrypt' => array(
694
            '7.1' => false,
695
            '7.2' => true,
696
            'alternative' => 'OpenSSL',
697
        ),
698
        'mcrypt_generic_deinit' => array(
699
            '7.1' => false,
700
            '7.2' => true,
701
            'alternative' => 'OpenSSL',
702
        ),
703
        'mcrypt_generic_init' => array(
704
            '7.1' => false,
705
            '7.2' => true,
706
            'alternative' => 'OpenSSL',
707
        ),
708
        'mcrypt_generic' => array(
709
            '7.1' => false,
710
            '7.2' => true,
711
            'alternative' => 'OpenSSL',
712
        ),
713
        'mcrypt_get_block_size' => array(
714
            '7.1' => false,
715
            '7.2' => true,
716
            'alternative' => 'OpenSSL',
717
        ),
718
        'mcrypt_get_cipher_name' => array(
719
            '7.1' => false,
720
            '7.2' => true,
721
            'alternative' => 'OpenSSL',
722
        ),
723
        'mcrypt_get_iv_size' => array(
724
            '7.1' => false,
725
            '7.2' => true,
726
            'alternative' => 'OpenSSL',
727
        ),
728
        'mcrypt_get_key_size' => array(
729
            '7.1' => false,
730
            '7.2' => true,
731
            'alternative' => 'OpenSSL',
732
        ),
733
        'mcrypt_list_algorithms' => array(
734
            '7.1' => false,
735
            '7.2' => true,
736
            'alternative' => 'OpenSSL',
737
        ),
738
        'mcrypt_list_modes' => array(
739
            '7.1' => false,
740
            '7.2' => true,
741
            'alternative' => 'OpenSSL',
742
        ),
743
        'mcrypt_module_close' => array(
744
            '7.1' => false,
745
            '7.2' => true,
746
            'alternative' => 'OpenSSL',
747
        ),
748
        'mcrypt_module_get_algo_block_size' => array(
749
            '7.1' => false,
750
            '7.2' => true,
751
            'alternative' => 'OpenSSL',
752
        ),
753
        'mcrypt_module_get_algo_key_size' => array(
754
            '7.1' => false,
755
            '7.2' => true,
756
            'alternative' => 'OpenSSL',
757
        ),
758
        'mcrypt_module_get_supported_key_sizes' => array(
759
            '7.1' => false,
760
            '7.2' => true,
761
            'alternative' => 'OpenSSL',
762
        ),
763
        'mcrypt_module_is_block_algorithm_mode' => array(
764
            '7.1' => false,
765
            '7.2' => true,
766
            'alternative' => 'OpenSSL',
767
        ),
768
        'mcrypt_module_is_block_algorithm' => array(
769
            '7.1' => false,
770
            '7.2' => true,
771
            'alternative' => 'OpenSSL',
772
        ),
773
        'mcrypt_module_is_block_mode' => array(
774
            '7.1' => false,
775
            '7.2' => true,
776
            'alternative' => 'OpenSSL',
777
        ),
778
        'mcrypt_module_open' => array(
779
            '7.1' => false,
780
            '7.2' => true,
781
            'alternative' => 'OpenSSL',
782
        ),
783
        'mcrypt_module_self_test' => array(
784
            '7.1' => false,
785
            '7.2' => true,
786
            'alternative' => 'OpenSSL',
787
        ),
788
        'mdecrypt_generic' => array(
789
            '7.1' => false,
790
            '7.2' => true,
791
            'alternative' => 'OpenSSL',
792
        ),
793
        'jpeg2wbmp' => array(
794
            '7.2' => false,
795
            'alternative' => 'imagecreatefromjpeg() and imagewbmp()',
796
        ),
797
        'png2wbmp' => array(
798
            '7.2' => false,
799
            'alternative' => 'imagecreatefrompng() or imagewbmp()',
800
        ),
801
        'create_function' => array(
802
            '7.2' => false,
803
            'alternative' => 'an anonymous function',
804
        ),
805
        'each' => array(
806
            '7.2' => false,
807
            'alternative' => 'a foreach loop',
808
        ),
809
        'gmp_random' => array(
810
            '7.2' => false,
811
            'alternative' => 'gmp_random_bits() or gmp_random_range()',
812
        ),
813
        'read_exif_data' => array(
814
            '7.2' => false,
815
            'alternative' => 'exif_read_data()',
816
        ),
817
    );
818
819
820
    /**
821
     * Returns an array of tokens this test wants to listen for.
822
     *
823
     * @return array
824
     */
825
    public function register()
826
    {
827
        // Handle case-insensitivity of function names.
828
        $this->removedFunctions = $this->arrayKeysToLowercase($this->removedFunctions);
829
830
        return array(T_STRING);
831
832
    }//end register()
833
834
835
    /**
836
     * Processes this test, when one of its tokens is encountered.
837
     *
838
     * @param \PHP_CodeSniffer_File $phpcsFile The file being scanned.
839
     * @param int                   $stackPtr  The position of the current token in
840
     *                                         the stack passed in $tokens.
841
     *
842
     * @return void
843
     */
844
    public function process(\PHP_CodeSniffer_File $phpcsFile, $stackPtr)
845
    {
846
        $tokens = $phpcsFile->getTokens();
847
848
        $ignore = array(
849
            T_DOUBLE_COLON,
850
            T_OBJECT_OPERATOR,
851
            T_FUNCTION,
852
            T_CLASS,
853
            T_CONST,
854
            T_USE,
855
            T_NS_SEPARATOR,
856
        );
857
858
        $prevToken = $phpcsFile->findPrevious(T_WHITESPACE, ($stackPtr - 1), null, true);
859
        if (in_array($tokens[$prevToken]['code'], $ignore) === true) {
860
            // Not a call to a PHP function.
861
            return;
862
        }
863
864
        $function   = $tokens[$stackPtr]['content'];
865
        $functionLc = strtolower($function);
866
867
        if (isset($this->removedFunctions[$functionLc]) === false) {
868
            return;
869
        }
870
871
        $itemInfo = array(
872
            'name'   => $function,
873
            'nameLc' => $functionLc,
874
        );
875
        $this->handleFeature($phpcsFile, $stackPtr, $itemInfo);
876
877
    }//end process()
878
879
880
    /**
881
     * Get the relevant sub-array for a specific item from a multi-dimensional array.
882
     *
883
     * @param array $itemInfo Base information about the item.
884
     *
885
     * @return array Version and other information about the item.
886
     */
887
    public function getItemArray(array $itemInfo)
888
    {
889
        return $this->removedFunctions[$itemInfo['nameLc']];
890
    }
891
892
893
    /**
894
     * Get the error message template for this sniff.
895
     *
896
     * @return string
897
     */
898
    protected function getErrorMsgTemplate()
899
    {
900
        return 'Function %s() is ';
901
    }
902
903
904
}//end class
905