示例#1
0
 /**
  * Set array of items
  * If items already exists, they are replaced
  * 
  * @access public
  * @param array $items
  */
 public function setItems($items)
 {
     $existingItemsKeys = array_flip($this->cacheAdapter->hasItems(array_keys($items)));
     $existingItems = array_intersect_key($items, $existingItemsKeys);
     $nonExistingItems = array_diff_key($items, $existingItemsKeys);
     if (count($existingItems) > 0) {
         $this->cacheAdapter->replaceItems($existingItems);
     }
     if (count($nonExistingItems) > 0) {
         $this->cacheAdapter->setItems($nonExistingItems);
     }
 }
 /**
  * @test
  */
 public function delegatesHasItems()
 {
     $keys = [];
     $values = [];
     $this->storage->hasItems($keys)->willReturn($values);
     $return = $this->cache->hasItems($keys);
     $this->assertSame($values, $return);
 }
示例#3
0
 public function testSetGetHasAndRemoveItemsWithNamespace()
 {
     $items = array('key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3');
     $this->_options->setNamespace('defaultns1');
     $this->assertSame(array(), $this->_storage->setItems($items));
     $this->_options->setNamespace('defaultns2');
     $this->assertSame(array(), $this->_storage->hasItems(array_keys($items)));
     $this->_options->setNamespace('defaultns1');
     $rs = $this->_storage->getItems(array_keys($items));
     $this->assertInternalType('array', $rs);
     foreach ($items as $key => $value) {
         $this->assertArrayHasKey($key, $rs);
         $this->assertEquals($value, $rs[$key]);
     }
     $rs = $this->_storage->hasItems(array_keys($items));
     $this->assertInternalType('array', $rs);
     $this->assertEquals(count($items), count($rs));
     foreach ($items as $key => $value) {
         $this->assertContains($key, $rs);
     }
     // remove the first and the last item
     $this->assertSame(array('missing'), $this->_storage->removeItems(array('missing', 'key1', 'key3')));
     unset($items['key1'], $items['key3']);
     $rs = $this->_storage->getItems(array_keys($items));
     $this->assertInternalType('array', $rs);
     foreach ($items as $key => $value) {
         $this->assertArrayHasKey($key, $rs);
         $this->assertEquals($value, $rs[$key]);
     }
     $rs = $this->_storage->hasItems(array_keys($items));
     $this->assertInternalType('array', $rs);
     $this->assertEquals(count($items), count($rs));
     foreach ($items as $key => $value) {
         $this->assertContains($key, $rs);
     }
 }
示例#4
0
 public function hasItems(array $keys)
 {
     return $this->storage->hasItems($keys);
 }