public function handle(Request $request, Closure $next)
{
$response = $next($request);
$buffer = $response->getContent();
$replace = [
'/<!--[^\[](.*?)[^\]]-->/s' => '',
"/<\?php/" => '<?php ',
"/\n([\S])/" => '$1',
"/\n/" => ' ',
// "/\r/" => '', -- Комментируем этот параметр
"/\t/" => '',
"/ +/" => ' '
];
$buffer = preg_replace(array_keys($replace), array_values($replace), $buffer);
$response->setContent($buffer);
return $response;
}
json_encode()
используется значение EG (точность), которое установлено на 14. Это означает, что максимум 14 цифр используются для отображения (печати) номера. IEEE 754 double поддерживает более высокую точность и serialize()/ или var_export() использует PG (serialize_precision), который по умолчанию должен быть более точным. Так как json_encode() использует EG (точность), json_encode() удаляет нижние цифры частей дроби и разрушает исходное значение, даже если float PHP может содержать более точное значение float.Этот RFC предлагает ввести новую настройку EG (precision) = - 1 и PG (serialize_precision) = - 1, которая использует режим zend_dtoa () 0, который использует лучший алгоритм для округления чисел с плавающей запятой (-1 используется для указания режима 0) ,
serialize_precision = -1
php -r '$price = ["price" => round("45.99", 2)]; echo json_encode($price);'
{"price":45.99}
R::addDatabase('DB1','sqlite:/tmp/d1.sqlite',
'user','password',$frozen);
R::selectDatabase('DB1');
R::selectDatabase('default');
$db = new PDO('mysql:host=myhost;dbname=mydb', 'login', 'password', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
//Еще один вариант
try
{
$db = new pdo('mysql:host=localhost;port=3306;dbname=mysql;charset=utf8','user','password',array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
));
}catch(PDOException $pe){
echo $pe->getMessage();
}
class autoload
{
private $_fileExtension = '.php';
private $_namespace;
private $_includePath;
private $_namespaceSeparator = '\\';
public function __construct($ns = null, $includePath = null)
{
$this->_namespace = $ns;
$this->_includePath = $includePath;
}
public function setNamespaceSeparator($sep)
{
$this->_namespaceSeparator = $sep;
}
public function getNamespaceSeparator()
{
return $this->_namespaceSeparator;
}
public function setIncludePath($includePath)
{
$this->_includePath = $includePath;
}
public function getIncludePath()
{
return $this->_includePath;
}
public function setFileExtension($fileExtension)
{
$this->_fileExtension = $fileExtension;
}
public function getFileExtension()
{
return $this->_fileExtension;
}
public function register()
{
spl_autoload_register(array($this, 'loadClass'));
}
public function unregister()
{
spl_autoload_unregister(array($this, 'loadClass'));
}
public function loadClass($className)
{
if (null === $this->_namespace || $this->_namespace.$this->_namespaceSeparator === substr($className, 0, strlen($this->_namespace.$this->_namespaceSeparator))) {
$fileName = '';
$namespace = '';
if (false !== ($lastNsPos = strripos($className, $this->_namespaceSeparator))) {
$namespace = substr($className, 0, $lastNsPos);
$className = substr($className, $lastNsPos + 1);
$fileName = str_replace($this->_namespaceSeparator, DIRECTORY_SEPARATOR, $namespace) . DIRECTORY_SEPARATOR;
}
$fileName .= str_replace('_', DIRECTORY_SEPARATOR, $className) . $this->_fileExtension;
require ($this->_includePath !== null ? $this->_includePath . DIRECTORY_SEPARATOR : '') . $fileName;
}
}
}
$autoload = new autoload('library', \ROOT.'/core');
$autoload->register();