public function testDecode()
 {
     $this->assertTrue(Utilities::decode(Utilities::encode(true), Utilities::encoding(true)), 'decode unpacked boolean \'true\'.');
     $this->assertFalse(Utilities::decode(Utilities::encode(false), Utilities::encoding(false)), 'decode unpacked boolean \'false\'');
     $string = 'String of doom!';
     $this->assertEquals(Utilities::decode(Utilities::encode($string), Utilities::encoding($string)), $string, 'decode unpacked string');
     $this->assertEquals(Utilities::decode(Utilities::encode(234), Utilities::encoding(234)), 234, 'Sdecode unpacked integer');
     $this->assertEquals(Utilities::decode(Utilities::encode(1.432), Utilities::encoding(1.432)), 1.432, 'decode unpacked float');
     $std = new \stdClass();
     $this->assertEquals(Utilities::decode(Utilities::encode($std), Utilities::encoding($std)), $std, 'decode unpacked object');
     $array = array(4, 5, 7);
     $this->assertEquals(Utilities::decode(Utilities::encode($array), Utilities::encoding($array)), $array, 'decode unpacked array');
 }
Example #2
0
 /**
  * Finds the method of encoding that has the cheapest decode needs and encodes the data with that method.
  *
  * @param  string $data
  * @return string
  */
 protected function encode($data)
 {
     switch (Utilities::encoding($data)) {
         case 'bool':
             $dataString = (bool) $data ? 'true' : 'false';
             break;
         case 'string':
             $dataString = sprintf('"%s"', addcslashes($data, "\t\"\$\\"));
             break;
         case 'numeric':
             $dataString = (string) $data;
             break;
         default:
         case 'serialize':
             $dataString = 'unserialize(base64_decode(\'' . base64_encode(serialize($data)) . '\'))';
             break;
     }
     return $dataString;
 }
Example #3
0
 /**
  * {@inheritdoc}
  */
 public function storeData($key, $data, $expiration)
 {
     if (!($sqlDriver = $this->getSqliteDriver($key))) {
         return false;
     }
     $storeData = array('data' => Utilities::encode($data), 'expiration' => $expiration, 'encoding' => Utilities::encoding($data));
     return $sqlDriver->set($this->makeSqlKey($key), $storeData, $expiration);
 }