byjg / anydataset-array
Anydataset Array abstraction. Anydataset is an agnostic data source abstraction layer in PHP.
Fund package maintenance!
byjg
Installs: 60 038
Dependents: 2
Suggesters: 0
Security: 0
Stars: 2
Watchers: 3
Forks: 1
Open Issues: 0
README
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