Skip to content

Latest commit

 

History

History
263 lines (219 loc) · 5.71 KB

PackageSummary.md

File metadata and controls

263 lines (219 loc) · 5.71 KB

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

It summary here.


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());

ItList summary here.


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 );
...

Asit summary here.


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 );
...

AsitList summary here.


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];

AsmitList summary here


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 );
...

AsmitList summary here.


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 );
...

AsittagList summary here.


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 );
...

Asmittag summary here.


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 );

AsmitTagList summary here.


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