Fix wrong method in findTaggedServiceIds(), add example to docblock.
merged branch beberlei/TaggedServices (PR #7909)

This PR was submitted for the master branch but it was merged into the 2.1 branch instead (closes #7909).

Discussion
----------

[DependencyInjection] Fix method use + example in doc block

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT

Fixes using a wrong method in ``findTaggedServiceIds`` and adds an example for the usage and showing the returned data structure as ``@return array`` is not very helpful, the datastructure being a bit unintuitive.

Commits
-------

ad2c955 [DependencyInjection] Fix wrong method in findTaggedServiceIds(), add example to docblock.
[Form] Improved multi-byte handling of NumberToLocalizedStringTransformer
if the repository method returns an array ensure that it's internal poin...
merged branch xabbuh/issue6651 (PR #7906)

This PR was squashed before being merged into the 2.1 branch (closes #7906).

Discussion
----------

if the repository method returns an array ensure that it's internal poin...

...ter is resetted

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

Commits
-------

0610750 if the repository method returns an array ensure that it's internal poin...
merged branch bschussek/issue7609 (PR #7902)

This PR was merged into the 2.2 branch.

Discussion
----------

[Form] Improved multi-byte handling of NumberToLocalizedStringTransformer

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

Commits
-------

dcced01 [Form] Improved multi-byte handling of NumberToLocalizedStringTransformer
[Form] Fixed: String validation groups are never interpreted as callbacks
[Form] Fixed transform()/reverseTransform() to always throw TransformationFailedExceptions
merged branch bschussek/issue7371 (PR #7918)

This PR was merged into the 2.1 branch.

Discussion
----------

[Form] Fixed: String validation groups are never interpreted as callbacks

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

Commits
-------

7b2ebbf [Form] Fixed: String validation groups are never interpreted as callbacks
merged branch bschussek/issue7558 (PR #7917)

This PR was merged into the 2.1 branch.

Discussion
----------

[Form] Fixed transform()/reverseTransform() to always throw TransformationFailedExceptions

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

Commits
-------

bcb5400 [Form] Fixed transform()/reverseTransform() to always throw TransformationFailedExceptions
[Validator] Fixed: $traverse and $deep is passed to the visitor from Validator::validate()
merged branch bschussek/fix-validator (PR #7919)

This PR was merged into the 2.2 branch.

Discussion
----------

[Validator] Fixed: $traverse and $deep is passed to the visitor from Validator::validate()

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

Commits
-------

59b78c7 [Validator] Fixed: $traverse and $deep is passed to the visitor from Validator::validate()
[Validator] fixed wrong URL for XSD
added a missing check for the provider key
made some optimization when parsing YAML files
merged branch fabpot/missing-provider-key-check (PR #7937)

This PR was merged into the 2.1 branch.

Discussion
----------

added a missing check for the provider key

| 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

Commits
-------

5b7e1e6 added a missing check for the provider key
added additional tests to cover invalid argument exceptions in OutputFormatterStyle component
ProxyManager Bridge
merged branch Ocramius/feature/proxy-manager-bridge (PR #7890)

This PR was squashed before being merged into the master branch (closes #7890).

Discussion
----------

ProxyManager Bridge

As of @beberlei's suggestion, I re-implemented #7527 as a new bridge to avoid possible hidden dependencies.

Everything is like #7527 except that the new namespace (and possibly package/subtree split) `Symfony\Bridge\ProxyManager` is introduced

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #6140 (supersedes) #5012 #6102 (maybe) #7527 (supersedes)
| License       | MIT (attached code) - BSD-3-Clause (transitive dependency)
| Doc PR        | Please pester me to death so I do it

This PR introduces lazy services along the lines of zendframework/zf2#4146

It introduces an **OPTIONAL** dependency to [ProxyManager](https://github.com/Ocramius/ProxyManager) and transitively to [`"zendframework/zend-code": "2.*"`](https://github.com/zendframework/zf2/tree/master/library/Zend/Code).

## Lazy services: why? A comprehensive example

For those who don't know what this is about, here's an example.

Assuming you have a service class like following:

```php
class MySuperSlowClass
{
    public function __construct()
    {
        // inject large object graph or do heavy computation
        sleep(10);
    }

    public function doFoo()
    {
        echo 'Foo!';
    }
}
```

The DIC will hang for 10 seconds when calling:

```php
$container->get('my_super_slow_class');
```

With this PR, this can be avoided, and the following call will return a proxy immediately.

```php
$container->getDefinitions('my_super_slow_class')->setLazy(true);
$service = $container->get('my_super_slow_class');
```

The 10 seconds wait time will be delayed until the object is actually used:

```php
$service->doFoo(); // wait 10 seconds, then 'Foo!'
```

A more extensive description of the functionality can be found [here](https://github.com/Ocramius/ProxyManager/blob/master/docs/lazy-loading-value-holder.md).

## When do we need it?

Lazy services can be used to optimize the dependency graph in cases like:

 * Webservice endpoints
 * Db connections
 * Objects that cause I/O in general
 * Large dependency graphs that are not always used

This could also help in reducing excessive service location usage as I've explained [here](http://ocramius.github.com/blog/zf2-and-symfony-service-proxies-with-doctrine-proxies/).

## Implementation quirks of this PR

There's a couple of quirks in the implementation:

 * `Symfony\Component\DependencyInjection\CompilerBuilder#createService` is now public because of the limitations of PHP 5.3
 * `Symfony\Component\DependencyInjection\Dumper\PhpDumper` now with extra mess!
 * The proxies are dumped at the end of compiled containers, therefore the container class is not PSR compliant anymore

Commits
-------

78e3710 ProxyManager Bridge
Reverted a part of f5e7f2481916d32d5e51b4f01a2deced78b81549