<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/zf2 for the canonical source repository
* @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
namespace Zend\Serializer\Adapter;
use Zend\Serializer\Exception;
use Zend\Stdlib\ErrorHandler;
class PhpCode extends AbstractAdapter
{
/**
* Serialize PHP using var_export
*
* @param mixed $value
* @return string
*/
public function serialize($value)
{
return var_export($value, true);
}
/**
* Deserialize PHP string
*
* Warning: this uses eval(), and should likely be avoided.
*
* @param string $code
* @return mixed
* @throws Exception\RuntimeException on eval error
*/
public function unserialize($code)
{
ErrorHandler::start(E_ALL);
$ret = null;
// This suppression is due to the fact that the ErrorHandler cannot
// catch syntax errors, and is intentionally left in place.
$eval = @eval('$ret=' . $code . ';');
$err = ErrorHandler::stop();
if ($eval === false || $err) {
$msg = 'eval failed';
// Error handler doesn't catch syntax errors
if ($eval === false) {
$lastErr = error_get_last();
$msg .= ': ' . $lastErr['message'];
}
throw new Exception\RuntimeException($msg, 0, $err);
}
return $ret;
}
}
# |
Change |
User |
Description |
Committed |
|
#1
|
18334 |
Liz Lam |
initial add of jambox |
|
|