Skip to content

sokil/php-list

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lists

Build Status Latest Stable Version Coverage Status Total Downloads Daily Downloads

Installation

You can install library through Composer:

{
    "require": {
        "sokil/php-list": "dev-master"
    }
}

Priority Map

Priority map allows you to specify priority of items and iterate through this list in order to priority.

Add elements to list with priority:

<?php

$list = new \Sokil\DataType\PriorityMap();
$list->set('key1', 'value1', 10);
$list->set('key2', 'value2', 100);

Get elements according to priority:

<?php
foreach($list as $key => $value) {
    echo $key . ' - ' . $value;
}

// this will print
//   key2 - value2
//   key1 - value1

Get element by key:

<?php

$list = new \Sokil\DataType\PriorityMap();
$list->set('key1', 'value1', 10);
$list->get('key1');

Weight List

Weight list allows you to specify values and relative weights, and randomly get value according to it's weight.

Imagine that we have three database servers with ip addresses: 10.0.0.1, 10.0.0.2 and 10.0.0.3. We want to balance connections between nodes with weights 60%, 30% and 10%. So most connections goes to server 10.0.0.1, than to 10.0.0.2 and than to 10.0.0.3.

<?php

$list = new \Sokil\DataType\WeightList([
    '10.0.0.1' => 60,
    '10.0.0.2' => 30,
    '10.0.0.3' => 10,
]);

$ipAddress = $list->getRandomValue();

Now we have address on every request relatively to it's weight.