byjg/anydataset
AnyDataset is a powerful data source abstraction layer for PHP that provides a simple and consistent interface to access different data sources. With AnyDataset, you can work with various data formats and storage systems using the same programming interface.
Maintainers
Fund package maintenance!
Requires
- php: >=8.3 <8.6
- ext-dom: *
- byjg/serializer: ^6.0
- byjg/xmlutil: ^6.0
Requires (Dev)
- phpunit/phpunit: ^10.5|^11.5
- vimeo/psalm: ^5.9|^6.13
Suggests
None
Provides
Conflicts
None
Replaces
None
MIT 29667a59eb9b451327b3438f857410195374b1fb
README
| sidebar_key | anydataset | |||
|---|---|---|---|---|
| tags |
|
AnyDataset
AnyDataset is a powerful data source abstraction layer for PHP that provides a simple and consistent interface to access different data sources. With AnyDataset, you can work with various data formats and storage systems using the same programming interface.
👁 Sponsor
👁 Build Status
👁 Opensource ByJG
👁 GitHub source
👁 GitHub license
👁 GitHub release
It is the core component of the Anydataset project, an agnostic data source abstraction layer for PHP.
Key Features
- Unified Interface: Access different data sources (databases, arrays, XML, JSON, etc.) using the same interface
- Flexible Iteration: Multiple ways to iterate through your data
- Powerful Filtering: Filter your data using a SQL-like syntax
- Data Transformation: Convert between different formats (JSON, XML, arrays)
- Validation: Validate your data against rules
- Extensible: Create your own data source implementations
Quick Start
Installation
composer require "byjg/anydataset"
Basic Usage
<?php # Create a dataset $dataset = new \ByJG\AnyDataset\Core\AnyDataset("example"); # Get an iterator $iterator = $dataset->getIterator(); # Iterate over the results foreach ($iterator as $row) { print_r($row->toArray()); }
Documentation
Core Concepts
- AnyDataset Overview - Core component overview and usage
- The Row Object - Working with data rows
- Iterators - Different ways to iterate through data
Advanced Features
- Filtering Results - How to filter your data
- Formatting Output - Transform your data into different formats
- Field Validation - Validate your data against rules
- Data Population - Populate objects with data
Available Implementations
| Data Source Type | Implementation | Read/Write | Repository |
|---|---|---|---|
| Core | AnyDataSet | R/W | Github |
| Databases | DbDriverInterface | R/W | Github |
| Arrays | ArrayDataSet | R | Github |
| Text Files | TextFileDataSet | R | Github |
| Fixed Width Files | FixedTextFileDataSet | R | Github |
| XML | XmlDataSet | R | Github |
| JSON | JSONDataSet | R | Github |
| SparQL | SparQLDataSet | R | Github |
| NoSQL Document | NoSqlDocumentInterface | R/W | Github |
| NoSQL Key/Value | KeyValueInterface | R/W | Github |
Example Code Snippets
Filtering Data
<?php $filter = new \ByJG\AnyDataset\Core\IteratorFilter(); $filter->addRelation("field1", \ByJG\AnyDataset\Core\Enum\Relation::EQUAL, 10); $iterator = $dataset->getIterator($filter);
Using Formatters
<?php $formatter = new XmlFormatter($anydataset->getIterator()); $formatter->raw(); // Return a DOM object $formatter->toText(); // Return the XML as a text $formatter->saveToFile("/path/to/file.xml"); // Save the XML Text to a file
Running Unit Tests
vendor/bin/phpunit
Dependencies
flowchart TD byjg/anydataset --> byjg/serializer byjg/anydataset --> byjg/xmlutilLoading
