Overview
- It - collection of elements
- Asit/Asmit - assoc collection of elements, opt multi key
- Asittag/Asmittag - as above but with tags
- It/Asit/Asmit/Asitag/AsmitagList - as above but with spec. collection element valueType
Class It manages array collection
-
Implement SeekableIterator, Countable and IteratorAggregate methods
-
Collection elements are searchable using
- Iterator (et al.) methods
-
The collection element may be of any value type
-
example:
use Kigkonsult\Asit\It;
class MyClass extends It {}
$myClass = MyClass::factory();
...
$myClass->setCollection( $arrayOfElements );
...
$myClass->append( $element );
...
...
$myClass->rewind();
while( $myClass->valid()) {
$element = $myClass->current();
...
$MyClass->next();
} // end while
...
...
$myClass->last();
while( $myClass->valid()) {
$element = $myClass->current();
...
$MyClass->previous();
} // end while
...
...
// shorter rewind/next code..
for( $myClass->rewind(); $myClass->valid(); $MyClass->next()) {
$element = $myClass->current();
...
} // end for
// shortest rewind/next code..
foreach( $myClass->yield() as $pos => $element ) {
...
} // end foreach
Class ItList
- Extends It
- Assure collection elements of expected valueType
- example:
use Kigkonsult\Asit\ItList;
class MyClass extends ItList {}
$myClass = MyClass::factory( ElementValueClass::class );
...
$myClass->append( new ElementValueClass());
Class Asit manages assoc array collections
- Extends It
- The assoc element array key is used as (unique) primary key
- A primary key may be replaced by another (unique) key
- Has primary key collection element get-/set-methods
- Collection elements are also searchable using
- primary key(s)
- For non-assoc arrays,
- primary key is the (numeric) array index
- example:
use Kigkonsult\Asit\Asit;
class MyClass extends Asit {}
$myClass = MyClass::factory();
...
$myClass->append( $element, $pKey );
...
Class AsitList
- Extends Asit
- Assure collection elements of expected valueType
- example:
use Kigkonsult\Asit\AsitList;
class MyClass extends AsitList {}
$myClass = MyClass::factory( ElementValueClass::class );
...
$myClass->append( new ElementValueClass(), $pKey );
...
Class Asmit
- Extends Asit
- Allow multiple (unique) primary keys for (each)) collection element
- example:
use Kigkonsult\Asit\Asmit;
class MyClass extends Asmit {}
$myClass = MyClass::factory();
...
$myClass->append( $element, $pKey1 )
->addCurrentPkey( $pKey2 );
...
$element = $myClass->pKeyGet( $pkey1 )[0];
Class AsmitList
- Extends Asmit
- Assure collection elements of expected valueType
- example:
use Kigkonsult\Asit\AsmitList;
class MyClass extends AsmitList {}
$myClass = MyClass::factory( ElementValueClass::class );
...
$myClass->append( new ElementValueClass(), $pKey1 )
->addCurrentPkey( $pKey2 );
...
Class Asittag
- Extends Asit
- Also secondary keys, additional (non-unique) tags (aka attributes?) may be set for each element
- Collection elements are also searchable using
- tag(s)
- primary key(s) + tag(s)
- example:
use Kigkonsult\Asit\Asittag;
class MyClass extends Asittag {}
$myClass = MyClass::factory();
...
$myClass->append( $element, $pKey, $tag );
...
Class AsitTagList
- Extends Asittag
- Assure collection elements of expected valueType
- example:
use Kigkonsult\Asit\AsitTagList;
class MyClass extends AsitTagList {}
$myClass = MyClass::factory( ElementValueClass::class );
...
$myClass->append( new ElementValueClass(), $pKey, $tag );
...
Class Asmittag
- Extends Asmit
- Also secondary keys, additional (non-unique) tags (aka attributes?) may be set for each element
- Collection elements are searchable using
- Iterator (et al.) methods
- primary key(s)
- tag(s)
- primary key(s) + tag(s)
- example:
use Kigkonsult\Asit\Asmittag;
class MyClass extends Asmittag {}
$myClass = MyClass::factory();
...
$myClass->append( $element, $pKey1, $tag1 )
->addCurrentPkey( $pKey2 )
->addCurrentTag( $tag2 );
...
Class AsmitTagList
- Extends Asmittag
- Assure collection elements of expected valueType
- example:
use Kigkonsult\Asit\AsmittagList;
class MyClass extends AsmittagList { ElementValueClass::class }
$myClass = MyClass::factory();
...
$myClass->append( new ElementValueClass(), $pKey1, $tag1 )
->addCurrentPkey( $pKey2 )
->addCurrentTag( $tag2 );
Note, review pros and cons not using some PHP built-in iterator class, ex [ArrayIterator]!
Go to README - It summary - Asit/Asmit summary - Asittag/Asmittag summary - AsitList/AsmitList summary