AnyDataset-Array
Array abstraction dataset. Anydataset is an agnostic data source abstraction layer in PHP.
See more about Anydataset here.
Examples
Simple Manipulation
<?php
$array = ["A", "B", "C"];
$dataset = new \ByJG\AnyDataset\Lists\ArrayDataset($array);
$iterator = $dataset->getIterator();
foreach ($iterator as $row) {
echo $row->get('__id'); // Print 0, 1, 2
echo $row->get('__key'); // Print 0, 1, 2
echo $row->get('value'); // Print "A", "B", "C"
}
Associative Arrays
<?php
$array = ["A" => "ProdA", "B" => "ProdB", "C" => "ProdC"];
$dataset = new \ByJG\AnyDataset\Lists\ArrayDataset($array);
$iterator = $dataset->getIterator();
foreach ($iterator as $row) {
echo $row->get('__id'); // Print 0, 1, 2
echo $row->get('__key'); // Print "A", "B", "C"
echo $row->get('value'); // Print "ProdA", "ProdB", "ProdC"
}
Array of objects
<?php
class Name {
public $name;
public $surname;
public function __construct($name, $surname) {
$this->name = $name;
$this->surname = $surname;
}
}
$array = [
"A" => new Name("Joao", "Gilberto"),
"B" => new Name("John", "Doe"),
"C" => new Name("Mary", "Jane")
];
$dataset = new \ByJG\AnyDataset\Lists\ArrayDataset($array);
$iterator = $dataset->getIterator();
foreach ($iterator as $row) {
echo $row->get('__id'); // Print 0, 1, 2
echo $row->get('__key'); // Print A, B, C
echo $row->get('__class'); // Print \Name
echo $row->get('name'); // Print "Joao", "John", "Mary"
echo $row->get('surname'); // Print "Gilberto", "Doe", "Jane"
}
Filtering results
<?php
class Name {
public $name;
public $surname;
public function __construct($name, $surname) {
$this->name = $name;
$this->surname = $surname;
}
}
$array = [
"A" => new Name("Joao", "Gilberto"),
"B" => new Name("John", "Doe"),
"C" => new Name("Mary", "Jane")
];
$dataset = new \ByJG\AnyDataset\Lists\ArrayDataset($array);
$filter = new \ByJG\AnyDataset\Core\IteratorFilter();
$filter->addRelation("surname", \ByJG\AnyDataset\Core\Enum\Relation::EQUAL, "Doe");
$iterator = $dataset->getIterator($filter);
foreach ($iterator as $row) {
echo $row->get('__id'); // Print 1
echo $row->get('__key'); // Print B
echo $row->get('__class'); // Print \Name
echo $row->get('name'); // Print "John"
echo $row->get('surname'); // Print "Doe"
}
Install
Just type:
composer require "byjg/anydataset-array"
Running Unit tests
vendor/bin/phpunit