NewFunctionsSniff.php 53 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008
  1. <?php
  2. /**
  3. * PHPCompatibility, an external standard for PHP_CodeSniffer.
  4. *
  5. * @package PHPCompatibility
  6. * @copyright 2012-2019 PHPCompatibility Contributors
  7. * @license https://opensource.org/licenses/LGPL-3.0 LGPL3
  8. * @link https://github.com/PHPCompatibility/PHPCompatibility
  9. */
  10. namespace PHPCompatibility\Sniffs\FunctionUse;
  11. use PHPCompatibility\AbstractNewFeatureSniff;
  12. use PHP_CodeSniffer_File as File;
  13. /**
  14. * Detect calls to new native PHP functions.
  15. *
  16. * PHP version All
  17. *
  18. * @since 5.5
  19. * @since 5.6 Now extends the base `Sniff` class instead of the upstream
  20. * `Generic.PHP.ForbiddenFunctions` sniff.
  21. * @since 7.1.0 Now extends the `AbstractNewFeatureSniff` instead of the base `Sniff` class..
  22. */
  23. class NewFunctionsSniff extends AbstractNewFeatureSniff
  24. {
  25. /**
  26. * A list of new functions, not present in older versions.
  27. *
  28. * The array lists : version number with false (not present) or true (present).
  29. * If's sufficient to list the first version where the function appears.
  30. *
  31. * @since 5.5
  32. * @since 5.6 Visibility changed from `protected` to `public`.
  33. * @since 7.0.2 Visibility changed back from `public` to `protected`.
  34. * The earlier change was made to be in line with the upstream sniff,
  35. * but that sniff is no longer being extended.
  36. * @since 7.0.8 Renamed from `$forbiddenFunctions` to the more descriptive `$newFunctions`.
  37. *
  38. * @var array(string => array(string => bool))
  39. */
  40. protected $newFunctions = array(
  41. 'iterator_count' => array(
  42. '5.0' => false,
  43. '5.1' => true,
  44. ),
  45. 'iterator_to_array' => array(
  46. '5.0' => false,
  47. '5.1' => true,
  48. ),
  49. 'spl_autoload_call' => array(
  50. '5.0' => false,
  51. '5.1' => true,
  52. ),
  53. 'spl_autoload_extensions' => array(
  54. '5.0' => false,
  55. '5.1' => true,
  56. ),
  57. 'spl_autoload_functions' => array(
  58. '5.0' => false,
  59. '5.1' => true,
  60. ),
  61. 'spl_autoload_register' => array(
  62. '5.0' => false,
  63. '5.1' => true,
  64. ),
  65. 'spl_autoload_unregister' => array(
  66. '5.0' => false,
  67. '5.1' => true,
  68. ),
  69. 'spl_autoload' => array(
  70. '5.0' => false,
  71. '5.1' => true,
  72. ),
  73. 'hash_hmac' => array(
  74. '5.1.1' => false,
  75. '5.1.2' => true,
  76. ),
  77. 'array_fill_keys' => array(
  78. '5.1' => false,
  79. '5.2' => true,
  80. ),
  81. 'error_get_last' => array(
  82. '5.1' => false,
  83. '5.2' => true,
  84. ),
  85. 'image_type_to_extension' => array(
  86. '5.1' => false,
  87. '5.2' => true,
  88. ),
  89. 'memory_get_peak_usage' => array(
  90. '5.1' => false,
  91. '5.2' => true,
  92. ),
  93. 'sys_get_temp_dir' => array(
  94. '5.1' => false,
  95. '5.2' => true,
  96. ),
  97. 'timezone_abbreviations_list' => array(
  98. '5.1' => false,
  99. '5.2' => true,
  100. ),
  101. 'timezone_identifiers_list' => array(
  102. '5.1' => false,
  103. '5.2' => true,
  104. ),
  105. 'timezone_name_from_abbr' => array(
  106. '5.1' => false,
  107. '5.2' => true,
  108. ),
  109. 'stream_socket_shutdown' => array(
  110. '5.1' => false,
  111. '5.2' => true,
  112. ),
  113. 'imagegrabscreen' => array(
  114. '5.1' => false,
  115. '5.2' => true,
  116. ),
  117. 'imagegrabwindow' => array(
  118. '5.1' => false,
  119. '5.2' => true,
  120. ),
  121. 'libxml_disable_entity_loader' => array(
  122. '5.1' => false,
  123. '5.2' => true,
  124. ),
  125. 'mb_stripos' => array(
  126. '5.1' => false,
  127. '5.2' => true,
  128. ),
  129. 'mb_stristr' => array(
  130. '5.1' => false,
  131. '5.2' => true,
  132. ),
  133. 'mb_strrchr' => array(
  134. '5.1' => false,
  135. '5.2' => true,
  136. ),
  137. 'mb_strrichr' => array(
  138. '5.1' => false,
  139. '5.2' => true,
  140. ),
  141. 'mb_strripos' => array(
  142. '5.1' => false,
  143. '5.2' => true,
  144. ),
  145. 'ming_setSWFCompression' => array(
  146. '5.1' => false,
  147. '5.2' => true,
  148. ),
  149. 'openssl_csr_get_public_key' => array(
  150. '5.1' => false,
  151. '5.2' => true,
  152. ),
  153. 'openssl_csr_get_subject' => array(
  154. '5.1' => false,
  155. '5.2' => true,
  156. ),
  157. 'openssl_pkey_get_details' => array(
  158. '5.1' => false,
  159. '5.2' => true,
  160. ),
  161. 'spl_object_hash' => array(
  162. '5.1' => false,
  163. '5.2' => true,
  164. ),
  165. 'iterator_apply' => array(
  166. '5.1' => false,
  167. '5.2' => true,
  168. ),
  169. 'preg_last_error' => array(
  170. '5.1' => false,
  171. '5.2' => true,
  172. ),
  173. 'pg_field_table' => array(
  174. '5.1' => false,
  175. '5.2' => true,
  176. ),
  177. 'posix_initgroups' => array(
  178. '5.1' => false,
  179. '5.2' => true,
  180. ),
  181. 'gmp_nextprime' => array(
  182. '5.1' => false,
  183. '5.2' => true,
  184. ),
  185. 'xmlwriter_full_end_element' => array(
  186. '5.1' => false,
  187. '5.2' => true,
  188. ),
  189. 'xmlwriter_write_raw' => array(
  190. '5.1' => false,
  191. '5.2' => true,
  192. ),
  193. 'xmlwriter_start_dtd_entity' => array(
  194. '5.1' => false,
  195. '5.2' => true,
  196. ),
  197. 'xmlwriter_end_dtd_entity' => array(
  198. '5.1' => false,
  199. '5.2' => true,
  200. ),
  201. 'xmlwriter_write_dtd_entity' => array(
  202. '5.1' => false,
  203. '5.2' => true,
  204. ),
  205. 'filter_has_var' => array(
  206. '5.1' => false,
  207. '5.2' => true,
  208. ),
  209. 'filter_id' => array(
  210. '5.1' => false,
  211. '5.2' => true,
  212. ),
  213. 'filter_input_array' => array(
  214. '5.1' => false,
  215. '5.2' => true,
  216. ),
  217. 'filter_input' => array(
  218. '5.1' => false,
  219. '5.2' => true,
  220. ),
  221. 'filter_list' => array(
  222. '5.1' => false,
  223. '5.2' => true,
  224. ),
  225. 'filter_var_array' => array(
  226. '5.1' => false,
  227. '5.2' => true,
  228. ),
  229. 'filter_var' => array(
  230. '5.1' => false,
  231. '5.2' => true,
  232. ),
  233. 'json_decode' => array(
  234. '5.1' => false,
  235. '5.2' => true,
  236. ),
  237. 'json_encode' => array(
  238. '5.1' => false,
  239. '5.2' => true,
  240. ),
  241. 'zip_close' => array(
  242. '5.1' => false,
  243. '5.2' => true,
  244. ),
  245. 'zip_entry_close' => array(
  246. '5.1' => false,
  247. '5.2' => true,
  248. ),
  249. 'zip_entry_compressedsize' => array(
  250. '5.1' => false,
  251. '5.2' => true,
  252. ),
  253. 'zip_entry_compressionmethod' => array(
  254. '5.1' => false,
  255. '5.2' => true,
  256. ),
  257. 'zip_entry_filesize' => array(
  258. '5.1' => false,
  259. '5.2' => true,
  260. ),
  261. 'zip_entry_name' => array(
  262. '5.1' => false,
  263. '5.2' => true,
  264. ),
  265. 'zip_entry_open' => array(
  266. '5.1' => false,
  267. '5.2' => true,
  268. ),
  269. 'zip_entry_read' => array(
  270. '5.1' => false,
  271. '5.2' => true,
  272. ),
  273. 'zip_open' => array(
  274. '5.1' => false,
  275. '5.2' => true,
  276. ),
  277. 'zip_read' => array(
  278. '5.1' => false,
  279. '5.2' => true,
  280. ),
  281. 'array_replace' => array(
  282. '5.2' => false,
  283. '5.3' => true,
  284. ),
  285. 'array_replace_recursive' => array(
  286. '5.2' => false,
  287. '5.3' => true,
  288. ),
  289. 'class_alias' => array(
  290. '5.2' => false,
  291. '5.3' => true,
  292. ),
  293. 'forward_static_call' => array(
  294. '5.2' => false,
  295. '5.3' => true,
  296. ),
  297. 'forward_static_call_array' => array(
  298. '5.2' => false,
  299. '5.3' => true,
  300. ),
  301. 'gc_collect_cycles' => array(
  302. '5.2' => false,
  303. '5.3' => true,
  304. ),
  305. 'gc_disable' => array(
  306. '5.2' => false,
  307. '5.3' => true,
  308. ),
  309. 'gc_enable' => array(
  310. '5.2' => false,
  311. '5.3' => true,
  312. ),
  313. 'gc_enabled' => array(
  314. '5.2' => false,
  315. '5.3' => true,
  316. ),
  317. 'get_called_class' => array(
  318. '5.2' => false,
  319. '5.3' => true,
  320. ),
  321. 'gethostname' => array(
  322. '5.2' => false,
  323. '5.3' => true,
  324. ),
  325. 'header_remove' => array(
  326. '5.2' => false,
  327. '5.3' => true,
  328. ),
  329. 'lcfirst' => array(
  330. '5.2' => false,
  331. '5.3' => true,
  332. ),
  333. 'parse_ini_string' => array(
  334. '5.2' => false,
  335. '5.3' => true,
  336. ),
  337. 'quoted_printable_encode' => array(
  338. '5.2' => false,
  339. '5.3' => true,
  340. ),
  341. 'str_getcsv' => array(
  342. '5.2' => false,
  343. '5.3' => true,
  344. ),
  345. 'stream_context_set_default' => array(
  346. '5.2' => false,
  347. '5.3' => true,
  348. ),
  349. 'stream_supports_lock' => array(
  350. '5.2' => false,
  351. '5.3' => true,
  352. ),
  353. 'stream_context_get_params' => array(
  354. '5.2' => false,
  355. '5.3' => true,
  356. ),
  357. 'date_add' => array(
  358. '5.2' => false,
  359. '5.3' => true,
  360. ),
  361. 'date_create_from_format' => array(
  362. '5.2' => false,
  363. '5.3' => true,
  364. ),
  365. 'date_diff' => array(
  366. '5.2' => false,
  367. '5.3' => true,
  368. ),
  369. 'date_get_last_errors' => array(
  370. '5.2' => false,
  371. '5.3' => true,
  372. ),
  373. 'date_parse_from_format' => array(
  374. '5.2' => false,
  375. '5.3' => true,
  376. ),
  377. 'date_sub' => array(
  378. '5.2' => false,
  379. '5.3' => true,
  380. ),
  381. 'timezone_version_get' => array(
  382. '5.2' => false,
  383. '5.3' => true,
  384. ),
  385. 'gmp_testbit' => array(
  386. '5.2' => false,
  387. '5.3' => true,
  388. ),
  389. 'hash_copy' => array(
  390. '5.2' => false,
  391. '5.3' => true,
  392. ),
  393. 'imap_gc' => array(
  394. '5.2' => false,
  395. '5.3' => true,
  396. ),
  397. 'imap_utf8_to_mutf7' => array(
  398. '5.2' => false,
  399. '5.3' => true,
  400. ),
  401. 'imap_mutf7_to_utf8' => array(
  402. '5.2' => false,
  403. '5.3' => true,
  404. ),
  405. 'json_last_error' => array(
  406. '5.2' => false,
  407. '5.3' => true,
  408. ),
  409. 'mysqli_get_cache_stats' => array(
  410. '5.2' => false,
  411. '5.3' => true,
  412. ),
  413. 'mysqli_fetch_all' => array(
  414. '5.2' => false,
  415. '5.3' => true,
  416. ),
  417. 'mysqli_get_connection_status' => array(
  418. '5.2' => false,
  419. '5.3' => true,
  420. ),
  421. 'mysqli_poll' => array(
  422. '5.2' => false,
  423. '5.3' => true,
  424. ),
  425. 'mysqli_read_async_query' => array(
  426. '5.2' => false,
  427. '5.3' => true,
  428. ),
  429. 'openssl_random_pseudo_bytes' => array(
  430. '5.2' => false,
  431. '5.3' => true,
  432. ),
  433. 'pcntl_signal_dispatch' => array(
  434. '5.2' => false,
  435. '5.3' => true,
  436. ),
  437. 'pcntl_sigprocmask' => array(
  438. '5.2' => false,
  439. '5.3' => true,
  440. ),
  441. 'pcntl_sigtimedwait' => array(
  442. '5.2' => false,
  443. '5.3' => true,
  444. ),
  445. 'pcntl_sigwaitinfo' => array(
  446. '5.2' => false,
  447. '5.3' => true,
  448. ),
  449. 'preg_filter' => array(
  450. '5.2' => false,
  451. '5.3' => true,
  452. ),
  453. 'msg_queue_exists' => array(
  454. '5.2' => false,
  455. '5.3' => true,
  456. ),
  457. 'shm_has_vars' => array(
  458. '5.2' => false,
  459. '5.3' => true,
  460. ),
  461. 'acosh' => array(
  462. '5.2' => false,
  463. '5.3' => true,
  464. ),
  465. 'asinh' => array(
  466. '5.2' => false,
  467. '5.3' => true,
  468. ),
  469. 'atanh' => array(
  470. '5.2' => false,
  471. '5.3' => true,
  472. ),
  473. 'expm1' => array(
  474. '5.2' => false,
  475. '5.3' => true,
  476. ),
  477. 'log1p' => array(
  478. '5.2' => false,
  479. '5.3' => true,
  480. ),
  481. 'enchant_broker_describe' => array(
  482. '5.2' => false,
  483. '5.3' => true,
  484. ),
  485. 'enchant_broker_dict_exists' => array(
  486. '5.2' => false,
  487. '5.3' => true,
  488. ),
  489. 'enchant_broker_free_dict' => array(
  490. '5.2' => false,
  491. '5.3' => true,
  492. ),
  493. 'enchant_broker_free' => array(
  494. '5.2' => false,
  495. '5.3' => true,
  496. ),
  497. 'enchant_broker_get_error' => array(
  498. '5.2' => false,
  499. '5.3' => true,
  500. ),
  501. 'enchant_broker_init' => array(
  502. '5.2' => false,
  503. '5.3' => true,
  504. ),
  505. 'enchant_broker_list_dicts' => array(
  506. '5.2' => false,
  507. '5.3' => true,
  508. ),
  509. 'enchant_broker_request_dict' => array(
  510. '5.2' => false,
  511. '5.3' => true,
  512. ),
  513. 'enchant_broker_request_pwl_dict' => array(
  514. '5.2' => false,
  515. '5.3' => true,
  516. ),
  517. 'enchant_broker_set_ordering' => array(
  518. '5.2' => false,
  519. '5.3' => true,
  520. ),
  521. 'enchant_dict_add_to_personal' => array(
  522. '5.2' => false,
  523. '5.3' => true,
  524. ),
  525. 'enchant_dict_add_to_session' => array(
  526. '5.2' => false,
  527. '5.3' => true,
  528. ),
  529. 'enchant_dict_check' => array(
  530. '5.2' => false,
  531. '5.3' => true,
  532. ),
  533. 'enchant_dict_describe' => array(
  534. '5.2' => false,
  535. '5.3' => true,
  536. ),
  537. 'enchant_dict_get_error' => array(
  538. '5.2' => false,
  539. '5.3' => true,
  540. ),
  541. 'enchant_dict_is_in_session' => array(
  542. '5.2' => false,
  543. '5.3' => true,
  544. ),
  545. 'enchant_dict_quick_check' => array(
  546. '5.2' => false,
  547. '5.3' => true,
  548. ),
  549. 'enchant_dict_store_replacement' => array(
  550. '5.2' => false,
  551. '5.3' => true,
  552. ),
  553. 'enchant_dict_suggest' => array(
  554. '5.2' => false,
  555. '5.3' => true,
  556. ),
  557. 'finfo_buffer' => array(
  558. '5.2' => false,
  559. '5.3' => true,
  560. ),
  561. 'finfo_close' => array(
  562. '5.2' => false,
  563. '5.3' => true,
  564. ),
  565. 'finfo_file' => array(
  566. '5.2' => false,
  567. '5.3' => true,
  568. ),
  569. 'finfo_open' => array(
  570. '5.2' => false,
  571. '5.3' => true,
  572. ),
  573. 'finfo_set_flags' => array(
  574. '5.2' => false,
  575. '5.3' => true,
  576. ),
  577. 'intl_error_name' => array(
  578. '5.2' => false,
  579. '5.3' => true,
  580. ),
  581. 'intl_get_error_code' => array(
  582. '5.2' => false,
  583. '5.3' => true,
  584. ),
  585. 'intl_get_error_message' => array(
  586. '5.2' => false,
  587. '5.3' => true,
  588. ),
  589. 'intl_is_failure' => array(
  590. '5.2' => false,
  591. '5.3' => true,
  592. ),
  593. 'hex2bin' => array(
  594. '5.3' => false,
  595. '5.4' => true,
  596. ),
  597. 'http_response_code' => array(
  598. '5.3' => false,
  599. '5.4' => true,
  600. ),
  601. 'get_declared_traits' => array(
  602. '5.3' => false,
  603. '5.4' => true,
  604. ),
  605. 'getimagesizefromstring' => array(
  606. '5.3' => false,
  607. '5.4' => true,
  608. ),
  609. 'stream_set_chunk_size' => array(
  610. '5.3' => false,
  611. '5.4' => true,
  612. ),
  613. 'socket_import_stream' => array(
  614. '5.3' => false,
  615. '5.4' => true,
  616. ),
  617. 'trait_exists' => array(
  618. '5.3' => false,
  619. '5.4' => true,
  620. ),
  621. 'header_register_callback' => array(
  622. '5.3' => false,
  623. '5.4' => true,
  624. ),
  625. 'class_uses' => array(
  626. '5.3' => false,
  627. '5.4' => true,
  628. ),
  629. 'session_status' => array(
  630. '5.3' => false,
  631. '5.4' => true,
  632. ),
  633. 'session_register_shutdown' => array(
  634. '5.3' => false,
  635. '5.4' => true,
  636. ),
  637. 'mysqli_error_list' => array(
  638. '5.3' => false,
  639. '5.4' => true,
  640. ),
  641. 'mysqli_stmt_error_list' => array(
  642. '5.3' => false,
  643. '5.4' => true,
  644. ),
  645. 'libxml_set_external_entity_loader' => array(
  646. '5.3' => false,
  647. '5.4' => true,
  648. ),
  649. 'ldap_control_paged_result' => array(
  650. '5.3' => false,
  651. '5.4' => true,
  652. ),
  653. 'ldap_control_paged_result_response' => array(
  654. '5.3' => false,
  655. '5.4' => true,
  656. ),
  657. 'transliteral_create' => array(
  658. '5.3' => false,
  659. '5.4' => true,
  660. ),
  661. 'transliteral_create_from_rules' => array(
  662. '5.3' => false,
  663. '5.4' => true,
  664. ),
  665. 'transliteral_create_inverse' => array(
  666. '5.3' => false,
  667. '5.4' => true,
  668. ),
  669. 'transliteral_get_error_code' => array(
  670. '5.3' => false,
  671. '5.4' => true,
  672. ),
  673. 'transliteral_get_error_message' => array(
  674. '5.3' => false,
  675. '5.4' => true,
  676. ),
  677. 'transliteral_list_ids' => array(
  678. '5.3' => false,
  679. '5.4' => true,
  680. ),
  681. 'transliteral_transliterate' => array(
  682. '5.3' => false,
  683. '5.4' => true,
  684. ),
  685. 'zlib_decode' => array(
  686. '5.3' => false,
  687. '5.4' => true,
  688. ),
  689. 'zlib_encode' => array(
  690. '5.3' => false,
  691. '5.4' => true,
  692. ),
  693. 'array_column' => array(
  694. '5.4' => false,
  695. '5.5' => true,
  696. ),
  697. 'boolval' => array(
  698. '5.4' => false,
  699. '5.5' => true,
  700. ),
  701. 'json_last_error_msg' => array(
  702. '5.4' => false,
  703. '5.5' => true,
  704. ),
  705. 'password_get_info' => array(
  706. '5.4' => false,
  707. '5.5' => true,
  708. ),
  709. 'password_hash' => array(
  710. '5.4' => false,
  711. '5.5' => true,
  712. ),
  713. 'password_needs_rehash' => array(
  714. '5.4' => false,
  715. '5.5' => true,
  716. ),
  717. 'password_verify' => array(
  718. '5.4' => false,
  719. '5.5' => true,
  720. ),
  721. 'hash_pbkdf2' => array(
  722. '5.4' => false,
  723. '5.5' => true,
  724. ),
  725. 'openssl_pbkdf2' => array(
  726. '5.4' => false,
  727. '5.5' => true,
  728. ),
  729. 'curl_escape' => array(
  730. '5.4' => false,
  731. '5.5' => true,
  732. ),
  733. 'curl_file_create' => array(
  734. '5.4' => false,
  735. '5.5' => true,
  736. ),
  737. 'curl_multi_setopt' => array(
  738. '5.4' => false,
  739. '5.5' => true,
  740. ),
  741. 'curl_multi_strerror' => array(
  742. '5.4' => false,
  743. '5.5' => true,
  744. ),
  745. 'curl_pause' => array(
  746. '5.4' => false,
  747. '5.5' => true,
  748. ),
  749. 'curl_reset' => array(
  750. '5.4' => false,
  751. '5.5' => true,
  752. ),
  753. 'curl_share_close' => array(
  754. '5.4' => false,
  755. '5.5' => true,
  756. ),
  757. 'curl_share_init' => array(
  758. '5.4' => false,
  759. '5.5' => true,
  760. ),
  761. 'curl_share_setopt' => array(
  762. '5.4' => false,
  763. '5.5' => true,
  764. ),
  765. 'curl_strerror' => array(
  766. '5.4' => false,
  767. '5.5' => true,
  768. ),
  769. 'curl_unescape' => array(
  770. '5.4' => false,
  771. '5.5' => true,
  772. ),
  773. 'imageaffinematrixconcat' => array(
  774. '5.4' => false,
  775. '5.5' => true,
  776. ),
  777. 'imageaffinematrixget' => array(
  778. '5.4' => false,
  779. '5.5' => true,
  780. ),
  781. 'imagecrop' => array(
  782. '5.4' => false,
  783. '5.5' => true,
  784. ),
  785. 'imagecropauto' => array(
  786. '5.4' => false,
  787. '5.5' => true,
  788. ),
  789. 'imageflip' => array(
  790. '5.4' => false,
  791. '5.5' => true,
  792. ),
  793. 'imagepalettetotruecolor' => array(
  794. '5.4' => false,
  795. '5.5' => true,
  796. ),
  797. 'imagescale' => array(
  798. '5.4' => false,
  799. '5.5' => true,
  800. ),
  801. 'mysqli_begin_transaction' => array(
  802. '5.4' => false,
  803. '5.5' => true,
  804. ),
  805. 'mysqli_release_savepoint' => array(
  806. '5.4' => false,
  807. '5.5' => true,
  808. ),
  809. 'mysqli_savepoint' => array(
  810. '5.4' => false,
  811. '5.5' => true,
  812. ),
  813. 'pg_escape_literal' => array(
  814. '5.4' => false,
  815. '5.5' => true,
  816. ),
  817. 'pg_escape_identifier' => array(
  818. '5.4' => false,
  819. '5.5' => true,
  820. ),
  821. 'socket_sendmsg' => array(
  822. '5.4' => false,
  823. '5.5' => true,
  824. ),
  825. 'socket_recvmsg' => array(
  826. '5.4' => false,
  827. '5.5' => true,
  828. ),
  829. 'socket_cmsg_space' => array(
  830. '5.4' => false,
  831. '5.5' => true,
  832. ),
  833. 'cli_get_process_title' => array(
  834. '5.4' => false,
  835. '5.5' => true,
  836. ),
  837. 'cli_set_process_title' => array(
  838. '5.4' => false,
  839. '5.5' => true,
  840. ),
  841. 'datefmt_format_object' => array(
  842. '5.4' => false,
  843. '5.5' => true,
  844. ),
  845. 'datefmt_get_calendar_object' => array(
  846. '5.4' => false,
  847. '5.5' => true,
  848. ),
  849. 'datefmt_get_timezone' => array(
  850. '5.4' => false,
  851. '5.5' => true,
  852. ),
  853. 'datefmt_set_timezone' => array(
  854. '5.4' => false,
  855. '5.5' => true,
  856. ),
  857. 'intlcal_create_instance' => array(
  858. '5.4' => false,
  859. '5.5' => true,
  860. ),
  861. 'intlcal_get_keyword_values_for_locale' => array(
  862. '5.4' => false,
  863. '5.5' => true,
  864. ),
  865. 'intlcal_get_now' => array(
  866. '5.4' => false,
  867. '5.5' => true,
  868. ),
  869. 'intlcal_get_available_locales' => array(
  870. '5.4' => false,
  871. '5.5' => true,
  872. ),
  873. 'intlcal_get' => array(
  874. '5.4' => false,
  875. '5.5' => true,
  876. ),
  877. 'intlcal_get_time' => array(
  878. '5.4' => false,
  879. '5.5' => true,
  880. ),
  881. 'intlcal_set_time' => array(
  882. '5.4' => false,
  883. '5.5' => true,
  884. ),
  885. 'intlcal_add' => array(
  886. '5.4' => false,
  887. '5.5' => true,
  888. ),
  889. 'intlcal_set_time_zone' => array(
  890. '5.4' => false,
  891. '5.5' => true,
  892. ),
  893. 'intlcal_after' => array(
  894. '5.4' => false,
  895. '5.5' => true,
  896. ),
  897. 'intlcal_before' => array(
  898. '5.4' => false,
  899. '5.5' => true,
  900. ),
  901. 'intlcal_set' => array(
  902. '5.4' => false,
  903. '5.5' => true,
  904. ),
  905. 'intlcal_roll' => array(
  906. '5.4' => false,
  907. '5.5' => true,
  908. ),
  909. 'intlcal_clear' => array(
  910. '5.4' => false,
  911. '5.5' => true,
  912. ),
  913. 'intlcal_field_difference' => array(
  914. '5.4' => false,
  915. '5.5' => true,
  916. ),
  917. 'intlcal_get_actual_maximum' => array(
  918. '5.4' => false,
  919. '5.5' => true,
  920. ),
  921. 'intlcal_get_actual_minumum' => array(
  922. '5.4' => false,
  923. '5.5' => true,
  924. ),
  925. 'intlcal_get_day_of_week_type' => array(
  926. '5.4' => false,
  927. '5.5' => true,
  928. ),
  929. 'intlcal_get_first_day_of_week' => array(
  930. '5.4' => false,
  931. '5.5' => true,
  932. ),
  933. 'intlcal_get_greatest_minimum' => array(
  934. '5.4' => false,
  935. '5.5' => true,
  936. ),
  937. 'intlcal_get_least_maximum' => array(
  938. '5.4' => false,
  939. '5.5' => true,
  940. ),
  941. 'intlcal_get_locale' => array(
  942. '5.4' => false,
  943. '5.5' => true,
  944. ),
  945. 'intlcal_get_maximum' => array(
  946. '5.4' => false,
  947. '5.5' => true,
  948. ),
  949. 'intlcal_get_minimal_days_in_first_week' => array(
  950. '5.4' => false,
  951. '5.5' => true,
  952. ),
  953. 'intlcal_get_minimum' => array(
  954. '5.4' => false,
  955. '5.5' => true,
  956. ),
  957. 'intlcal_get_time_zone' => array(
  958. '5.4' => false,
  959. '5.5' => true,
  960. ),
  961. 'intlcal_get_type' => array(
  962. '5.4' => false,
  963. '5.5' => true,
  964. ),
  965. 'intlcal_get_weekend_transition' => array(
  966. '5.4' => false,
  967. '5.5' => true,
  968. ),
  969. 'intlcal_in_daylight_time' => array(
  970. '5.4' => false,
  971. '5.5' => true,
  972. ),
  973. 'intlcal_is_equivalent_to' => array(
  974. '5.4' => false,
  975. '5.5' => true,
  976. ),
  977. 'intlcal_is_lenient' => array(
  978. '5.4' => false,
  979. '5.5' => true,
  980. ),
  981. 'intlcal_equals' => array(
  982. '5.4' => false,
  983. '5.5' => true,
  984. ),
  985. 'intlcal_get_repeated_wall_time_option' => array(
  986. '5.4' => false,
  987. '5.5' => true,
  988. ),
  989. 'intlcal_get_skipped_wall_time_option' => array(
  990. '5.4' => false,
  991. '5.5' => true,
  992. ),
  993. 'intlcal_set_repeated_wall_time_option' => array(
  994. '5.4' => false,
  995. '5.5' => true,
  996. ),
  997. 'intlcal_set_skipped_wall_time_option' => array(
  998. '5.4' => false,
  999. '5.5' => true,
  1000. ),
  1001. 'intlcal_from_date_time' => array(
  1002. '5.4' => false,
  1003. '5.5' => true,
  1004. ),
  1005. 'intlcal_to_date_time' => array(
  1006. '5.4' => false,
  1007. '5.5' => true,
  1008. ),
  1009. 'intlcal_get_error_code' => array(
  1010. '5.4' => false,
  1011. '5.5' => true,
  1012. ),
  1013. 'intlcal_get_error_message' => array(
  1014. '5.4' => false,
  1015. '5.5' => true,
  1016. ),
  1017. 'intlgregcal_create_instance' => array(
  1018. '5.4' => false,
  1019. '5.5' => true,
  1020. ),
  1021. 'intlgregcal_set_gregorian_change' => array(
  1022. '5.4' => false,
  1023. '5.5' => true,
  1024. ),
  1025. 'intlgregcal_get_gregorian_change' => array(
  1026. '5.4' => false,
  1027. '5.5' => true,
  1028. ),
  1029. 'intlgregcal_is_leap_year' => array(
  1030. '5.4' => false,
  1031. '5.5' => true,
  1032. ),
  1033. 'intlz_create_time_zone' => array(
  1034. '5.4' => false,
  1035. '5.5' => true,
  1036. ),
  1037. 'intlz_create_default' => array(
  1038. '5.4' => false,
  1039. '5.5' => true,
  1040. ),
  1041. 'intlz_get_id' => array(
  1042. '5.4' => false,
  1043. '5.5' => true,
  1044. ),
  1045. 'intlz_get_gmt' => array(
  1046. '5.4' => false,
  1047. '5.5' => true,
  1048. ),
  1049. 'intlz_get_unknown' => array(
  1050. '5.4' => false,
  1051. '5.5' => true,
  1052. ),
  1053. 'intlz_create_enumeration' => array(
  1054. '5.4' => false,
  1055. '5.5' => true,
  1056. ),
  1057. 'intlz_count_equivalent_ids' => array(
  1058. '5.4' => false,
  1059. '5.5' => true,
  1060. ),
  1061. 'intlz_create_time_zone_id_enumeration' => array(
  1062. '5.4' => false,
  1063. '5.5' => true,
  1064. ),
  1065. 'intlz_get_canonical_id' => array(
  1066. '5.4' => false,
  1067. '5.5' => true,
  1068. ),
  1069. 'intlz_get_region' => array(
  1070. '5.4' => false,
  1071. '5.5' => true,
  1072. ),
  1073. 'intlz_get_tz_data_version' => array(
  1074. '5.4' => false,
  1075. '5.5' => true,
  1076. ),
  1077. 'intlz_get_equivalent_id' => array(
  1078. '5.4' => false,
  1079. '5.5' => true,
  1080. ),
  1081. 'intlz_use_daylight_time' => array(
  1082. '5.4' => false,
  1083. '5.5' => true,
  1084. ),
  1085. 'intlz_get_offset' => array(
  1086. '5.4' => false,
  1087. '5.5' => true,
  1088. ),
  1089. 'intlz_get_raw_offset' => array(
  1090. '5.4' => false,
  1091. '5.5' => true,
  1092. ),
  1093. 'intlz_has_same_rules' => array(
  1094. '5.4' => false,
  1095. '5.5' => true,
  1096. ),
  1097. 'intlz_get_display_name' => array(
  1098. '5.4' => false,
  1099. '5.5' => true,
  1100. ),
  1101. 'intlz_get_dst_savings' => array(
  1102. '5.4' => false,
  1103. '5.5' => true,
  1104. ),
  1105. 'intlz_from_date_time_zone' => array(
  1106. '5.4' => false,
  1107. '5.5' => true,
  1108. ),
  1109. 'intlz_to_date_time_zone' => array(
  1110. '5.4' => false,
  1111. '5.5' => true,
  1112. ),
  1113. 'intlz_get_error_code' => array(
  1114. '5.4' => false,
  1115. '5.5' => true,
  1116. ),
  1117. 'intlz_get_error_message' => array(
  1118. '5.4' => false,
  1119. '5.5' => true,
  1120. ),
  1121. 'opcache_compile_file' => array(
  1122. '5.4' => false,
  1123. '5.5' => true,
  1124. ),
  1125. 'opcache_get_configuration' => array(
  1126. '5.4' => false,
  1127. '5.5' => true,
  1128. ),
  1129. 'opcache_get_status' => array(
  1130. '5.4' => false,
  1131. '5.5' => true,
  1132. ),
  1133. 'opcache_invalidate' => array(
  1134. '5.4' => false,
  1135. '5.5' => true,
  1136. ),
  1137. 'opcache_reset' => array(
  1138. '5.4' => false,
  1139. '5.5' => true,
  1140. ),
  1141. 'opcache_is_script_cached' => array(
  1142. '5.5.10' => false,
  1143. '5.5.11' => true,
  1144. ),
  1145. 'gmp_root' => array(
  1146. '5.5' => false,
  1147. '5.6' => true,
  1148. ),
  1149. 'gmp_rootrem' => array(
  1150. '5.5' => false,
  1151. '5.6' => true,
  1152. ),
  1153. 'hash_equals' => array(
  1154. '5.5' => false,
  1155. '5.6' => true,
  1156. ),
  1157. 'ldap_escape' => array(
  1158. '5.5' => false,
  1159. '5.6' => true,
  1160. ),
  1161. 'ldap_modify_batch' => array(
  1162. '5.4.25' => false,
  1163. '5.5.9' => false,
  1164. '5.4.26' => true,
  1165. '5.5.10' => true,
  1166. '5.6.0' => true,
  1167. ),
  1168. 'mysqli_get_links_stats' => array(
  1169. '5.5' => false,
  1170. '5.6' => true,
  1171. ),
  1172. 'openssl_get_cert_locations' => array(
  1173. '5.5' => false,
  1174. '5.6' => true,
  1175. ),
  1176. 'openssl_x509_fingerprint' => array(
  1177. '5.5' => false,
  1178. '5.6' => true,
  1179. ),
  1180. 'openssl_spki_new' => array(
  1181. '5.5' => false,
  1182. '5.6' => true,
  1183. ),
  1184. 'openssl_spki_verify' => array(
  1185. '5.5' => false,
  1186. '5.6' => true,
  1187. ),
  1188. 'openssl_spki_export_challenge' => array(
  1189. '5.5' => false,
  1190. '5.6' => true,
  1191. ),
  1192. 'openssl_spki_export' => array(
  1193. '5.5' => false,
  1194. '5.6' => true,
  1195. ),
  1196. 'pg_connect_poll' => array(
  1197. '5.5' => false,
  1198. '5.6' => true,
  1199. ),
  1200. 'pg_consume_input' => array(
  1201. '5.5' => false,
  1202. '5.6' => true,
  1203. ),
  1204. 'pg_flush' => array(
  1205. '5.5' => false,
  1206. '5.6' => true,
  1207. ),
  1208. 'pg_lo_truncate' => array(
  1209. '5.5' => false,
  1210. '5.6' => true,
  1211. ),
  1212. 'pg_socket' => array(
  1213. '5.5' => false,
  1214. '5.6' => true,
  1215. ),
  1216. 'session_abort' => array(
  1217. '5.5' => false,
  1218. '5.6' => true,
  1219. ),
  1220. 'session_reset' => array(
  1221. '5.5' => false,
  1222. '5.6' => true,
  1223. ),
  1224. 'random_bytes' => array(
  1225. '5.6' => false,
  1226. '7.0' => true,
  1227. ),
  1228. 'random_int' => array(
  1229. '5.6' => false,
  1230. '7.0' => true,
  1231. ),
  1232. 'error_clear_last' => array(
  1233. '5.6' => false,
  1234. '7.0' => true,
  1235. ),
  1236. 'gmp_random_seed' => array(
  1237. '5.6' => false,
  1238. '7.0' => true,
  1239. ),
  1240. 'intdiv' => array(
  1241. '5.6' => false,
  1242. '7.0' => true,
  1243. ),
  1244. 'preg_replace_callback_array' => array(
  1245. '5.6' => false,
  1246. '7.0' => true,
  1247. ),
  1248. 'gc_mem_caches' => array(
  1249. '5.6' => false,
  1250. '7.0' => true,
  1251. ),
  1252. 'get_resources' => array(
  1253. '5.6' => false,
  1254. '7.0' => true,
  1255. ),
  1256. 'posix_setrlimit' => array(
  1257. '5.6' => false,
  1258. '7.0' => true,
  1259. ),
  1260. 'inflate_add' => array(
  1261. '5.6' => false,
  1262. '7.0' => true,
  1263. ),
  1264. 'deflate_add' => array(
  1265. '5.6' => false,
  1266. '7.0' => true,
  1267. ),
  1268. 'inflate_init' => array(
  1269. '5.6' => false,
  1270. '7.0' => true,
  1271. ),
  1272. 'deflate_init' => array(
  1273. '5.6' => false,
  1274. '7.0' => true,
  1275. ),
  1276. 'socket_export_stream' => array(
  1277. '7.0.6' => false,
  1278. '7.0.7' => true,
  1279. ),
  1280. 'curl_multi_errno' => array(
  1281. '7.0' => false,
  1282. '7.1' => true,
  1283. ),
  1284. 'curl_share_errno' => array(
  1285. '7.0' => false,
  1286. '7.1' => true,
  1287. ),
  1288. 'curl_share_strerror' => array(
  1289. '7.0' => false,
  1290. '7.1' => true,
  1291. ),
  1292. 'is_iterable' => array(
  1293. '7.0' => false,
  1294. '7.1' => true,
  1295. ),
  1296. 'pcntl_async_signals' => array(
  1297. '7.0' => false,
  1298. '7.1' => true,
  1299. ),
  1300. 'pcntl_signal_get_handler' => array(
  1301. '7.0' => false,
  1302. '7.1' => true,
  1303. ),
  1304. 'session_create_id' => array(
  1305. '7.0' => false,
  1306. '7.1' => true,
  1307. ),
  1308. 'session_gc' => array(
  1309. '7.0' => false,
  1310. '7.1' => true,
  1311. ),
  1312. 'sapi_windows_cp_set' => array(
  1313. '7.0' => false,
  1314. '7.1' => true,
  1315. ),
  1316. 'sapi_windows_cp_get' => array(
  1317. '7.0' => false,
  1318. '7.1' => true,
  1319. ),
  1320. 'sapi_windows_cp_is_utf8' => array(
  1321. '7.0' => false,
  1322. '7.1' => true,
  1323. ),
  1324. 'sapi_windows_cp_conv' => array(
  1325. '7.0' => false,
  1326. '7.1' => true,
  1327. ),
  1328. 'hash_hkdf' => array(
  1329. '7.1.1' => false,
  1330. '7.1.2' => true,
  1331. ),
  1332. 'oci_register_taf_callback' => array(
  1333. '7.1.6' => false,
  1334. '7.1.7' => true,
  1335. ),
  1336. 'oci_unregister_taf_callback' => array(
  1337. '7.1.8' => false,
  1338. '7.1.9' => true,
  1339. ),
  1340. 'stream_isatty' => array(
  1341. '7.1' => false,
  1342. '7.2' => true,
  1343. ),
  1344. 'sapi_windows_vt100_support' => array(
  1345. '7.1' => false,
  1346. '7.2' => true,
  1347. ),
  1348. 'ftp_append' => array(
  1349. '7.1' => false,
  1350. '7.2' => true,
  1351. ),
  1352. 'hash_hmac_algos' => array(
  1353. '7.1' => false,
  1354. '7.2' => true,
  1355. ),
  1356. 'imagebmp' => array(
  1357. '7.1' => false,
  1358. '7.2' => true,
  1359. ),
  1360. 'imagecreatefrombmp' => array(
  1361. '7.1' => false,
  1362. '7.2' => true,
  1363. ),
  1364. 'imagegetclip' => array(
  1365. '7.1' => false,
  1366. '7.2' => true,
  1367. ),
  1368. 'imageopenpolygon' => array(
  1369. '7.1' => false,
  1370. '7.2' => true,
  1371. ),
  1372. 'imageresolution' => array(
  1373. '7.1' => false,
  1374. '7.2' => true,
  1375. ),
  1376. 'imagesetclip' => array(
  1377. '7.1' => false,
  1378. '7.2' => true,
  1379. ),
  1380. 'ldap_exop' => array(
  1381. '7.1' => false,
  1382. '7.2' => true,
  1383. ),
  1384. 'ldap_exop_passwd' => array(
  1385. '7.1' => false,
  1386. '7.2' => true,
  1387. ),
  1388. 'ldap_exop_whoami' => array(
  1389. '7.1' => false,
  1390. '7.2' => true,
  1391. ),
  1392. 'ldap_parse_exop' => array(
  1393. '7.1' => false,
  1394. '7.2' => true,
  1395. ),
  1396. 'mb_chr' => array(
  1397. '7.1' => false,
  1398. '7.2' => true,
  1399. ),
  1400. 'mb_ord' => array(
  1401. '7.1' => false,
  1402. '7.2' => true,
  1403. ),
  1404. 'mb_scrub' => array(
  1405. '7.1' => false,
  1406. '7.2' => true,
  1407. ),
  1408. 'socket_addrinfo_lookup' => array(
  1409. '7.1' => false,
  1410. '7.2' => true,
  1411. ),
  1412. 'socket_addrinfo_connect' => array(
  1413. '7.1' => false,
  1414. '7.2' => true,
  1415. ),
  1416. 'socket_addrinfo_bind' => array(
  1417. '7.1' => false,
  1418. '7.2' => true,
  1419. ),
  1420. 'socket_addrinfo_explain' => array(
  1421. '7.1' => false,
  1422. '7.2' => true,
  1423. ),
  1424. 'spl_object_id' => array(
  1425. '7.1' => false,
  1426. '7.2' => true,
  1427. ),
  1428. 'sodium_add' => array(
  1429. '7.1' => false,
  1430. '7.2' => true,
  1431. ),
  1432. 'sodium_base642bin' => array(
  1433. '7.1' => false,
  1434. '7.2' => true,
  1435. ),
  1436. 'sodium_bin2base64' => array(
  1437. '7.1' => false,
  1438. '7.2' => true,
  1439. ),
  1440. 'sodium_bin2hex' => array(
  1441. '7.1' => false,
  1442. '7.2' => true,
  1443. ),
  1444. 'sodium_compare' => array(
  1445. '7.1' => false,
  1446. '7.2' => true,
  1447. ),
  1448. 'sodium_crypto_aead_aes256gcm_decrypt' => array(
  1449. '7.1' => false,
  1450. '7.2' => true,
  1451. ),
  1452. 'sodium_crypto_aead_aes256gcm_encrypt' => array(
  1453. '7.1' => false,
  1454. '7.2' => true,
  1455. ),
  1456. 'sodium_crypto_aead_aes256gcm_is_available' => array(
  1457. '7.1' => false,
  1458. '7.2' => true,
  1459. ),
  1460. 'sodium_crypto_aead_aes256gcm_keygen' => array(
  1461. '7.1' => false,
  1462. '7.2' => true,
  1463. ),
  1464. 'sodium_crypto_aead_chacha20poly1305_decrypt' => array(
  1465. '7.1' => false,
  1466. '7.2' => true,
  1467. ),
  1468. 'sodium_crypto_aead_chacha20poly1305_encrypt' => array(
  1469. '7.1' => false,
  1470. '7.2' => true,
  1471. ),
  1472. 'sodium_crypto_aead_chacha20poly1305_ietf_decrypt' => array(
  1473. '7.1' => false,
  1474. '7.2' => true,
  1475. ),
  1476. 'sodium_crypto_aead_chacha20poly1305_ietf_encrypt' => array(
  1477. '7.1' => false,
  1478. '7.2' => true,
  1479. ),
  1480. 'sodium_crypto_aead_chacha20poly1305_ietf_keygen' => array(
  1481. '7.1' => false,
  1482. '7.2' => true,
  1483. ),
  1484. 'sodium_crypto_aead_chacha20poly1305_keygen' => array(
  1485. '7.1' => false,
  1486. '7.2' => true,
  1487. ),
  1488. 'sodium_crypto_aead_xchacha20poly1305_ietf_decrypt' => array(
  1489. '7.1' => false,
  1490. '7.2' => true,
  1491. ),
  1492. 'sodium_crypto_aead_xchacha20poly1305_ietf_encrypt' => array(
  1493. '7.1' => false,
  1494. '7.2' => true,
  1495. ),
  1496. 'sodium_crypto_aead_xchacha20poly1305_ietf_keygen' => array(
  1497. '7.1' => false,
  1498. '7.2' => true,
  1499. ),
  1500. 'sodium_crypto_auth_keygen' => array(
  1501. '7.1' => false,
  1502. '7.2' => true,
  1503. ),
  1504. 'sodium_crypto_auth_verify' => array(
  1505. '7.1' => false,
  1506. '7.2' => true,
  1507. ),
  1508. 'sodium_crypto_auth' => array(
  1509. '7.1' => false,
  1510. '7.2' => true,
  1511. ),
  1512. 'sodium_crypto_box_keypair_from_secretkey_and_publickey' => array(
  1513. '7.1' => false,
  1514. '7.2' => true,
  1515. ),
  1516. 'sodium_crypto_box_keypair' => array(
  1517. '7.1' => false,
  1518. '7.2' => true,
  1519. ),
  1520. 'sodium_crypto_box_open' => array(
  1521. '7.1' => false,
  1522. '7.2' => true,
  1523. ),
  1524. 'sodium_crypto_box_publickey_from_secretkey' => array(
  1525. '7.1' => false,
  1526. '7.2' => true,
  1527. ),
  1528. 'sodium_crypto_box_publickey' => array(
  1529. '7.1' => false,
  1530. '7.2' => true,
  1531. ),
  1532. 'sodium_crypto_box_seal_open' => array(
  1533. '7.1' => false,
  1534. '7.2' => true,
  1535. ),
  1536. 'sodium_crypto_box_seal' => array(
  1537. '7.1' => false,
  1538. '7.2' => true,
  1539. ),
  1540. 'sodium_crypto_box_secretkey' => array(
  1541. '7.1' => false,
  1542. '7.2' => true,
  1543. ),
  1544. 'sodium_crypto_box_seed_keypair' => array(
  1545. '7.1' => false,
  1546. '7.2' => true,
  1547. ),
  1548. 'sodium_crypto_box' => array(
  1549. '7.1' => false,
  1550. '7.2' => true,
  1551. ),
  1552. 'sodium_crypto_generichash_final' => array(
  1553. '7.1' => false,
  1554. '7.2' => true,
  1555. ),
  1556. 'sodium_crypto_generichash_init' => array(
  1557. '7.1' => false,
  1558. '7.2' => true,
  1559. ),
  1560. 'sodium_crypto_generichash_keygen' => array(
  1561. '7.1' => false,
  1562. '7.2' => true,
  1563. ),
  1564. 'sodium_crypto_generichash_update' => array(
  1565. '7.1' => false,
  1566. '7.2' => true,
  1567. ),
  1568. 'sodium_crypto_generichash' => array(
  1569. '7.1' => false,
  1570. '7.2' => true,
  1571. ),
  1572. 'sodium_crypto_kdf_derive_from_key' => array(
  1573. '7.1' => false,
  1574. '7.2' => true,
  1575. ),
  1576. 'sodium_crypto_kdf_keygen' => array(
  1577. '7.1' => false,
  1578. '7.2' => true,
  1579. ),
  1580. 'sodium_crypto_kx_client_session_keys' => array(
  1581. '7.1' => false,
  1582. '7.2' => true,
  1583. ),
  1584. 'sodium_crypto_kx_keypair' => array(
  1585. '7.1' => false,
  1586. '7.2' => true,
  1587. ),
  1588. 'sodium_crypto_kx_publickey' => array(
  1589. '7.1' => false,
  1590. '7.2' => true,
  1591. ),
  1592. 'sodium_crypto_kx_secretkey' => array(
  1593. '7.1' => false,
  1594. '7.2' => true,
  1595. ),
  1596. 'sodium_crypto_kx_seed_keypair' => array(
  1597. '7.1' => false,
  1598. '7.2' => true,
  1599. ),
  1600. 'sodium_crypto_kx_server_session_keys' => array(
  1601. '7.1' => false,
  1602. '7.2' => true,
  1603. ),
  1604. 'sodium_crypto_pwhash_scryptsalsa208sha256_str_verify' => array(
  1605. '7.1' => false,
  1606. '7.2' => true,
  1607. ),
  1608. 'sodium_crypto_pwhash_scryptsalsa208sha256_str' => array(
  1609. '7.1' => false,
  1610. '7.2' => true,
  1611. ),
  1612. 'sodium_crypto_pwhash_scryptsalsa208sha256' => array(
  1613. '7.1' => false,
  1614. '7.2' => true,
  1615. ),
  1616. 'sodium_crypto_pwhash_str_needs_rehash' => array(
  1617. '7.1' => false,
  1618. '7.2' => true,
  1619. ),
  1620. 'sodium_crypto_pwhash_str_verify' => array(
  1621. '7.1' => false,
  1622. '7.2' => true,
  1623. ),
  1624. 'sodium_crypto_pwhash_str' => array(
  1625. '7.1' => false,
  1626. '7.2' => true,
  1627. ),
  1628. 'sodium_crypto_pwhash' => array(
  1629. '7.1' => false,
  1630. '7.2' => true,
  1631. ),
  1632. 'sodium_crypto_scalarmult_base' => array(
  1633. '7.1' => false,
  1634. '7.2' => true,
  1635. ),
  1636. 'sodium_crypto_scalarmult' => array(
  1637. '7.1' => false,
  1638. '7.2' => true,
  1639. ),
  1640. 'sodium_crypto_secretbox_keygen' => array(
  1641. '7.1' => false,
  1642. '7.2' => true,
  1643. ),
  1644. 'sodium_crypto_secretbox_open' => array(
  1645. '7.1' => false,
  1646. '7.2' => true,
  1647. ),
  1648. 'sodium_crypto_secretbox' => array(
  1649. '7.1' => false,
  1650. '7.2' => true,
  1651. ),
  1652. 'sodium_crypto_secretstream_xchacha20poly1305_init_pull' => array(
  1653. '7.1' => false,
  1654. '7.2' => true,
  1655. ),
  1656. 'sodium_crypto_secretstream_xchacha20poly1305_init_push' => array(
  1657. '7.1' => false,
  1658. '7.2' => true,
  1659. ),
  1660. 'sodium_crypto_secretstream_xchacha20poly1305_keygen' => array(
  1661. '7.1' => false,
  1662. '7.2' => true,
  1663. ),
  1664. 'sodium_crypto_secretstream_xchacha20poly1305_pull' => array(
  1665. '7.1' => false,
  1666. '7.2' => true,
  1667. ),
  1668. 'sodium_crypto_secretstream_xchacha20poly1305_push' => array(
  1669. '7.1' => false,
  1670. '7.2' => true,
  1671. ),
  1672. 'sodium_crypto_secretstream_xchacha20poly1305_rekey' => array(
  1673. '7.1' => false,
  1674. '7.2' => true,
  1675. ),
  1676. 'sodium_crypto_shorthash_keygen' => array(
  1677. '7.1' => false,
  1678. '7.2' => true,
  1679. ),
  1680. 'sodium_crypto_shorthash' => array(
  1681. '7.1' => false,
  1682. '7.2' => true,
  1683. ),
  1684. 'sodium_crypto_sign_detached' => array(
  1685. '7.1' => false,
  1686. '7.2' => true,
  1687. ),
  1688. 'sodium_crypto_sign_ed25519_pk_to_curve25519' => array(
  1689. '7.1' => false,
  1690. '7.2' => true,
  1691. ),
  1692. 'sodium_crypto_sign_ed25519_sk_to_curve25519' => array(
  1693. '7.1' => false,
  1694. '7.2' => true,
  1695. ),
  1696. 'sodium_crypto_sign_keypair_from_secretkey_and_publickey' => array(
  1697. '7.1' => false,
  1698. '7.2' => true,
  1699. ),
  1700. 'sodium_crypto_sign_keypair' => array(
  1701. '7.1' => false,
  1702. '7.2' => true,
  1703. ),
  1704. 'sodium_crypto_sign_open' => array(
  1705. '7.1' => false,
  1706. '7.2' => true,
  1707. ),
  1708. 'sodium_crypto_sign_publickey_from_secretkey' => array(
  1709. '7.1' => false,
  1710. '7.2' => true,
  1711. ),
  1712. 'sodium_crypto_sign_publickey' => array(
  1713. '7.1' => false,
  1714. '7.2' => true,
  1715. ),
  1716. 'sodium_crypto_sign_secretkey' => array(
  1717. '7.1' => false,
  1718. '7.2' => true,
  1719. ),
  1720. 'sodium_crypto_sign_seed_keypair' => array(
  1721. '7.1' => false,
  1722. '7.2' => true,
  1723. ),
  1724. 'sodium_crypto_sign_verify_detached' => array(
  1725. '7.1' => false,
  1726. '7.2' => true,
  1727. ),
  1728. 'sodium_crypto_sign' => array(
  1729. '7.1' => false,
  1730. '7.2' => true,
  1731. ),
  1732. 'sodium_crypto_stream_keygen' => array(
  1733. '7.1' => false,
  1734. '7.2' => true,
  1735. ),
  1736. 'sodium_crypto_stream_xor' => array(
  1737. '7.1' => false,
  1738. '7.2' => true,
  1739. ),
  1740. 'sodium_crypto_stream' => array(
  1741. '7.1' => false,
  1742. '7.2' => true,
  1743. ),
  1744. 'sodium_hex2bin' => array(
  1745. '7.1' => false,
  1746. '7.2' => true,
  1747. ),
  1748. 'sodium_increment' => array(
  1749. '7.1' => false,
  1750. '7.2' => true,
  1751. ),
  1752. 'sodium_memcmp' => array(
  1753. '7.1' => false,
  1754. '7.2' => true,
  1755. ),
  1756. 'sodium_memzero' => array(
  1757. '7.1' => false,
  1758. '7.2' => true,
  1759. ),
  1760. 'sodium_pad' => array(
  1761. '7.1' => false,
  1762. '7.2' => true,
  1763. ),
  1764. 'sodium_unpad' => array(
  1765. '7.1' => false,
  1766. '7.2' => true,
  1767. ),
  1768. // Introduced in 7.2.14 and 7.3.1 simultanously.
  1769. 'oci_set_call_timeout' => array(
  1770. '7.2.13' => false,
  1771. '7.2.14' => true,
  1772. ),
  1773. // Introduced in 7.2.14 and 7.3.1 simultanously.
  1774. 'oci_set_db_operation' => array(
  1775. '7.2.13' => false,
  1776. '7.2.14' => true,
  1777. ),
  1778. 'hrtime' => array(
  1779. '7.2' => false,
  1780. '7.3' => true,
  1781. ),
  1782. 'is_countable' => array(
  1783. '7.2' => false,
  1784. '7.3' => true,
  1785. ),
  1786. 'array_key_first' => array(
  1787. '7.2' => false,
  1788. '7.3' => true,
  1789. ),
  1790. 'array_key_last' => array(
  1791. '7.2' => false,
  1792. '7.3' => true,
  1793. ),
  1794. 'fpm_get_status' => array(
  1795. '7.2' => false,
  1796. '7.3' => true,
  1797. ),
  1798. 'net_get_interfaces' => array(
  1799. '7.2' => false,
  1800. '7.3' => true,
  1801. ),
  1802. 'gmp_binomial' => array(
  1803. '7.2' => false,
  1804. '7.3' => true,
  1805. ),
  1806. 'gmp_lcm' => array(
  1807. '7.2' => false,
  1808. '7.3' => true,
  1809. ),
  1810. 'gmp_perfect_power' => array(
  1811. '7.2' => false,
  1812. '7.3' => true,
  1813. ),
  1814. 'gmp_kronecker' => array(
  1815. '7.2' => false,
  1816. '7.3' => true,
  1817. ),
  1818. 'ldap_add_ext' => array(
  1819. '7.2' => false,
  1820. '7.3' => true,
  1821. ),
  1822. 'ldap_bind_ext' => array(
  1823. '7.2' => false,
  1824. '7.3' => true,
  1825. ),
  1826. 'ldap_delete_ext' => array(
  1827. '7.2' => false,
  1828. '7.3' => true,
  1829. ),
  1830. 'ldap_exop_refresh' => array(
  1831. '7.2' => false,
  1832. '7.3' => true,
  1833. ),
  1834. 'ldap_mod_add_ext' => array(
  1835. '7.2' => false,
  1836. '7.3' => true,
  1837. ),
  1838. 'ldap_mod_replace_ext' => array(
  1839. '7.2' => false,
  1840. '7.3' => true,
  1841. ),
  1842. 'ldap_mod_del_ext' => array(
  1843. '7.2' => false,
  1844. '7.3' => true,
  1845. ),
  1846. 'ldap_rename_ext' => array(
  1847. '7.2' => false,
  1848. '7.3' => true,
  1849. ),
  1850. 'normalizer_get_raw_decomposition' => array(
  1851. '7.2' => false,
  1852. '7.3' => true,
  1853. ),
  1854. 'openssl_pkey_derive' => array(
  1855. '7.2' => false,
  1856. '7.3' => true,
  1857. ),
  1858. 'socket_wsaprotocol_info_export' => array(
  1859. '7.2' => false,
  1860. '7.3' => true,
  1861. ),
  1862. 'socket_wsaprotocol_info_import' => array(
  1863. '7.2' => false,
  1864. '7.3' => true,
  1865. ),
  1866. 'socket_wsaprotocol_info_release' => array(
  1867. '7.2' => false,
  1868. '7.3' => true,
  1869. ),
  1870. 'get_mangled_object_vars' => array(
  1871. '7.3' => false,
  1872. '7.4' => true,
  1873. ),
  1874. 'imagecreatefromtga' => array(
  1875. '7.3' => false,
  1876. '7.4' => true,
  1877. ),
  1878. 'mb_str_split' => array(
  1879. '7.3' => false,
  1880. '7.4' => true,
  1881. ),
  1882. 'openssl_x509_verify' => array(
  1883. '7.3' => false,
  1884. '7.4' => true,
  1885. ),
  1886. 'password_algos' => array(
  1887. '7.3' => false,
  1888. '7.4' => true,
  1889. ),
  1890. 'pcntl_unshare' => array(
  1891. '7.3' => false,
  1892. '7.4' => true,
  1893. ),
  1894. 'sapi_windows_set_ctrl_handler' => array(
  1895. '7.3' => false,
  1896. '7.4' => true,
  1897. ),
  1898. 'sapi_windows_generate_ctrl_event' => array(
  1899. '7.3' => false,
  1900. '7.4' => true,
  1901. ),
  1902. );
  1903. /**
  1904. * Returns an array of tokens this test wants to listen for.
  1905. *
  1906. * @since 5.6
  1907. *
  1908. * @return array
  1909. */
  1910. public function register()
  1911. {
  1912. // Handle case-insensitivity of function names.
  1913. $this->newFunctions = $this->arrayKeysToLowercase($this->newFunctions);
  1914. return array(\T_STRING);
  1915. }
  1916. /**
  1917. * Processes this test, when one of its tokens is encountered.
  1918. *
  1919. * @since 5.5
  1920. *
  1921. * @param \PHP_CodeSniffer_File $phpcsFile The file being scanned.
  1922. * @param int $stackPtr The position of the current token in
  1923. * the stack passed in $tokens.
  1924. *
  1925. * @return void
  1926. */
  1927. public function process(File $phpcsFile, $stackPtr)
  1928. {
  1929. $tokens = $phpcsFile->getTokens();
  1930. $ignore = array(
  1931. \T_DOUBLE_COLON => true,
  1932. \T_OBJECT_OPERATOR => true,
  1933. \T_FUNCTION => true,
  1934. \T_CONST => true,
  1935. );
  1936. $prevToken = $phpcsFile->findPrevious(\T_WHITESPACE, ($stackPtr - 1), null, true);
  1937. if (isset($ignore[$tokens[$prevToken]['code']]) === true) {
  1938. // Not a call to a PHP function.
  1939. return;
  1940. } elseif ($tokens[$prevToken]['code'] === \T_NS_SEPARATOR && $tokens[$prevToken - 1]['code'] === \T_STRING) {
  1941. // Namespaced function.
  1942. return;
  1943. }
  1944. $function = $tokens[$stackPtr]['content'];
  1945. $functionLc = strtolower($function);
  1946. if (isset($this->newFunctions[$functionLc]) === false) {
  1947. return;
  1948. }
  1949. $itemInfo = array(
  1950. 'name' => $function,
  1951. 'nameLc' => $functionLc,
  1952. );
  1953. $this->handleFeature($phpcsFile, $stackPtr, $itemInfo);
  1954. }
  1955. /**
  1956. * Get the relevant sub-array for a specific item from a multi-dimensional array.
  1957. *
  1958. * @since 7.1.0
  1959. *
  1960. * @param array $itemInfo Base information about the item.
  1961. *
  1962. * @return array Version and other information about the item.
  1963. */
  1964. public function getItemArray(array $itemInfo)
  1965. {
  1966. return $this->newFunctions[$itemInfo['nameLc']];
  1967. }
  1968. /**
  1969. * Get the error message template for this sniff.
  1970. *
  1971. * @since 7.1.0
  1972. *
  1973. * @return string
  1974. */
  1975. protected function getErrorMsgTemplate()
  1976. {
  1977. return 'The function %s() is not present in PHP version %s or earlier';
  1978. }
  1979. }