Commit Graph

2768 Commits

Author SHA1 Message Date
Daniel Espendiller
f2c04464d8 move event listener method type hint docs to @Event annotations default value. makes it easily parsable by PhpStorm plugin 2016-05-03 20:48:46 +02:00
Fabien Potencier
352997e61e minor #18664 [Form] [DoctrineBridge] updated changelogs after #18359 (HeahDude)
This PR was merged into the 3.1-dev branch.

Discussion
----------

[Form] [DoctrineBridge] updated changelogs after #18359

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | ~
| License       | MIT
| Doc PR        | ~

follows #18359.

Commits
-------

1c8dc9d [Form] [DoctrineBridge] updated changelogs after #18359
2016-04-29 17:38:41 +02:00
Jules Pietri
1c8dc9d06b [Form] [DoctrineBridge] updated changelogs after #18359
follows #18359.
2016-04-29 11:10:43 +02:00
Fabien Potencier
731d7a6bf0 Merge branch '3.0'
* 3.0:
  [Form] Fix tests added in #18180
2016-04-28 16:43:15 +02:00
Jules Pietri
c45a435805 [Form] Fix tests added in #18180 2016-04-28 16:42:50 +02:00
Fabien Potencier
ee679bf18e added a missing @group legacy 2016-04-28 12:18:51 +02:00
Fabien Potencier
5a64e5869e fixed typos 2016-04-28 12:17:48 +02:00
Fabien Potencier
0c5b83ab95 feature #18359 [Form] [DoctrineBridge] optimized LazyChoiceList and DoctrineChoiceLoader (HeahDude)
This PR was merged into the 3.1-dev branch.

Discussion
----------

[Form] [DoctrineBridge] optimized LazyChoiceList and DoctrineChoiceLoader

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | ~
| License       | MIT
| Doc PR        | ~

Problem
======
Actually we got a circular dependency:

| Object | Return
|----------|-------------|
|`DefaultChoiceListFactory::createListFromLoader()` (decorated) | `LazyChoiceList` with loader and resolved `$value`
| `LazyChoiceList::get*` | `DoctrineChoiceLoader` with resolved `$value`
`DoctrineChoiceLoader::loadChoiceList()` | (decorated) `DefaultChoiceListFactory` with loaded choices and resolved `$value`
`DefaultChoiceListFactory::createListFromChoices()` | `ArrayChoiceList` with `resolved `$value`

With this refactoring, the `DoctrineChoiceLoader` is no longer dependant to the factory, the `ChoiceLoaderInterface::loadChoiceList()` must return a `ChoiceListInterface` but should not need a decorated factory while `$value` is already resolved. It should remain lazy IMHO.

Solution
======

| Object | Return |
|----------|-----------|
| `DefaultChoiceListFactory::createListFromLoader()` | `LazyChoiceList` with loader and resolved `$value`
| `LazyChoiceList::get*()` | `DoctrineChoiceLoader` with resolved `$value`
| `DoctrineChoiceLoader::loadChoiceList()` | `ArrayChoiceList` with resolved `$value`.

Since `choiceListFactory` is a private property, this change should be safe regarding BC.

To justify this change, I've made some blackfire profiling.
You can see my [branch of SE here](https://github.com/HeahDude/symfony-standard/tree/test/optimize-doctrine_choice_loader) and the [all in file test implementation](https://github.com/HeahDude/symfony-standard/blob/test/optimize-doctrine_choice_loader/src/AppBundle/Controller/DefaultController.php).

Basically it loads a form with 3 `EntityType` fields with different classes holding 50 instances each.

(INIT events are profiled with an empty cache)

When | What | Diff (SE => PR)
--------|-------|------
INIT (1) | build form (load types) | [see](https://blackfire.io/profiles/compare/061d5d28-15c6-4e01-b8c0-3edc9cb8daf0/graph)
INIT (2) | build view (load choices) | [see](https://blackfire.io/profiles/compare/04f142a8-d886-405a-be4d-636ba82d8acd/graph)
CACHED | build form (load types) | [see](https://blackfire.io/profiles/compare/293b27b6-aa58-42ae-bafb-655513201505/graph)
CACHED | build view (load choices) | [see](https://blackfire.io/profiles/compare/e5b37dfe-cc9e-498f-b98a-7448830ad190/graph)
SUBMIT | build form (load types) | [see](https://blackfire.io/profiles/compare/7f3baea9-0d27-46b6-8c24-c577742382dc/graph)
SUBMIT | handle request (load choices) | [see](https://blackfire.io/profiles/compare/8644ebfb-4397-495b-8f3d-1a6e1d7f8476/graph)
SUBMIT | build view (load values) | [see](https://blackfire.io/profiles/compare/89c3cc7c-ea07-4300-91b3-99004cb58ea1/graph)

(1):
![build_form-no_cache](https://cloud.githubusercontent.com/assets/10107633/14136166/b5a85eb8-f661-11e5-8556-3e0dcbfaf404.jpg)
(2):
![build_view-no_cache](https://cloud.githubusercontent.com/assets/10107633/14136240/1162f3ee-f662-11e5-834a-1ed1e519dc83.jpg)

It can seem like 1 and 2 balance each other but it comes clear when comparing values:

| -  | Build form | Build view |
|-----|---------|--------------|
| wall time | -88 ms | +9.71 ms
| blocking I/O | -40 ms | +3.67 ms
| cpu | -48 ms | +13.4 ms
| memory | -4.03 MB | +236 kB
| network | -203 B | +2.21 kB

Commits
-------

98621f4 [Form] optimized LazyChoiceList
86b2ff1 [DoctrineBridge] optimized DoctrineChoiceLoader
2016-04-28 12:16:40 +02:00
Fabien Potencier
50f2529acb feature #18357 [Form] Let TextType implement DataTransformerInterface (HeahDude)
This PR was merged into the 3.1-dev branch.

Discussion
----------

[Form] Let `TextType` implement `DataTransformerInterface`

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #5906
| License       | MIT
| Doc PR        | ~

Commits
-------

7e97fbb [Form] let `TextType` implements `DataTransformerInterface`
2016-04-28 12:07:03 +02:00
Fabien Potencier
461e8712bc Merge branch '3.0'
* 3.0:
  [Form] refactor CheckboxListMapper and RadioListMapper
  Revert "[Form] refactor `RadioListMapper::mapDataToForm()`"
2016-04-28 11:57:20 +02:00
Fabien Potencier
99be2fcfb7 Merge branch '2.8' into 3.0
* 2.8:
  [Form] refactor CheckboxListMapper and RadioListMapper
  Revert "[Form] refactor `RadioListMapper::mapDataToForm()`"
2016-04-28 11:57:11 +02:00
Fabien Potencier
5c235428d2 Merge branch '2.7' into 2.8
* 2.7:
  [Form] refactor CheckboxListMapper and RadioListMapper
  Revert "[Form] refactor `RadioListMapper::mapDataToForm()`"
2016-04-28 11:53:50 +02:00
hamza
191b4954c0 fix #17993 - Deprecated callable strings
ext
2016-04-15 07:55:48 +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
e72d509012 Merge branch '2.8' into 3.0
* 2.8: (23 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
  [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
  [EventDispatcher] Try first if the event is Stopped
  ...
2016-04-12 20:09:53 +02:00
Jules Pietri
ea5375c7b7 [Form] refactor CheckboxListMapper and RadioListMapper
fixes #14712 and #17789.

`ChoiceType` now always use `ChoiceToValueTransformer` or
`ChoicesToValuesTransformer` depending on `multiple` option.
Hence `CheckboxListMapper` and `RadioListMapper` don’t handle
the transformation anymore.
Fixes pre selection of choice with model values such as `null`,
`false` or empty string.
2016-04-09 15:28:45 +02:00
Jules Pietri
71841c737c Revert "[Form] refactor RadioListMapper::mapDataToForm()"
closes #18173.

This reverts commit 8f918e5f84.
2016-04-09 15:28:10 +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
Peter Rehm
05fe6f9b07 [Form] FormValidator removed code related to removed option 2016-04-07 17:44:59 +02:00
Sergey Fedotov
da8a19728b Remove unnecessary option assignment 2016-04-05 23:03:15 +03:00
Christian Flothmann
f82a25f288 fix tests (use non-deprecated options)
* reference form type by its FQCN instead of its string name
* use the `entry_type` and `entry_options` options instead of the
  deprecated `type` and `options` options
2016-04-05 20:37:30 +02:00
Fabien Potencier
16ac46be44 Merge branch '2.7' into 2.8
* 2.7:
  [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
  [EventDispatcher] Try first if the event is Stopped
  [FrameworkBundle] fixes grammar in container:debug command manual.
  [Form] fix "prototype" not required when parent form is not required
2016-04-05 18:36:54 +02:00
Fabien Potencier
034f47635c Merge branch '2.3' into 2.7
* 2.3:
  [HttpFoundation] Improve phpdoc
  [Logging] Add support for firefox in ChromePhpHandler
  [Security] Fixed SwitchUserListener when exiting an impersonication with AnonymousToken
  [Form] fix "prototype" not required when parent form is not required
2016-04-05 18:36:43 +02:00
Jules Pietri
98621f4355 [Form] optimized LazyChoiceList 2016-04-03 19:07:16 +02:00
Nicolas Grekas
82f0acfd5e Merge branch '3.0'
* 3.0:
  [travis] Disable hirak/prestissimo for deps=low/high tests
  Fixed the "hover" state of the profiler sidebar menu
  [HttpFoundation] fix phpdoc of UploadedFile
  Lower complexity of Form:isValid()
  skipped dns-sensitive tests when DnsMock is not found
  fixed typo
  [FrameworkBundle] Return the invokable service if its name is the class name
  [ci] Skip dns-sensitive tests when DnsMock is not found
  Exclude Bridge\PhpUnit from composer.json by default
  fixed CS
  Optimize ReplaceAliasByActualDefinitionPass
  [Process] use __METHOD__ where applicable
  [Routing] Don't needlessly execute strtr's as they are fairly expensive

Conflicts:
	.travis.yml
2016-04-02 10:08:03 +02:00
Nicolas Grekas
f990f1bea0 Merge branch '2.8' into 3.0
* 2.8:
  [travis] Disable hirak/prestissimo for deps=low/high tests
  Fixed the "hover" state of the profiler sidebar menu
  [HttpFoundation] fix phpdoc of UploadedFile
  Lower complexity of Form:isValid()
  skipped dns-sensitive tests when DnsMock is not found
  [FrameworkBundle] Return the invokable service if its name is the class name
  [ci] Skip dns-sensitive tests when DnsMock is not found
  Exclude Bridge\PhpUnit from composer.json by default
  fixed CS
  Optimize ReplaceAliasByActualDefinitionPass
  [Process] use __METHOD__ where applicable
  [Routing] Don't needlessly execute strtr's as they are fairly expensive

Conflicts:
	.travis.yml
	src/Symfony/Component/DependencyInjection/Compiler/ReplaceAliasByActualDefinitionPass.php
2016-04-02 10:04:34 +02:00
Nicolas Grekas
e7d7e1ee38 Merge branch '2.7' into 2.8
* 2.7:
  [travis] Disable hirak/prestissimo for deps=low/high tests
  [HttpFoundation] fix phpdoc of UploadedFile
  Lower complexity of Form:isValid()
  skipped dns-sensitive tests when DnsMock is not found
  [FrameworkBundle] Return the invokable service if its name is the class name
  [ci] Skip dns-sensitive tests when DnsMock is not found
  Exclude Bridge\PhpUnit from composer.json by default
  fixed CS
  Optimize ReplaceAliasByActualDefinitionPass
  [Process] use __METHOD__ where applicable
  [Routing] Don't needlessly execute strtr's as they are fairly expensive
2016-04-02 09:57:47 +02:00
Krzysztof Piasecki
d583ec3543 Lower complexity of Form:isValid() 2016-04-01 09:09:19 +02:00
Jules Pietri
7df9ca2aeb [Form] fix "prototype" not required when parent form is not required 2016-03-31 14:29:18 +02:00
Nicolas Grekas
6ed73d56d9 Merge branch '3.0'
* 3.0:
  [Process] Fix stream_select priority when writing to stdin
  bumped Symfony version to 3.0.5
  updated VERSION for 3.0.4
  updated CHANGELOG for 3.0.4
  [Form] NumberToLocalizedStringTransformer should return floats when possible
  [Form] remove useless code in ChoiceType
  [DependencyInjection] Enabled alias for service_container

Conflicts:
	src/Symfony/Component/HttpKernel/Kernel.php
	src/Symfony/Component/Process/Pipes/AbstractPipes.php
2016-03-31 10:13:34 +02:00
Nicolas Grekas
c3f0bfe36b Merge branch '2.8' into 3.0
* 2.8:
  [Process] Fix stream_select priority when writing to stdin
  [Form] NumberToLocalizedStringTransformer should return floats when possible
  [Form] remove useless code in ChoiceType
  [DependencyInjection] Enabled alias for service_container

Conflicts:
	src/Symfony/Component/DependencyInjection/Tests/Compiler/ReplaceAliasByActualDefinitionPassTest.php
	src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php
2016-03-31 10:11:51 +02:00
Nicolas Grekas
f7010ce180 Merge branch '2.7' into 2.8
* 2.7:
  [Process] Fix stream_select priority when writing to stdin
  [Form] NumberToLocalizedStringTransformer should return floats when possible
  [Form] remove useless code in ChoiceType
  [DependencyInjection] Enabled alias for service_container

Conflicts:
	src/Symfony/Component/Form/Extension/Core/DataTransformer/NumberToLocalizedStringTransformer.php
2016-03-31 10:07:27 +02:00
Nicolas Grekas
2f2ce3e637 Merge branch '2.3' into 2.7
* 2.3:
  [Form] NumberToLocalizedStringTransformer should return floats when possible
  [DependencyInjection] Enabled alias for service_container

Conflicts:
	src/Symfony/Component/DependencyInjection/Tests/Compiler/ReplaceAliasByActualDefinitionPassTest.php
2016-03-31 10:05:11 +02:00
Fabien Potencier
2e6982ac67 minor #18316 [Form] remove useless copy in ChoiceType (HeahDude)
This PR was merged into the 2.7 branch.

Discussion
----------

[Form] remove useless copy in ChoiceType

| Q             | A
| ------------- | ---
| Branch?       | 2.7+
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | symfony/symfony-docs#6393

`ChoiceListFactoryInterface` expected `$groupBy` to be a callable or null, not an array ([ref](https://github.com/symfony/symfony/blob/2.7/src/Symfony/Component/Form/ChoiceList/Factory/ChoiceListFactoryInterface.php#L111)).

The factory defaults `groupBy` to `ChoiceListInterface::getStructuredValues()` ([ref](https://github.com/symfony/symfony/blob/2.7/src/Symfony/Component/Form/ChoiceList/Factory/DefaultChoiceListFactory.php#L122)).

Hence, the copy of the choices array and the recursive flip are useless and may be slowing down performances imho (especially with `EntityType`).

Commits
-------

562f5e4 [Form] remove useless code in ChoiceType
2016-03-30 12:47:40 +02:00
Fabien Potencier
86eee064dd Merge branch '3.0'
* 3.0:
  [ci] Get ICU/intl from github instead of nebm.ist.utl.pt/~glopes
  [Debug] Fix case sensitivity checks
  [Debug] Fix handling of php7 throwables
  fix high deps tests
  fix testing deprecation messages
  [Process] remove dead code
  [WebProfilerBundle] Add missing use statement.
  [ClassLoader] Fix storing not-found classes in APC cache
  [Form] cs fixes in date types
  [phpunit] disable prophecy
2016-03-30 12:41:47 +02:00
Fabien Potencier
4e17cb2ecb Merge branch '2.8' into 3.0
* 2.8:
  [ci] Get ICU/intl from github instead of nebm.ist.utl.pt/~glopes
  [Debug] Fix case sensitivity checks
  [Debug] Fix handling of php7 throwables
  fix high deps tests
  fix testing deprecation messages
  [Process] remove dead code
  [WebProfilerBundle] Add missing use statement.
  [ClassLoader] Fix storing not-found classes in APC cache
  [Form] cs fixes in date types
  [phpunit] disable prophecy
2016-03-30 12:41:14 +02:00
Fabien Potencier
8ca43b0760 Merge branch '2.7' into 2.8
* 2.7:
  [ci] Get ICU/intl from github instead of nebm.ist.utl.pt/~glopes
  [Debug] Fix case sensitivity checks
  [Debug] Fix handling of php7 throwables
  fix high deps tests
  [Process] remove dead code
  [WebProfilerBundle] Add missing use statement.
  [ClassLoader] Fix storing not-found classes in APC cache
  [Form] cs fixes in date types
  [phpunit] disable prophecy
2016-03-30 12:37:34 +02:00
Fabien Potencier
03c28e4012 Merge branch '2.3' into 2.7
* 2.3:
  [ci] Get ICU/intl from github instead of nebm.ist.utl.pt/~glopes
  [Debug] Fix handling of php7 throwables
  [Process] remove dead code
  [ClassLoader] Fix storing not-found classes in APC cache
  [Form] cs fixes in date types
2016-03-30 12:21:35 +02:00
Jules Pietri
7e97fbb6e4 [Form] let TextType implements DataTransformerInterface
closes #5906.

The submitted data should always be
transformed back to the model as a string
as NULL in this case could stand for "unset
this value" whereas a string property of a
class could rely on the string type.

Furthermore, this prevents potential issues
with PHP 7 which allows type hinting of
strings in functions.
2016-03-30 09:45:14 +02:00
Nicolas Grekas
f5ed09c64c [Form] NumberToLocalizedStringTransformer should return floats when possible 2016-03-30 09:21:26 +02:00
Fabien Potencier
c5c63dc142 Merge branch '3.0'
* 3.0:
  bumped Symfony version to 2.8.5
  updated VERSION for 2.8.4
  updated CHANGELOG for 2.8.4
  Revert "bug #18275 [Form] Fix BC break introduced in #14403 (HeahDude)"
  improved comment
  [FileSystem] Add support for Google App Engine.
  [2.8] fix mocks
  bumped Symfony version to 2.7.12
  [Form] Fix BC break introduced in #14403
  updated VERSION for 2.7.11
  updated CHANGELOG for 2.7.11
  [Request] Fix support of custom mime types with parameters
  fix mocks
  fix mocks
  [Validator] do not treat payload as callback
2016-03-27 18:15:51 +02:00
Jules Pietri
bc21828838 [Form] cs fixes in date types 2016-03-27 14:59:14 +02:00
Fabien Potencier
f4c998876e Revert "bug #18275 [Form] Fix BC break introduced in #14403 (HeahDude)"
This reverts commit 56fa7989a8, reversing
changes made to dcc3fce855.
2016-03-27 12:25:16 +02:00
Fabien Potencier
37a3a301bc Merge branch '2.8' into 3.0
* 2.8:
  improved comment
  [FileSystem] Add support for Google App Engine.
  [2.8] fix mocks
  [Form] Fix BC break introduced in #14403
2016-03-27 12:24:39 +02:00
Fabien Potencier
56fa7989a8 bug #18275 [Form] Fix BC break introduced in #14403 (HeahDude)
This PR was merged into the 2.8 branch.

Discussion
----------

[Form] Fix BC break introduced in #14403

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

Commits
-------

5f48c6a [Form] Fix BC break introduced in #14403
2016-03-27 12:21:58 +02:00
Christian Flothmann
7dff706da1 [2.8] fix mocks 2016-03-27 11:27:49 +02:00
Jules Pietri
562f5e4394 [Form] remove useless code in ChoiceType
`ChoiceListFactoryInterface` expected `$group_by` to be a callable or
null not an array.
The factory defaults `group_by` to
`ChoiceListInterface::getStructuredValues`.
2016-03-26 02:35:52 +01:00
Jules Pietri
5f48c6ac9a [Form] Fix BC break introduced in #14403 2016-03-25 19:30:27 +01:00
Christian Flothmann
d9be1b4cc4 fix mocks
* check for existance of `setMetadataFactory()` method (this is needed
  for tests run with deps=high as the method was removed in Symfony
  3.0)
* fix mock testing the `EngineInterface` as the `stream()` method cannot
  be mocked when it is does not exist in the mocked interface
2016-03-25 16:52:47 +01:00
Tobias Schultze
3598105da9 Merge branch '3.0' 2016-03-25 02:52:00 +01:00