Skip to content

Commit 7ffabfd

Browse files
authored
Move library files to the Lib directory and namespace (#28)
* Move passByRefFunctions and doubleQuoted regexp to Constants * Move libs to Lib directory * Add composer lint
1 parent df530b7 commit 7ffabfd

File tree

5 files changed

+270
-255
lines changed

5 files changed

+270
-255
lines changed

VariableAnalysis/Lib/Constants.php

Lines changed: 247 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,247 @@
1+
<?php
2+
3+
namespace VariableAnalysis\Lib;
4+
5+
class Constants {
6+
/**
7+
* Array of known pass-by-reference functions and the argument(s) which are passed
8+
* by reference, the arguments are numbered starting from 1 and an elipsis '...'
9+
* means all argument numbers after the previous should be considered pass-by-reference.
10+
*/
11+
public static function getPassByReferenceFunctions(): array {
12+
return array(
13+
'__soapCall' => array(5),
14+
'addFunction' => array(3),
15+
'addTask' => array(3),
16+
'addTaskBackground' => array(3),
17+
'addTaskHigh' => array(3),
18+
'addTaskHighBackground' => array(3),
19+
'addTaskLow' => array(3),
20+
'addTaskLowBackground' => array(3),
21+
'addTaskStatus' => array(2),
22+
'apc_dec' => array(3),
23+
'apc_fetch' => array(2),
24+
'apc_inc' => array(3),
25+
'areConfusable' => array(3),
26+
'array_multisort' => array(1),
27+
'array_pop' => array(1),
28+
'array_push' => array(1),
29+
'array_replace' => array(1),
30+
'array_replace_recursive' => array(1, 2, 3, '...'),
31+
'array_shift' => array(1),
32+
'array_splice' => array(1),
33+
'array_unshift' => array(1),
34+
'array_walk' => array(1),
35+
'array_walk_recursive' => array(1),
36+
'arsort' => array(1),
37+
'asort' => array(1),
38+
'asort' => array(1),
39+
'bindColumn' => array(2),
40+
'bindParam' => array(2),
41+
'bind_param' => array(2, 3, '...'),
42+
'bind_result' => array(1, 2, '...'),
43+
'call_user_method' => array(2),
44+
'call_user_method_array' => array(2),
45+
'curl_multi_exec' => array(2),
46+
'curl_multi_info_read' => array(2),
47+
'current' => array(1),
48+
'dbplus_curr' => array(2),
49+
'dbplus_first' => array(2),
50+
'dbplus_info' => array(3),
51+
'dbplus_last' => array(2),
52+
'dbplus_next' => array(2),
53+
'dbplus_prev' => array(2),
54+
'dbplus_tremove' => array(3),
55+
'dns_get_record' => array(3, 4),
56+
'domxml_open_file' => array(3),
57+
'domxml_open_mem' => array(3),
58+
'each' => array(1),
59+
'enchant_dict_quick_check' => array(3),
60+
'end' => array(1),
61+
'ereg' => array(3),
62+
'eregi' => array(3),
63+
'exec' => array(2, 3),
64+
'exif_thumbnail' => array(1, 2, 3),
65+
'expect_expectl' => array(3),
66+
'extract' => array(1),
67+
'filter' => array(3),
68+
'flock' => array(2,3),
69+
'fscanf' => array(2, 3, '...'),
70+
'fsockopen' => array(3, 4),
71+
'ftp_alloc' => array(3),
72+
'get' => array(2, 3),
73+
'getByKey' => array(4),
74+
'getMulti' => array(2),
75+
'getMultiByKey' => array(3),
76+
'getimagesize' => array(2),
77+
'getmxrr' => array(2, 3),
78+
'gnupg_decryptverify' => array(3),
79+
'gnupg_verify' => array(4),
80+
'grapheme_extract' => array(5),
81+
'headers_sent' => array(1, 2),
82+
'http_build_url' => array(4),
83+
'http_get' => array(3),
84+
'http_head' => array(3),
85+
'http_negotiate_charset' => array(2),
86+
'http_negotiate_content_type' => array(2),
87+
'http_negotiate_language' => array(2),
88+
'http_post_data' => array(4),
89+
'http_post_fields' => array(5),
90+
'http_put_data' => array(4),
91+
'http_put_file' => array(4),
92+
'http_put_stream' => array(4),
93+
'http_request' => array(5),
94+
'isSuspicious' => array(2),
95+
'is_callable' => array(3),
96+
'key' => array(1),
97+
'krsort' => array(1),
98+
'ksort' => array(1),
99+
'ldap_get_option' => array(3),
100+
'ldap_parse_reference' => array(3),
101+
'ldap_parse_result' => array(3, 4, 5, 6),
102+
'localtime' => array(2),
103+
'm_completeauthorizations' => array(2),
104+
'maxdb_stmt_bind_param' => array(3, 4, '...'),
105+
'maxdb_stmt_bind_result' => array(2, 3, '...'),
106+
'mb_convert_variables' => array(3, 4, '...'),
107+
'mb_parse_str' => array(2),
108+
'mqseries_back' => array(2, 3),
109+
'mqseries_begin' => array(3, 4),
110+
'mqseries_close' => array(4, 5),
111+
'mqseries_cmit' => array(2, 3),
112+
'mqseries_conn' => array(2, 3, 4),
113+
'mqseries_connx' => array(2, 3, 4, 5),
114+
'mqseries_disc' => array(2, 3),
115+
'mqseries_get' => array(3, 4, 5, 6, 7, 8, 9),
116+
'mqseries_inq' => array(6, 8, 9, 10),
117+
'mqseries_open' => array(2, 4, 5, 6),
118+
'mqseries_put' => array(3, 4, 6, 7),
119+
'mqseries_put1' => array(2, 3, 4, 6, 7),
120+
'mqseries_set' => array(9, 10),
121+
'msg_receive' => array(3, 5, 8),
122+
'msg_send' => array(6),
123+
'mssql_bind' => array(3),
124+
'natcasesort' => array(1),
125+
'natsort' => array(1),
126+
'ncurses_color_content' => array(2, 3, 4),
127+
'ncurses_getmaxyx' => array(2, 3),
128+
'ncurses_getmouse' => array(1),
129+
'ncurses_getyx' => array(2, 3),
130+
'ncurses_instr' => array(1),
131+
'ncurses_mouse_trafo' => array(1, 2),
132+
'ncurses_mousemask' => array(2),
133+
'ncurses_pair_content' => array(2, 3),
134+
'ncurses_wmouse_trafo' => array(2, 3),
135+
'newt_button_bar' => array(1),
136+
'newt_form_run' => array(2),
137+
'newt_get_screen_size' => array(1, 2),
138+
'newt_grid_get_size' => array(2, 3),
139+
'newt_reflow_text' => array(5, 6),
140+
'newt_win_entries' => array(7),
141+
'newt_win_menu' => array(8),
142+
'next' => array(1),
143+
'oci_bind_array_by_name' => array(3),
144+
'oci_bind_by_name' => array(3),
145+
'oci_define_by_name' => array(3),
146+
'oci_fetch_all' => array(2),
147+
'ocifetchinto' => array(2),
148+
'odbc_fetch_into' => array(2),
149+
'openssl_csr_export' => array(2),
150+
'openssl_csr_new' => array(2),
151+
'openssl_open' => array(2),
152+
'openssl_pkcs12_export' => array(2),
153+
'openssl_pkcs12_read' => array(2),
154+
'openssl_pkey_export' => array(2),
155+
'openssl_private_decrypt' => array(2),
156+
'openssl_private_encrypt' => array(2),
157+
'openssl_public_decrypt' => array(2),
158+
'openssl_public_encrypt' => array(2),
159+
'openssl_random_pseudo_bytes' => array(2),
160+
'openssl_seal' => array(2, 3),
161+
'openssl_sign' => array(2),
162+
'openssl_x509_export' => array(2),
163+
'ovrimos_fetch_into' => array(2),
164+
'parse' => array(2,3),
165+
'parseCurrency' => array(2, 3),
166+
'parse_str' => array(2),
167+
'parsekit_compile_file' => array(2),
168+
'parsekit_compile_string' => array(2),
169+
'passthru' => array(2),
170+
'pcntl_sigprocmask' => array(3),
171+
'pcntl_sigtimedwait' => array(2),
172+
'pcntl_sigwaitinfo' => array(2),
173+
'pcntl_wait' => array(1),
174+
'pcntl_waitpid' => array(2),
175+
'pfsockopen' => array(3, 4),
176+
'php_check_syntax' => array(2),
177+
'poll' => array(1, 2, 3),
178+
'preg_filter' => array(5),
179+
'preg_match' => array(3),
180+
'preg_match_all' => array(3),
181+
'preg_replace' => array(5),
182+
'preg_replace_callback' => array(5),
183+
'prev' => array(1),
184+
'proc_open' => array(3),
185+
'query' => array(3),
186+
'queryExec' => array(2),
187+
'reset' => array(1),
188+
'rsort' => array(1),
189+
'settype' => array(1),
190+
'shuffle' => array(1),
191+
'similar_text' => array(3),
192+
'socket_create_pair' => array(4),
193+
'socket_getpeername' => array(2, 3),
194+
'socket_getsockname' => array(2, 3),
195+
'socket_recv' => array(2),
196+
'socket_recvfrom' => array(2, 5, 6),
197+
'socket_select' => array(1, 2, 3),
198+
'sort' => array(1),
199+
'sortWithSortKeys' => array(1),
200+
'sqlite_exec' => array(3),
201+
'sqlite_factory' => array(3),
202+
'sqlite_open' => array(3),
203+
'sqlite_popen' => array(3),
204+
'sqlite_query' => array(4),
205+
'sqlite_query' => array(4),
206+
'sqlite_unbuffered_query' => array(4),
207+
'sscanf' => array(3, '...'),
208+
'str_ireplace' => array(4),
209+
'str_replace' => array(4),
210+
'stream_open' => array(4),
211+
'stream_select' => array(1, 2, 3),
212+
'stream_socket_accept' => array(3),
213+
'stream_socket_client' => array(2, 3),
214+
'stream_socket_recvfrom' => array(4),
215+
'stream_socket_server' => array(2, 3),
216+
'system' => array(2),
217+
'uasort' => array(1),
218+
'uksort' => array(1),
219+
'unbufferedQuery' => array(3),
220+
'usort' => array(1),
221+
'wincache_ucache_dec' => array(3),
222+
'wincache_ucache_get' => array(2),
223+
'wincache_ucache_inc' => array(3),
224+
'xdiff_string_merge3' => array(4),
225+
'xdiff_string_patch' => array(4),
226+
'xml_parse_into_struct' => array(3, 4),
227+
'xml_set_object' => array(2),
228+
'xmlrpc_decode_request' => array(2),
229+
'xmlrpc_set_type' => array(1),
230+
'xslt_set_object' => array(2),
231+
'yaml_parse' => array(3),
232+
'yaml_parse_file' => array(3),
233+
'yaml_parse_url' => array(3),
234+
'yaz_ccl_parse' => array(3),
235+
'yaz_hits' => array(2),
236+
'yaz_scan_result' => array(2),
237+
'yaz_wait' => array(1),
238+
);
239+
}
240+
241+
/**
242+
* A regexp for matching variable names in double-quoted strings.
243+
*/
244+
public static function getDoubleQuotedVarRegexp(): string {
245+
return '|(?<!\\\\)(?:\\\\{2})*\${?([a-zA-Z0-9_]+)}?|';
246+
}
247+
}

VariableAnalysis/ScopeInfo.php renamed to VariableAnalysis/Lib/ScopeInfo.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
namespace VariableAnalysis;
3+
namespace VariableAnalysis\Lib;
44

55
/**
66
* Holds details of a scope.

VariableAnalysis/VariableInfo.php renamed to VariableAnalysis/Lib/VariableInfo.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
namespace VariableAnalysis;
3+
namespace VariableAnalysis\Lib;
44

55
/**
66
* Holds details of a variable within a scope.

0 commit comments

Comments
 (0)