1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99 100 101 102 
	<?php
namespace Basho\Riak;
/**
 * Core data structure for a Riak Bucket.
 *
 * @author Christopher Mancini <cmancini at basho d0t com>
 */
class Bucket
{
    /**
     * The default bucket type in Riak.
     */
    const DEFAULT_TYPE = "default";
    /**
     * Bucket properties
     *
     * @var array
     */
    protected $properties = [];
    /**
     * Name of bucket
     */
    protected $name = '';
    /**
     * Buckets are grouped by type, inheriting the properties defined on the type
     */
    protected $type = '';
    /**
     * @param        $name
     * @param string $type
     * @param array $properties
     */
    public function __construct($name, $type = self::DEFAULT_TYPE, array $properties = [])
    {
        $this->name = $name;
        $this->type = $type;
        $this->properties = $properties;
    }
    public function __toString()
    {
        return $this->getNamespace();
    }
    /**
     * Bucket namespace
     *
     * This is a human readable namespace for the bucket.
     *
     * @return string
     */
    public function getNamespace()
    {
        return "/{$this->type}/{$this->name}/";
    }
    /**
     * @return string
     */
    public function getName()
    {
        return $this->name;
    }
    /**
     * @param $key
     *
     * @return string
     */
    public function getProperty($key)
    {
        $properties = $this->getProperties();
        if (isset($properties[$key])) {
            return $properties[$key];
        }
        return '';
    }
    /**
     * @return array
     */
    public function getProperties()
    {
        return $this->properties;
    }
    /**
     * @return string
     */
    public function getType()
    {
        return $this->type;
    }
}