<?php require_once www_root . 'xml/document.php'; $config = xml\document::load($filename); $result = (object) ['batch' => $config['@batch'], 'schema' => $config['@schema'], 'documentation' => $config['@documentation'], 'datasources' => [], 'collections' => [], 'resources' => [], 'schemas' => []]; if (isset($config['@vars'])) { $result->vars = $config['@vars']; } foreach ($config->query('/config/datasources//datasource[@name and @type]') as $datasource) { $name = $datasource['@name']; unset($datasource['@name']); $result->datasources[$name] = (object) iterator_to_array($datasource->attributes()); } foreach ($config->query('/config//collection[@name]') as $collection) { $procedures = []; foreach ($collection->query('.//procedure[@name and @datasource]') as $procedure) { $params = []; $output = []; if (isset($procedure['@params'])) { foreach (explode(',', $procedure['@params']) as $param) { $options = (object) []; $name = trim($param); $filter = explode('|', $name); if (count($filter) == 2) { $name = trim($filter[0]); $options->filter = trim($filter[1]); } $params[$name] = $options; } } if ($attrib = isset($procedure['@output']) ? $procedure['@output'] : (isset($collection['@output']) ? $collection['@output'] : null)) {