Merge branch '2.7' into 2.8

* 2.7:
  [Bridge\ProxyManager] Dont call __destruct() on non-instantiated services
  bumped Symfony version to 2.7.34
  updated VERSION for 2.7.33
  update CONTRIBUTORS for 2.7.33
  updated CHANGELOG for 2.7.33
This commit is contained in:
Nicolas Grekas 2017-08-03 14:13:46 +02:00
commit 2807709fed
9 changed files with 157 additions and 17 deletions

View File

@ -7,6 +7,17 @@ in 2.7 minor versions.
To get the diff for a specific change, go to https://github.com/symfony/symfony/commit/XXX where XXX is the change hash
To get the diff between two versions, go to https://github.com/symfony/symfony/compare/v2.7.0...v2.7.1
* 2.7.33 (2017-08-01)
* bug #22244 [Console] Fix passing options with defaultCommand (Jakub Sacha)
* bug #23684 [Debug] Missing escape in debug output (c960657)
* bug #23662 [VarDumper] Adapt to php 7.2 changes (nicolas-grekas)
* bug #23649 [Form][TwigBridge] Don't render _method in form_rest() for a child form (fmarchalemisys)
* bug #23619 [Validator] Fix IbanValidator for ukrainian IBANs (paroe)
* bug #23238 [Security] ensure the 'route' index is set before attempting to use it (gsdevme)
* bug #23580 Fix login redirect when referer contains a query string (fabpot)
* bug #23574 [VarDumper] Move locale sniffing to dump() time (nicolas-grekas)
* 2.7.32 (2017-07-17)
* security #23507 [Security] validate empty passwords again (xabbuh)

View File

@ -20,11 +20,11 @@ Symfony is the result of the work of many people who made the code better
- Javier Eguiluz (javier.eguiluz)
- Hugo Hamon (hhamon)
- Maxime Steinhausser (ogizanagi)
- Abdellatif Ait boudad (aitboudad)
- Robin Chalas (chalas_r)
- Abdellatif Ait boudad (aitboudad)
- Grégoire Pineau (lyrixx)
- Romain Neutron (romain)
- Pascal Borreli (pborreli)
- Grégoire Pineau (lyrixx)
- Wouter De Jong (wouterj)
- Joseph Bielawski (stloyd)
- Karma Dordrak (drak)
@ -34,8 +34,8 @@ Symfony is the result of the work of many people who made the code better
- Jean-François Simon (jfsimon)
- Benjamin Eberlei (beberlei)
- Igor Wiedler (igorw)
- Eriksen Costa (eriksencosta)
- Roland Franssen (ro0)
- Eriksen Costa (eriksencosta)
- Jules Pietri (heah)
- Sarah Khalil (saro0h)
- Guilhem Niot (energetick)
@ -66,6 +66,7 @@ Symfony is the result of the work of many people who made the code better
- Eric Clemmons (ericclemmons)
- Charles Sarrazin (csarrazi)
- Christian Raue
- Konstantin Myakshin (koc)
- Arnout Boks (aboks)
- Deni
- Henrik Westphal (snc)
@ -73,7 +74,7 @@ Symfony is the result of the work of many people who made the code better
- Jáchym Toušek (enumag)
- Titouan Galopin (tgalopin)
- Douglas Greenshields (shieldo)
- Konstantin Myakshin (koc)
- Dany Maillard (maidmaid)
- Lee McDermott
- Brandon Turner
- Luis Cordova (cordoval)
@ -89,23 +90,22 @@ Symfony is the result of the work of many people who made the code better
- Fran Moreno (franmomu)
- Antoine Hérault (herzult)
- Paráda József (paradajozsef)
- Issei Murasawa (issei_m)
- Arnaud Le Blanc (arnaud-lb)
- Maxime STEINHAUSSER
- Alexander M. Turek (derrabus)
- Michal Piotrowski (eventhorizon)
- Dany Maillard (maidmaid)
- Issei Murasawa (issei_m)
- Tim Nagel (merk)
- Yonel Ceruto González (yonelceruto)
- Brice BERNARD (brikou)
- Baptiste Clavié (talus)
- Vladimir Reznichenko (kalessil)
- marc.weistroff
- Yonel Ceruto González (yonelceruto)
- lenar
- Tobias Nyholm (tobias)
- Włodzimierz Gajda (gajdaw)
- Alexander Schwenn (xelaris)
- Jacob Dreesen (jdreesen)
- Tobias Nyholm (tobias)
- Florian Voutzinos (florianv)
- Colin Frei
- Adrien Brault (adrienbrault)
@ -132,13 +132,13 @@ Symfony is the result of the work of many people who made the code better
- Daniel Gomes (danielcsgomes)
- Hidenori Goto (hidenorigoto)
- Guilherme Blanco (guilhermeblanco)
- David Maicher (dmaicher)
- Pablo Godel (pgodel)
- Jérémie Augustin (jaugustin)
- Andréia Bohner (andreia)
- Rafael Dohms (rdohms)
- Arnaud Kleinpeter (nanocom)
- jwdeitch
- David Maicher (dmaicher)
- Mikael Pajunen
- Joel Wurtz (brouznouf)
- Jérôme Vasseur (jvasseur)
@ -175,6 +175,7 @@ Symfony is the result of the work of many people who made the code better
- Dennis Benkert (denderello)
- Benjamin Dulau (dbenjamin)
- Mathieu Lemoine (lemoinem)
- Christian Schmidt
- Andreas Hucks (meandmymonkey)
- Noel Guilbert (noel)
- Stepan Anchugov (kix)
@ -200,7 +201,6 @@ Symfony is the result of the work of many people who made the code better
- John Kary (johnkary)
- Justin Hileman (bobthecow)
- Blanchon Vincent (blanchonvincent)
- Christian Schmidt
- Michele Orselli (orso)
- Tom Van Looy (tvlooy)
- Sven Paulus (subsven)
@ -236,6 +236,7 @@ Symfony is the result of the work of many people who made the code better
- Katsuhiro OGAWA
- Patrick McDougle (patrick-mcdougle)
- Alif Rachmawadi
- Alessandro Chitolina
- Kristen Gilden (kgilden)
- Pierre-Yves LEBECQ (pylebecq)
- Jordan Samouh (jordansamouh)
@ -261,6 +262,8 @@ Symfony is the result of the work of many people who made the code better
- Pavel Batanov (scaytrase)
- Nikita Konstantinov
- Wodor Wodorski
- Rob Frawley 2nd (robfrawley)
- Gregor Harlan (gharlan)
- Thomas Lallement (raziel057)
- Giorgio Premi
- Matthieu Napoli (mnapoli)
@ -276,7 +279,6 @@ Symfony is the result of the work of many people who made the code better
- Marc Weistroff (futurecat)
- Christian Schmidt
- Hidde Wieringa (hiddewie)
- Alessandro Chitolina
- Chad Sikorra (chadsikorra)
- Chris Smith (cs278)
- Florian Klein (docteurklein)
@ -313,7 +315,6 @@ Symfony is the result of the work of many people who made the code better
- Thierry Thuon (lepiaf)
- Ricard Clau (ricardclau)
- Mark Challoner (markchalloner)
- Gregor Harlan (gharlan)
- Gennady Telegin (gtelegin)
- Ben Davies (bendavies)
- Erin Millard
@ -322,7 +323,6 @@ Symfony is the result of the work of many people who made the code better
- Magnus Nordlander (magnusnordlander)
- alquerci
- Francesco Levorato
- Rob Frawley 2nd (robfrawley)
- Vitaliy Zakharov (zakharovvi)
- Tobias Sjösten (tobiassjosten)
- Gyula Sallai (salla)
@ -339,6 +339,7 @@ Symfony is the result of the work of many people who made the code better
- Thomas Calvet (fancyweb)
- Niels Keurentjes (curry684)
- JhonnyL
- David Badura (davidbadura)
- hossein zolfi (ocean)
- Clément Gautier (clementgautier)
- Eduardo Gulias (egulias)
@ -428,7 +429,6 @@ Symfony is the result of the work of many people who made the code better
- Christian Wahler
- Gintautas Miselis
- Rob Bast
- David Badura (davidbadura)
- Zander Baldwin
- Adam Harvey
- Maxime Veber (nek-)
@ -543,6 +543,7 @@ Symfony is the result of the work of many people who made the code better
- Max Rath (drak3)
- Stéphane Escandell (sescandell)
- Konstantin S. M. Möllers (ksmmoellers)
- James Johnston
- Sinan Eldem
- Alexandre Dupuy (satchette)
- Andre Rømcke (andrerom)
@ -591,6 +592,7 @@ Symfony is the result of the work of many people who made the code better
- Ulumuddin Yunus (joenoez)
- Luc Vieillescazes (iamluc)
- Johann Saunier (prophet777)
- Valentin Udaltsov (vudaltsov)
- Michael Devery (mickadoo)
- Antoine Corcy
- Artur Eshenbrener
@ -909,6 +911,7 @@ Symfony is the result of the work of many people who made the code better
- Alex Demchenko (pilot)
- Tadas Gliaubicas (tadcka)
- Benoit Garret
- Jakub Sacha
- DerManoMann
- Olaf Klischat
- orlovv
@ -1173,6 +1176,7 @@ Symfony is the result of the work of many people who made the code better
- Malte Wunsch
- wusuopu
- povilas
- Gavin Staniforth
- Alessandro Tagliapietra (alex88)
- Biji (biji)
- Gunnar Lium (gunnarlium)
@ -1234,6 +1238,7 @@ Symfony is the result of the work of many people who made the code better
- flack
- izzyp
- František Bereň
- Mike Francis
- Christoph Nissle (derstoffel)
- Ionel Scutelnicu (ionelscutelnicu)
- Nicolas Tallefourtané (nicolab)
@ -1244,6 +1249,7 @@ Symfony is the result of the work of many people who made the code better
- jjanvier
- Julius Beckmann
- Romain Dorgueil
- Christopher Parotat
- Grayson Koonce (breerly)
- Fabien LUCAS (flucas2)
- Indra Gunawan (indragunawan)
@ -1535,11 +1541,13 @@ Symfony is the result of the work of many people who made the code better
- Ladislav Tánczos
- Brian Freytag
- Skorney
- fmarchalemisys
- mieszko4
- Steve Preston
- Neophy7e
- bokonet
- Arrilot
- Shaun Simmons
- Markus Staab
- Pierre-Louis LAUNAY
- djama
@ -1568,6 +1576,7 @@ Symfony is the result of the work of many people who made the code better
- Penny Leach
- Richard Trebichavský
- g123456789l
- Jonathan Vollebregt
- oscartv
- DanSync
- Peter Zwosta
@ -1680,7 +1689,6 @@ Symfony is the result of the work of many people who made the code better
- Moritz Kraft (userfriendly)
- Víctor Mateo (victormateo)
- Vincent (vincent1870)
- Valentin Udaltsov (vudaltsov)
- Eugene Babushkin (warl)
- Wouter Sioen (wouter_sioen)
- Xavier Amado (xamado)
@ -1702,6 +1710,7 @@ Symfony is the result of the work of many people who made the code better
- Sergey Fedotov
- Michael
- fh-github@fholzhauer.de
- AbdElKader Bouadjadja
- Jan Emrich
- Mark Topper
- Xavier REN

View File

@ -0,0 +1,31 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Bridge\ProxyManager\LazyProxy\Instantiator;
use ProxyManager\Factory\LazyLoadingValueHolderFactory as BaseFactory;
use Symfony\Bridge\ProxyManager\LazyProxy\PhpDumper\LazyLoadingValueHolderGenerator;
/**
* @internal
*/
class LazyLoadingValueHolderFactoryV1 extends BaseFactory
{
private $generatorV1;
/**
* {@inheritdoc}
*/
protected function getGenerator()
{
return $this->generatorV1 ?: $this->generatorV1 = new LazyLoadingValueHolderGenerator();
}
}

View File

@ -0,0 +1,32 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Bridge\ProxyManager\LazyProxy\Instantiator;
use ProxyManager\ProxyGenerator\ProxyGeneratorInterface;
use ProxyManager\Factory\LazyLoadingValueHolderFactory as BaseFactory;
use Symfony\Bridge\ProxyManager\LazyProxy\PhpDumper\LazyLoadingValueHolderGenerator;
/**
* @internal
*/
class LazyLoadingValueHolderFactoryV2 extends BaseFactory
{
private $generator;
/**
* {@inheritdoc}
*/
protected function getGenerator(): ProxyGeneratorInterface
{
return $this->generator ?: $this->generator = new LazyLoadingValueHolderGenerator();
}
}

View File

@ -36,7 +36,11 @@ class RuntimeInstantiator implements InstantiatorInterface
$config = new Configuration();
$config->setGeneratorStrategy(new EvaluatingGeneratorStrategy());
$this->factory = new LazyLoadingValueHolderFactory($config);
if (method_exists('ProxyManager\Version', 'getVersion')) {
$this->factory = new LazyLoadingValueHolderFactoryV2($config);
} else {
$this->factory = new LazyLoadingValueHolderFactoryV1($config);
}
}
/**

View File

@ -0,0 +1,41 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Bridge\ProxyManager\LazyProxy\PhpDumper;
use ProxyManager\ProxyGenerator\LazyLoadingValueHolderGenerator as BaseGenerator;
use Zend\Code\Generator\ClassGenerator;
/**
* @internal
*/
class LazyLoadingValueHolderGenerator extends BaseGenerator
{
/**
* {@inheritdoc}
*/
public function generate(\ReflectionClass $originalClass, ClassGenerator $classGenerator)
{
parent::generate($originalClass, $classGenerator);
if ($classGenerator->hasMethod('__destruct')) {
$destructor = $classGenerator->getMethod('__destruct');
$body = $destructor->getBody();
$newBody = preg_replace('/^(\$this->initializer[a-zA-Z0-9]++) && .*;\n\nreturn (\$this->valueHolder)/', '$1 || $2', $body);
if ($body === $newBody) {
throw new \UnexpectedValueException(sprintf('Unexpected lazy-proxy format generated for method %s::__destruct()', $originalClass->name));
}
$destructor->setBody($newBody);
}
}
}

View File

@ -13,7 +13,6 @@ namespace Symfony\Bridge\ProxyManager\LazyProxy\PhpDumper;
use ProxyManager\Generator\ClassGenerator;
use ProxyManager\GeneratorStrategy\BaseGeneratorStrategy;
use ProxyManager\ProxyGenerator\LazyLoadingValueHolderGenerator;
use Symfony\Component\DependencyInjection\Container;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\DependencyInjection\Definition;

View File

@ -39,6 +39,9 @@ class ContainerBuilderTest extends TestCase
/* @var $foo1 \ProxyManager\Proxy\LazyLoadingInterface|\ProxyManager\Proxy\ValueHolderInterface */
$foo1 = $builder->get('foo1');
$foo1->__destruct();
$this->assertSame(0, $foo1::$destructorCount);
$this->assertSame($foo1, $builder->get('foo1'), 'The same proxy is retrieved on multiple subsequent calls');
$this->assertInstanceOf('\ProxyManagerBridgeFooClass', $foo1);
$this->assertInstanceOf('\ProxyManager\Proxy\LazyLoadingInterface', $foo1);
@ -50,5 +53,8 @@ class ContainerBuilderTest extends TestCase
$this->assertTrue($foo1->isProxyInitialized());
$this->assertInstanceOf('\ProxyManagerBridgeFooClass', $foo1->getWrappedValueHolderValue());
$this->assertNotInstanceOf('\ProxyManager\Proxy\LazyLoadingInterface', $foo1->getWrappedValueHolderValue());
$foo1->__destruct();
$this->assertSame(1, $foo1::$destructorCount);
}
}

View File

@ -2,6 +2,8 @@
class ProxyManagerBridgeFooClass
{
public static $destructorCount = 0;
public $foo;
public $moo;
@ -38,4 +40,9 @@ class ProxyManagerBridgeFooClass
{
$this->bar = $value;
}
public function __destruct()
{
++self::$destructorCount;
}
}