Commit Graph

102 Commits

Author SHA1 Message Date
Nicolas Grekas
3a3801a07c Merge branch '3.1'
* 3.1:
  [TwigBridge] Add missing type hint to TwigRenderer
  [HttpFoundation] Fix UPSERT for PgSql >= 9.5
  [Form] fixed DateTime transformers
  [PropertyAccess][DX] Enhance exception that say that some methods are missing if they don't
  bumped Symfony version to 3.1.2
  updated VERSION for 3.1.1
  updated CHANGELOG for 3.1.1
  [Form] fixed EntityType test with query_builder option

Conflicts:
	src/Symfony/Component/HttpKernel/Kernel.php
	src/Symfony/Component/PropertyAccess/PropertyAccessor.php
2016-06-16 07:23:20 +02:00
Nicolas Grekas
969e3b1ded Merge branch '3.0' into 3.1
* 3.0:
  [TwigBridge] Add missing type hint to TwigRenderer
  [HttpFoundation] Fix UPSERT for PgSql >= 9.5
  [Form] fixed DateTime transformers
  [PropertyAccess][DX] Enhance exception that say that some methods are missing if they don't
  [Form] fixed EntityType test with query_builder option

Conflicts:
	src/Symfony/Component/HttpFoundation/Cookie.php
2016-06-16 07:20:30 +02:00
Johan DESMYTER
c46519b40b [PropertyAccess][DX] Enhance exception that say that some methods are missing if they don't 2016-06-15 09:08:04 +02:00
Kévin Dunglas
4ccabcd925 [PropertyAccess] Add PSR-6 cache 2016-06-08 18:51:42 +02:00
Nicolas Grekas
db208e3e25 Merge branch '3.0'
* 3.0:
  [PropertyAccess] ->getValue() should be read-only
  [VarDumper] Fix dumping type hints for non-existing parent classes
  [Config] Fix XmlUtilsTest namespace
  [Console] [TableHelper] make it work with SymfonyStyle.
  Remove dead code
  [FrameworkBundle] Better output for user in ContainerDebugCommand
  [Routing] add query param if value is different from default
2016-04-20 20:54:21 +02:00
Nicolas Grekas
1ff12d92fd Merge branch '2.3' into 2.7
* 2.3:
  [PropertyAccess] ->getValue() should be read-only
  [Config] Fix XmlUtilsTest namespace
  [Routing] add query param if value is different from default

Conflicts:
	src/Symfony/Component/PropertyAccess/Tests/PropertyAccessorTest.php
2016-04-20 20:45:26 +02:00
Nicolas Grekas
fa6852968b [PropertyAccess] ->getValue() should be read-only 2016-04-20 17:25:54 +02:00
Christian Flothmann
af9ec74edb Merge branch '3.0'
* 3.0: (24 commits)
  [Filesystem] Better error handling in remove()
  [DependencyInjection] Add coverage for invalid Expression in exportParameters
  [DependencyInjection] Add coverage for all invalid arguments in exportParameters
  anonymous services are always private
  [Form] FormValidator removed code related to removed  option
  [Console] Correct time formatting.
  [WebProfilerBundle] Fixed error from unset twig variable
  Force profiler toolbar svg display
  [DependencyInjection] Resolve aliases before removing abstract services + add tests
  Fix Dom Crawler select option with empty value
  Remove unnecessary option assignment
  fix tests (use non-deprecated options)
  remove unused variable
  mock the proper method
  [PropertyAccess] Fix regression
  [HttpFoundation] Improve phpdoc
  [Logging] Add support for firefox in ChromePhpHandler
  Windows 10 version check in just one line
  Detect CLI color support for Windows 10 build 10586
  [Security] Fixed SwitchUserListener when exiting an impersonication with AnonymousToken
  ...
2016-04-12 20:27:47 +02:00
Christian Flothmann
064aedf9e3 Merge branch '2.3' into 2.7
* 2.3:
  [DependencyInjection] Resolve aliases before removing abstract services + add tests
  Fix Dom Crawler select option with empty value
  Remove unnecessary option assignment
  remove unused variable
  [PropertyAccess] Fix regression
2016-04-09 12:56:56 +02:00
Nicolas Grekas
2b30d486db [PropertyAccess] Fix regression 2016-04-05 18:42:48 +02:00
Teoh Han Hui
8abebf6417 Add Inflector component (from StringUtil of PropertyAccess) 2016-03-31 15:36:48 +08:00
Nicolas Grekas
c5dbb1d9b6 Merge branch '2.3' into 2.7
* 2.3:
  [travis] Upgrade phpunit wrapper & hirak/prestissimo
2016-03-23 13:40:00 +01:00
Nicolas Grekas
bf465eb6db [travis] Upgrade phpunit wrapper & hirak/prestissimo 2016-03-23 13:34:50 +01:00
Nicolas Grekas
8a52fcdbff [PropertyAccess] Fix isPropertyWritable not using the reflection cache 2016-03-22 10:40:06 +01:00
Nicolas Grekas
cb1c87ac5f [PropertyAccess] Backport fixes from 2.7 2016-03-22 10:19:04 +01:00
Nicolas Grekas
86c0a17721 Merge branch '2.3' into 2.7
* 2.3:
  [Validator] use correct term for a property in docblock (not "option")
  [PropertyAccess] Remove most ref mismatches to improve perf
  [Validator] EmailValidator cannot extract hostname if email contains multiple @ symbols
  [NumberFormatter] Fix invalid numeric literal on PHP 7
  Use XML_ELEMENT_NODE in nodeType check
  [PropertyAccess] Reduce overhead of UnexpectedTypeException tracking
  [PropertyAccess] Throw an UnexpectedTypeException when the type do not match
  [FrameworkBundle] Add tests for the Controller class

Conflicts:
	src/Symfony/Bundle/FrameworkBundle/Tests/Controller/ControllerTest.php
	src/Symfony/Component/Intl/NumberFormatter/NumberFormatter.php
	src/Symfony/Component/PropertyAccess/PropertyAccessor.php
	src/Symfony/Component/PropertyAccess/PropertyAccessorInterface.php
	src/Symfony/Component/PropertyAccess/PropertyPath.php
	src/Symfony/Component/PropertyAccess/Tests/PropertyAccessorTest.php
	src/Symfony/Component/Validator/Constraints/EmailValidator.php
2016-03-22 09:55:46 +01:00
Nicolas Grekas
72940d7588 [PropertyAccess] Remove most ref mismatches to improve perf 2016-03-18 15:37:16 +01:00
Nicolas Grekas
5fe2b06bc4 [PropertyAccess] Reduce overhead of UnexpectedTypeException tracking 2016-03-17 09:22:17 +01:00
Kévin Dunglas
10c8d5eadb [PropertyAccess] Throw an UnexpectedTypeException when the type do not match 2016-03-17 09:11:03 +01:00
Vladimir Reznichenko
81f81812a5 [2.3] Static Code Analysis for Components 2016-01-12 12:31:34 +01:00
Tobias Schultze
88d586b447 Merge branch '2.3' into 2.7 2015-12-15 02:31:17 +01:00
Ilya Antipenko
457b3f0047 [PropertyAccessor] A little refactor
- Remove obsolete code
 - Remove excessive actions
 - Fix phpdoc & comments
2015-12-15 02:27:13 +01:00
Kévin Dunglas
6c9bb86b47 [PropertyAccess] minor: constants as internal and removed unused var 2015-12-15 02:21:26 +01:00
Kévin Dunglas
aa4cc90a87 [PropertyAccess] Port of the performance optimization from 2.3 2015-11-05 14:42:52 +01:00
Kévin Dunglas
352dfb9890 [PropertyAccess] Fix dynamic property accessing. 2015-11-04 16:07:49 +01:00
Kévin Dunglas
284dc75796 [PropertyAccess] Major performance improvement 2015-10-30 15:36:27 -07:00
Fabien Potencier
2c46204001 Merge branch '2.3' into 2.7
* 2.3:
  Fix PropertyAccessor modifying array in object when array key does not exist
2015-10-05 09:28:51 +02:00
Pierre du Plessis
f24c678027 Fix PropertyAccessor modifying array in object when array key does not exist 2015-10-03 22:00:22 +02:00
Tobias Schultze
03a63dbc14 [PropertyAccess] fix cs 2015-09-28 14:41:55 +02:00
Michael Lee
e24a798d8f [property-access] Improvement for Accessing Reference Chain
Improve performance for the following scenarios:

- Example 1:
```php
$a = array(
    'a' => array(
        'b' => array(
            'c' => 'old-value'
        )
    )
);
$pa->setValue($a, '[a][b][c]', 'new-value');
// The PropertyAccessor will try to set values for
// $a['a']['b']['c'], $a['a']['b'] and $a['a'],
// but in fact it may terminate the loop
// right after the value of $a[a][b][c] is set,
// because $a, $[a], $[a][b] and $[a][b][c]
// are all passed as reference - the reference chain is not broken.
```

- Example 2
```php
$b = array(
    'a' => array(
        'b' => array(
            'c' => 'old-value'
        )
    )
)

$a = new Foo($b);
// In this example, the reference chain of $b is broken,
// because it's passed to $a.value as value
// But its elements are all passed as reference,
// so after setting the value for $b[a][b][c], there is no need
// to set value for $b[a][b] and $b[a]

$pa->setValue($a, 'value[a][b][c]', 'new-value');
```

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a
2015-09-15 15:17:44 +08:00
Fabien Potencier
c0e4495b66 fixes CS 2015-08-24 09:13:45 +02:00
Fabien Potencier
99f3475a2a Merge branch '2.6' into 2.7
* 2.6:
  [HttpFoundation] Fix Response::closeOutputBuffers() for HHVM 3.3
  bumped Symfony version to 2.6.11
  updated VERSION for 2.6.10
  updated CHANGELOG for 2.6.10
  [PropertyAccess] setValue & isWritable loops must only stops on reference and object. References can also be arrays and if the loop stops the value is never set in the object. (Breaks since 2.6.5 commit e3e4695)
2015-07-16 14:21:55 +02:00
Nicolas Macherey
1dcca1a8df [PropertyAccess] setValue & isWritable loops must only stops on reference and object. References can also be arrays and if the loop stops the value is never set in the object. (Breaks since 2.6.5 commit e3e4695)
| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

This merge request fixes the following cases taht was working with version previous to 2.6.5:

A class with a property myArray which can be a multi dimensional array can now be accesed using myArray[foo][bar][baz]
Previously only myArray[foo] was working. The break is since commit e3e4695

This commit adds additionnal testing, and is rebased from 2.6 upstream
2015-07-10 06:45:33 +02:00
Nicolas Grekas
81c054ad87 Merge branch '2.6' into 2.7
* 2.6:
  [travis] Use container-based infrastructure
  [PropertyAccess] Fix setting public property on a class having a magic getter
  ContainerInterface: unused exception dropped

Conflicts:
	.travis.yml
2015-05-12 17:01:57 +02:00
Jérôme Vieilledent
8b8feff246 [PropertyAccess] Fix setting public property on a class having a magic getter
| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | N/A
| License       | MIT
| Doc PR        | N/A

When using PropertyAccessor with an object having both a public property
and a magic getter, and one wants to update this property,
PropertyAccessor may lose the property reference.
This occurs when the public property value is a hash:

```php
class Foo
{
    /**
     * Example: $this->someProperty['foo']['bar'] = 'baz'
     * @var array
     */
    public $someProperty;

    public function __get($name)
    {
        // ...
    }
}

$obj = new Foo();
$obj->someProperty = ['foo' => ['bar' => 'some_value']];

$propertyAccessor->setValue($obj, 'someProperty[foo][bar]', 'another_value');

echo $obj->someProperty['foo']['bar'];
// Before this patch: 'some_value' => fail
// After this patch: 'another_value' => correct
```

Furthermore, public properties are always used before `__get()` by PHP.

This bug is visible since v2.6.5 as d733a887 changed the way
`setValue()` works.
2015-05-11 17:09:39 +02:00
Nicolas Grekas
8cf0613ead Merge branch '2.6' into 2.7
* 2.6:
  [Routing][DependencyInjection] Support .yaml extension in YAML loaders
  [DX] improve file loader error for router/other resources in bundle
  [FrameworkBundle] Initialize translator with the default locale.
  [FrameworkBundle] Fix Routing\DelegatingLoader resiliency to fatal errors
  [2.6][Translation] remove duplicate code for loading catalogue.
  [HttpKernel] Cleanup ExceptionListener
  CS fixes
  [DependencyInjection] Show better error when the Yaml component is not installed
  [2.3] SCA for Components - reference mismatches
  [Debug] Scream as LogLevel::DEBUG (but for fatal errors / uncaught exceptions)
  [2.3] Static Code Analysis for Components
  [WebProfilerBundle] Fix resiliency to exceptions thrown by the url generator
  [Translation] LoggingTranslator simplifications
  [Translation][fixed test] refresh cache when resources are no longer fresh.
  [FrameworkBundle] Fixed server:start --router relative path issue #14124
  [FrameworkBundle] improve usage of Table helper
  [Validator] Added missing Simplified Chinese (zh_CN) translations
  [FrameworkBundle] Workaround php -S ignoring auto_prepend_file

Conflicts:
	src/Symfony/Bundle/FrameworkBundle/Tests/Translation/TranslatorTest.php
	src/Symfony/Component/Console/Helper/Table.php
	src/Symfony/Component/Translation/LoggingTranslator.php
2015-04-18 17:11:06 +02:00
Nicolas Grekas
0191aa24bb Merge branch '2.3' into 2.6
* 2.3:
  [Routing][DependencyInjection] Support .yaml extension in YAML loaders
  [DX] improve file loader error for router/other resources in bundle
  [FrameworkBundle] Fix Routing\DelegatingLoader resiliency to fatal errors
  [HttpKernel] Cleanup ExceptionListener
  CS fixes
  [DependencyInjection] Show better error when the Yaml component is not installed
  [2.3] SCA for Components - reference mismatches
  [2.3] Static Code Analysis for Components
  [Translation][fixed test] refresh cache when resources are no longer fresh.
  [Validator] Added missing Simplified Chinese (zh_CN) translations
  [FrameworkBundle] Workaround php -S ignoring auto_prepend_file

Conflicts:
	src/Symfony/Bundle/FrameworkBundle/Tests/Translation/TranslatorTest.php
	src/Symfony/Component/Config/Exception/FileLoaderLoadException.php
	src/Symfony/Component/Console/Descriptor/TextDescriptor.php
	src/Symfony/Component/Console/Helper/TableHelper.php
	src/Symfony/Component/Console/Tests/Formatter/OutputFormatterTest.php
	src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php
	src/Symfony/Component/DependencyInjection/Dumper/YamlDumper.php
	src/Symfony/Component/HttpKernel/Debug/TraceableEventDispatcher.php
	src/Symfony/Component/HttpKernel/Tests/Debug/TraceableEventDispatcherTest.php
	src/Symfony/Component/PropertyAccess/PropertyAccessor.php
	src/Symfony/Component/Yaml/Tests/InlineTest.php
2015-04-18 17:02:51 +02:00
Fabien Potencier
c74cd4adbb minor #14206 [2.3] SCA for Components - reference mismatches (kalessil)
This PR was squashed before being merged into the 2.3 branch (closes #14206).

Discussion
----------

[2.3] SCA for Components - reference mismatches

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

Static Code Analysis with Php Inspections (EA Extended), no functional changes:
- worked out some of reference mismatches

Commits
-------

f732659 [2.3] SCA for Components - reference mismatches
2015-04-15 17:09:40 +02:00
Vladimir Reznichenko
f732659219 [2.3] SCA for Components - reference mismatches 2015-04-15 17:09:34 +02:00
Fabien Potencier
d5c873cf5a Merge branch '2.6' into 2.7
* 2.6:
  [Validator] Add missing pt_BR translations
  Add parsing of hexadecimal strings for PHP 7
  [Configuration] improve description for ignoreExtraKeys on ArrayNodeDefinition
  [Validator] Added missing Hungarian translation
  [Validator] Fixed grammar in Hungarian translation
  CS: Unary operators should be placed adjacent to their operands
  CS: Binary operators should be arounded by at least one space
  remove useless tests that fail in php 7
  [Translator] fix test for php 7 compatibility
  Update phpdoc of ProcessBuilder#setPrefix()

Conflicts:
	src/Symfony/Bridge/Propel1/Logger/PropelLogger.php
	src/Symfony/Component/Validator/Resources/translations/validators.hu.xlf
2015-03-30 17:55:07 +02:00
Fabien Potencier
2c4b5e5bbe Merge branch '2.3' into 2.6
* 2.3:
  [Validator] Add missing pt_BR translations
  Add parsing of hexadecimal strings for PHP 7
  [Configuration] improve description for ignoreExtraKeys on ArrayNodeDefinition
  [Validator] Added missing Hungarian translation
  [Validator] Fixed grammar in Hungarian translation
  CS: Unary operators should be placed adjacent to their operands
  CS: Binary operators should be arounded by at least one space
  remove useless tests that fail in php 7
  [Translator] fix test for php 7 compatibility
  Update phpdoc of ProcessBuilder#setPrefix()

Conflicts:
	src/Symfony/Component/HttpFoundation/Session/Attribute/NamespacedAttributeBag.php
	src/Symfony/Component/PropertyAccess/PropertyAccessor.php
	src/Symfony/Component/Validator/Resources/translations/validators.pt_BR.xlf
	src/Symfony/Component/Yaml/Parser.php
2015-03-30 17:54:10 +02:00
Dariusz Ruminski
2367f4a5a2 CS: Unary operators should be placed adjacent to their operands 2015-03-27 23:12:40 +01:00
Fabien Potencier
0f00f7c7e8 Merge branch '2.6' into 2.7
* 2.6:
  Php Inspections (EA Extended): squash all PR-13813 commits
  replaced the last remaining is_integer() call
  [2.3] [Config] [Console] [DependencyInjection] [DomCrawler] [Form] [HttpKernel] [PropertyAccess] [Security] [Translation] [Yaml] static code analysis, code cleanup
  [FrameworkBundle] simplify dep declaration
  [VarDumper] Fix "next element is already occupied"
  [Validator] Added missing galician (gl) translations
  [PropertyAccess] stop overwriting once a reference is reached (3rd)
  [OptionsResolver] Remove Unused Variable from Foreach Cycles
  [travis] Tests Security sub-components
  [Twig] bootstrap_3_layout.html.twig is usable as a trait
  [travis] Tests Security sub-components
  CS fixes
  [TwigBridge] Bootstrap Layout - Fix the label of checkbox cannot be empty
  [travis] test with php nightly

Conflicts:
	.travis.yml
	src/Symfony/Bundle/FrameworkBundle/composer.json
	src/Symfony/Component/Security/Http/Tests/Firewall/ExceptionListenerTest.php
	src/Symfony/Component/Security/Http/Tests/Firewall/RememberMeListenerTest.php
2015-03-07 08:43:00 +01:00
Philip Frank
d733a887df [PropertyAccess] stop overwriting once a reference is reached (3rd) 2015-03-03 20:22:08 +01:00
Nicolas Grekas
d4802aa92b Merge branch '2.6' into 2.7
* 2.6:
  Minor hot fix
  [PROCESS] make sure /dev/tty is readable
  [2.3] require-dev PHPUnit bridge
  [FrameworkBundle] Fixed Shell logo
  [2.3] Update CONTRIBUTING.md
  [2.3][Process] Fixed PhpProcess::getCommandLine() result
  [Console] explicit assertion for ArgvInput::getFirstArgument() with no arguments
  [PropertyAccess] unify and fix doc
  Enforce UTF-8 charset for core controllers
  Fix the toolbar JS for IE

Conflicts:
	.travis.yml
	src/Symfony/Bridge/Doctrine/composer.json
	src/Symfony/Bridge/Monolog/composer.json
	src/Symfony/Bridge/Propel1/composer.json
	src/Symfony/Bridge/ProxyManager/composer.json
	src/Symfony/Bridge/Swiftmailer/composer.json
	src/Symfony/Bridge/Twig/composer.json
	src/Symfony/Bundle/DebugBundle/composer.json
	src/Symfony/Bundle/FrameworkBundle/composer.json
	src/Symfony/Bundle/SecurityBundle/composer.json
	src/Symfony/Bundle/TwigBundle/composer.json
	src/Symfony/Bundle/WebProfilerBundle/composer.json
	src/Symfony/Component/Asset/Exception/ExceptionInterface.php
	src/Symfony/Component/Asset/Exception/LogicException.php
	src/Symfony/Component/BrowserKit/composer.json
	src/Symfony/Component/ClassLoader/composer.json
	src/Symfony/Component/Console/composer.json
	src/Symfony/Component/Debug/composer.json
	src/Symfony/Component/DependencyInjection/composer.json
	src/Symfony/Component/DomCrawler/composer.json
	src/Symfony/Component/EventDispatcher/composer.json
	src/Symfony/Component/Form/composer.json
	src/Symfony/Component/HttpFoundation/composer.json
	src/Symfony/Component/HttpKernel/composer.json
	src/Symfony/Component/Intl/composer.json
	src/Symfony/Component/Routing/composer.json
	src/Symfony/Component/Security/Acl/composer.json
	src/Symfony/Component/Security/Core/composer.json
	src/Symfony/Component/Security/Csrf/composer.json
	src/Symfony/Component/Security/Http/composer.json
	src/Symfony/Component/Security/composer.json
	src/Symfony/Component/Templating/composer.json
	src/Symfony/Component/Translation/composer.json
	src/Symfony/Component/Validator/composer.json
2015-02-24 13:09:34 +01:00
Tobias Schultze
d1c8c5d22f [PropertyAccess] unify and fix doc 2015-02-21 16:36:02 +01:00
Tobias Schultze
bbd4a1e2ce Merge branch '2.6' into 2.7
Conflicts:
	src/Symfony/Component/PropertyAccess/PropertyAccessor.php
	src/Symfony/Component/PropertyAccess/Tests/PropertyAccessorTest.php
2015-02-21 14:05:27 +01:00
Tobias Schultze
eabad39dd5 Merge branch '2.3' into 2.6
Conflicts:
	src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/request.html.twig
	src/Symfony/Component/PropertyAccess/PropertyAccessor.php
	src/Symfony/Component/PropertyAccess/Tests/PropertyAccessorTest.php
	src/Symfony/Component/Validator/Tests/Mapping/Loader/XmlFileLoaderTest.php
2015-02-21 13:49:08 +01:00
Tobias Schultze
9cacecbf79 [PropertyAccess] the property path constructor already implements the type check 2015-02-19 13:40:39 +01:00
Tobias Schultze
4e11c0710b [PropertyAccess] refactor type checks to remove duplicate logic
and thus improve performance
2015-02-19 13:30:42 +01:00