Enum\Format enum.
Format table
json, yaml, and neon also accept raw strings via Stream\Provider::fromString(). All other formats require a file path.
Opening formats
You can open any format in three ways:Stream\Provider::fromFile()— auto-detects format from the file extension, or accepts an explicitEnum\Format.- Direct class
open()— call the class for the specific format directly. - FQL string syntax — embed the format and path in an FQL
FROMclause.
- CSV
- XML
- XLSX
- ODS
- JSON stream
- NDJSON
- JSON (in-memory)
- YAML
- NEON
- HTTP access log
CSV supports format-specific parameters:
encoding (default utf-8), delimiter (default ,), enclosure (default "), useHeader (default 1), and bom (default 0). Pass them via the FQL string syntax: csv(data.csv, "windows-1250", ";") or with named parameters such as csv(data.csv, enclosure: "'", bom: "1"). CSV is read and written with native PHP fgetcsv / fputcsv and detects UTF-8, UTF-16, and UTF-32 BOMs automatically.Format-specific parameters
CSV, XML, and LOG accept additional configuration parameters.CSV parameters
In FQL string syntax:
As of FiQueLa 3.0, CSV runs on native PHP primitives — the previous
league/csv dependency has been dropped. Type coercion is lazy: cells stay as strings until a comparison or arithmetic operation requires a typed value, and empty cells satisfy IS NULL.XML parameters
In FQL string syntax:
Empty XML elements
Empty leaf elements (<foo/> or <foo></foo>) surface as an empty string '', so SQL-style predicates work directly:
<foo id="1"/>) still expose their @attributes structure, mixed content (<foo id="1">text</foo>) still surfaces text under the value key, and populated leaves (<foo>text</foo>) still return their text content.
Prior to FiQueLa 3.0.1, empty leaf elements surfaced as an empty array
[], which forced consumers to probe with IS ARRAY or is_array() to detect missing values. From 3.0.1 onward, they behave as empty strings — use IS NULL, = '', or IF(field IS NULL, …) instead.LOG parameters
Predefined profiles:
In FQL string syntax:
statusis cast to integertimeis converted toY-m-d H:i:sformat%D(request time in microseconds) is converted to milliseconds%r(request line) is split intomethod,path, andprotocolfields
Malformed log lines do not throw exceptions. Instead, they produce a row with
_error containing the error message and _raw containing the original line. This allows you to filter or inspect bad lines with standard FQL conditions.Directory provider
FQL\Stream\Dir is a special provider that treats a directory as its data source. It lets you query metadata about files recursively across a directory tree.
dir format key: