Пример #1
0
/**
 * 将结果集转为前端的模式
 * @param ResultContext $resContext
 */
function convertResults($resContext)
{
    $ret = array();
    $resArr = $resContext->getResArr();
    foreach ($resArr as $record) {
        $item = array();
        $record = $record->getRecord();
        $item['type'] = $record['type'];
        $item['node_path'] = $record['node_path'];
        $item['var_path'] = $record['var_path'];
        //整理node代码
        $node = $record['node'];
        $node_item = array();
        if ($node instanceof Symbol) {
            $node_start = $node->getValue()->getAttribute('startLine');
            $node_end = $node->getValue()->getAttribute('endLine');
        } else {
            $node_start = $node->getAttribute('startLine');
            $node_end = $node->getAttribute('endLine');
        }
        $node_item['line'] = $node_start . "|" . $node_end;
        $node_item['code'] = FileUtils::getCodeByLine($record['node_path'], $node_start, $node_end);
        $item['node'] = $node_item;
        //整理var代码
        $var = $record['var'];
        $var_item = array();
        if ($var instanceof Symbol) {
            $var_start = $var->getValue()->getAttribute('startLine');
            $var_end = $var->getValue()->getAttribute('endLine');
        } elseif (is_string($var)) {
            $var_start = $node_start;
            $var_end = $node_end;
        } else {
            $var_start = $var->getAttribute('startLine');
            $var_end = $var->getAttribute('endLine');
        }
        $var_item['line'] = $var_start . "|" . $var_end;
        $var_item['code'] = FileUtils::getCodeByLine($record['var_path'], $var_start, $var_end);
        $item['var'] = $var_item;
        array_push($ret, $item);
    }
    return $ret;
}