Skip to content

Commit c6927e0

Browse files
committed
Allow const import in the current namespace using use
1 parent e930f4b commit c6927e0

File tree

1 file changed

+17
-17
lines changed

1 file changed

+17
-17
lines changed

lib/Boris/ShallowParser.php

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -214,28 +214,28 @@ private function _scanChar($result)
214214

215215
return true;
216216
}
217-
217+
218218
private function _scanUse($result)
219219
{
220-
if (preg_match("/^use function (.+?);/", $result->buffer, $use)) {
220+
if (preg_match("/^use (?P<type>function |const )?(?P<name>.+?)( as (?P<alias>.+?))?;/", $result->buffer, $use)) {
221221
$result->buffer = substr($result->buffer, strlen($use[0]));
222-
if (strpos($use[0], ' as ') !== false) {
223-
list($function, $alias) = explode(' as ', $use[1]);
224-
} else {
225-
$function = $use[1];
226-
$alias = substr($use[1], strrpos($use[1], '\\') + 1);
222+
223+
if (! isset($use['alias']) || strlen($use['alias']) == 0) {
224+
$use['alias'] = substr($use['name'], strrpos($use['name'], '\\') + 1);
227225
}
228-
$result->statements[] = sprintf("function %s() { return call_user_func_array('%s', func_get_args()); };", $alias, $function);
229-
return true;
230-
} else if (preg_match("/^use (.+?);/", $result->buffer, $use)) {
231-
$result->buffer = substr($result->buffer, strlen($use[0]));
232-
if (strpos($use[0], ' as ') !== false) {
233-
list($class, $alias) = explode(' as ', $use[1]);
234-
} else {
235-
$class = $use[1];
236-
$alias = substr($use[1], strrpos($use[1], '\\') + 1);
226+
227+
switch(trim($use['type'])) {
228+
case 'function':
229+
$result->statements[] = sprintf("function %s() { return call_user_func_array('%s', func_get_args()); };", $use['alias'], $use['name']);
230+
break;
231+
case 'const':
232+
$result->statements[] = sprintf("define('%s', %s);", $use['alias'], $use['name']);
233+
break;
234+
default:
235+
$result->statements[] = sprintf("class_alias('%s', '%s');", $use['name'], $use['alias']);
236+
break;
237237
}
238-
$result->statements[] = sprintf("class_alias('%s', '%s');", $class, $alias);
238+
239239
return true;
240240
} else {
241241
return false;

0 commit comments

Comments
 (0)