Commit Graph

676 Commits

Author SHA1 Message Date
Graham Campbell
443307edc1 Docblock fixes 2014-11-30 13:33:44 +00:00
Daniel Wehner
a18b6d17e3 Fix initialized() with aliased services 2014-11-25 12:27:34 +01:00
Warnar Boekkooi
7816a98204 [DependencyInjection] inlined factory not referenced 2014-11-12 08:52:52 +01:00
Fabien Potencier
97bb22c48c minor #12206 [Config] fix filelocator with empty name (Tobion)
This PR was merged into the 2.3 branch.

Discussion
----------

[Config] fix filelocator with empty name

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

fix filelocator with empty name + phpdoc in config component

Commits
-------

63b8c07 [DependencyInjection] use inheritdoc for loaders
ddd2fe2 [Config] fix filelocator with empty name
2014-10-30 17:06:22 +01:00
Fabien Potencier
20e7cf12ba minor #12293 Remove aligned '=>' and '=' (disquedur)
This PR was squashed before being merged into the 2.3 branch (closes #12293).

Discussion
----------

Remove aligned '=>' and '='

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | [https://github.com/symfony/symfony/issues/12284]
| License       | MIT

Could you said to me if i should make an other PR for 2.5 branch.

Commits
-------

51312d3 Remove aligned '=>' and '='
2014-10-26 08:31:56 +01:00
Disquedur
51312d31cc Remove aligned '=>' and '=' 2014-10-26 08:30:58 +01:00
Karoly Negyesi
acbde502bf Break infinite loop while resolving aliases 2014-10-26 08:26:27 +01:00
Tobias Schultze
63b8c07e5b [DependencyInjection] use inheritdoc for loaders 2014-10-13 21:10:53 +02:00
Laurent Ghirardotti
638ce847b3 [Doc] Use Markdown syntax highlighting 2014-10-01 07:38:33 +02:00
Fabien Potencier
369aebf431 fixed CS 2014-09-22 10:32:35 +02:00
Christian Flothmann
7333c2d1cb remove service parameter type from XSD
Referencing a service in a parameter doesn't work and will lead to an
error when the configuration is loaded.
2014-09-13 09:57:08 +02:00
Christophe Coevoet
5183501e0b [DI] Added safeguards against invalid config in the YamlFileLoader
Exceptions explaining the mistake are better than fatal errors or weird
notices appearing when trying to deal with such invalid data.
Closes #11333
2014-09-02 09:31:18 +02:00
Warnar Boekkooi
e992f8e3d1 Fixed Factory services not within the ServiceReferenceGraph. 2014-08-27 10:32:18 +02:00
Jakub Kulhan
39c4cc387d [DependencyInjection] fix @return anno created by PhpDumper 2014-08-26 15:05:12 +02:00
Hany el-Kerdany
18e3e6fe20 [DependencyInjection] fixed missing 'factory-class' attribute in XmlDumper output
Symfony\Component\DependencyInjection\Dumper\XmlDumper didn't write 'factory-class' XML attribute for definitions on which setFactoryClass() was called.

This caused the Container[Builder] to throw an exception when the relevant service is being requested/initiated after loading the dumped XML:

`Uncaught Exception Symfony\Component\DependencyInjection\Exception\RuntimeException: "Cannot create service "xxx" from factory method without a factory service or factory class." at /<path>/<to>/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ContainerBuilder.php`

Fixed the problem, and updated the relevant test fixture.
2014-08-04 10:10:46 +03:00
Fabien Potencier
abf2edf81a minor #11483 fix some docblocks (xabbuh)
This PR was merged into the 2.3 branch.

Discussion
----------

fix some docblocks

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

Commits
-------

1775da5 fix some docblocks
2014-08-02 09:53:48 +02:00
Christian Flothmann
1775da5925 fix some docblocks 2014-08-02 08:27:27 +02:00
sun
440322effc Fixed self-reference in 'service_container' service breaks garbage collection (and clone). 2014-08-02 08:06:01 +02:00
Fabien Potencier
71edf38d59 partially reverted previous commit 2014-07-29 20:14:16 +02:00
Fabien Potencier
e9022adaef fixed CS 2014-07-29 20:09:11 +02:00
Jakub Zalas
678766900b [DependencyInjection] Pass a Scope instance instead of a scope name. 2014-07-19 21:50:43 +01:00
Christian Raue
afc4930900 removed defaults from PHPUnit configuration 2014-07-07 12:13:42 +02:00
Christian Raue
84b5581521 added XSD to PHPUnit configuration 2014-07-07 11:57:21 +02:00
Volker
637c6e1c69 Remove undefined variable $e 2014-06-03 03:40:41 +02:00
n-aleha
93544aadfa [DependencyInjection] Fix parameter description in ConfigurationExtensionInterface
| Q             | A
| ------------- | ---
| Fixed tickets | #10845
| License       | MIT

This fixes the description of parameter `array $config` in file ConfigurationExtensionInterface.php by removing the extra `$config`.
2014-05-02 22:42:57 +00:00
Romain Neutron
32e5f6727a [DependencyInjection] Fix travis unit tests 2014-04-30 17:29:47 +02:00
Fabien Potencier
5b72e5ab04 minor #10717 unified return null usages (fabpot)
This PR was merged into the 2.3 branch.

Discussion
----------

unified return null usages

| Q             | A
| ------------- | ---
| License       | MIT

This PR unifies the way we return `null` from a function or method:

 * always use `return;` instead of `return null;` (the current code base uses both);
 * never use `return;` at the end of a function/method.

Commits
-------

d1d569b unified return null usages
2014-04-18 22:35:25 +02:00
Fabien Potencier
e96b018805 fixed types in phpdocs 2014-04-16 12:30:19 +02:00
Fabien Potencier
d1d569bf7b unified return null usages 2014-04-16 09:43:51 +02:00
Fabien Potencier
810b9ed107 made {@inheritdoc} annotations consistent across the board 2014-04-16 09:04:20 +02:00
Fabien Potencier
3c9c10f3a0 made phpdoc types consistent with those defined in Hack 2014-04-15 07:41:45 +02:00
Fabien Potencier
0555b7f2ab made types consistent with those defined in Hack 2014-04-13 20:00:14 +02:00
Fabien Potencier
f4ffd95713 fixed CS 2014-03-27 19:14:33 +01:00
catch
cc9cc37e79 Avoid levenshtein comparison when using ContainerBuilder. 2014-03-27 19:13:32 +01:00
Fabien Potencier
47d1592b56 added missing unit test 2014-03-27 15:52:07 +01:00
John Nickell
fd1d48b54f Fixed YamlFileLoader imports path
YamlFileLoader used the resource name as the current directory during import, which can cause a failed import when using a relative path. Using the $path variable output from the locator is consistent with other loaders and fixes the bug.
2014-03-27 08:28:37 +01:00
Fabien Potencier
4927d0c8a3 changed some PHPUnit assertions to more specific ones 2014-03-01 18:25:29 +01:00
Fabien Potencier
eb3f6c6efb fixed various inconsistencies 2014-02-11 11:29:24 +01:00
florianv
caf180959f [DependencyInjection] Remove unneeded file 2014-01-25 20:23:00 +01:00
Luis Cordova
8ace5f9f0d update year on licenses 2014-01-07 08:19:25 -05:00
Fabien Potencier
7f9a366529 removed unneeded use statements 2014-01-01 08:52:14 +01:00
Sébastien Lavoie
a2358e04bc Fixed #9020 - Added support for collections in service#parameters 2013-12-30 22:18:20 +01:00
Fabien Potencier
d6502952b4 [DependencyInjection] fixed InlineServiceDefinitionsPass to not inline a service if it's part of the current definition (to avoid an infinite loop) 2013-12-29 15:15:37 +01:00
Fabien Potencier
04471c9916 minor #9869 fixed various typos (fabpot)
This PR was merged into the 2.3 branch.

Discussion
----------

fixed various typos

| 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

Commits
-------

2f15ac7 fixed various typos
2013-12-27 16:16:38 +01:00
Fabien Potencier
2f15ac7507 fixed various typos 2013-12-27 16:08:19 +01:00
Fabien Potencier
408d992a3f [DependencyInjection] fixed typo 2013-12-23 10:20:48 +01:00
Jakub Zalas
c6f210b5ad [DependencyInjection] Fixed support for backslashes in service ids.
This change is for consistency with camelize() which is used in ProxyDumper and PhpDumper.
2013-12-20 22:29:30 +01:00
Wouter J
06985eb123 Do normalization on tag options 2013-12-16 17:04:48 +01:00
Markus Staab
fe735ed4be Fixed typo in phpdoc 2013-12-02 07:43:49 +01:00
Ondrej Mirtes
e30a7d072d Container::camelize also takes backslashes into consideration 2013-11-25 16:01:27 +01:00
Fabien Potencier
e0b751a2d8 Merge branch '2.2' into 2.3
* 2.2:
  fixed some typos
  fixed @expectedException class names

Conflicts:
	src/Symfony/Component/Config/Tests/Definition/ArrayNodeTest.php
	src/Symfony/Component/Console/Tests/Command/CommandTest.php
	src/Symfony/Component/Locale/Tests/Stub/StubLocaleTest.php
	src/Symfony/Component/Locale/Tests/Stub/StubNumberFormatterTest.php
2013-11-25 15:49:41 +01:00
Fabien Potencier
8d69bb5886 fixed @expectedException class names 2013-11-25 09:44:14 +01:00
Fabien Potencier
dfc54f9e96 Merge branch '2.2' into 2.3
* 2.2:
  No Entity Manager defined exception
  fixed CS
  [Acl] Fix for issue #9433
  [Validator] fix docblock typos
  [DependencyInjection] removed the unused Reference and Parameter classes use statements from the compiled container class
  Fix mistake in translation's service definition.
  if handler_id is identical to null fix
  CS fix
  Fixed ModelChoiceList tests in Propel1 bridge.
  [AclProvider] Fix incorrect behaviour when partial results returned from cache
  Check if the pipe array is empty before calling stream_select()
  re-factor Propel1 ModelChoiceList
  [Locale] fixed the failing test described in #9455
  [Process] fix phpdoc and timeout of 0
  bug #9445 [BrowserKit] fixed protocol-relative url redirection

Conflicts:
	src/Symfony/Component/BrowserKit/Tests/ClientTest.php
	src/Symfony/Component/Locale/Tests/Stub/StubIntlDateFormatterTest.php
2013-11-23 22:11:41 +01:00
Hugo Hamon
7730d8d393 [DependencyInjection] removed the unused Reference and Parameter classes use statements from the compiled container class 2013-11-20 19:23:10 +01:00
Peter Rehm
9010e4657a Fixed bug with lazy services 2013-11-09 16:43:20 +01:00
Fabien Potencier
8f0faee45e Merge branch '2.2' into 2.3
* 2.2:
  slovenian translations fixed
  [DependencyInjection] fixed YamlDumper did not make services private.
  [FrameworkBundle] fix routing container parameter exception message
  update CONTRIBUTORS
  added content length header to BinaryFileResponse
  [Routing] added working test case for issue #5135
2013-11-04 07:09:51 +01:00
Rouven Weßling
e8c2082c04 [DependencyInjection] fixed YamlDumper did not make services private. 2013-11-03 00:57:38 +01:00
Fabien Potencier
61dd06ea27 fixed CS 2013-10-30 09:30:20 +01:00
Jakub Zalas
bb0125b2f9 [DependencyInjection] Prevented inlining of lazy loaded private service definitions. 2013-09-26 23:39:53 +01:00
Fabien Potencier
88cef41560 Merge branch '2.2' into 2.3
* 2.2:
  Fix some annotates
  [FrameworkBundle] made sure that the debug event dispatcher is used everywhere
  [HttpKernel] remove unneeded strtoupper
  updated the composer install command to reflect changes in Composer

Conflicts:
	src/Symfony/Component/Console/Application.php
	src/Symfony/Component/Console/Command/Command.php
	src/Symfony/Component/Console/Input/InputDefinition.php
	src/Symfony/Component/CssSelector/Node/CombinedSelectorNode.php
	src/Symfony/Component/Form/Form.php
	src/Symfony/Component/HttpKernel/Debug/ErrorHandler.php
	src/Symfony/Component/HttpKernel/DependencyInjection/RegisterListenersPass.php
	src/Symfony/Component/HttpKernel/Tests/DependencyInjection/RegisterListenersPassTest.php
	src/Symfony/Component/Locale/Locale.php
	src/Symfony/Component/Locale/README.md
	src/Symfony/Component/Locale/Stub/DateFormat/FullTransformer.php
2013-09-19 11:45:20 +02:00
bronze1man
de39bd5433 Fix some annotates 2013-09-19 11:36:05 +02:00
Fabien Potencier
c2144df888 updated the composer install command to reflect changes in Composer 2013-09-18 09:27:26 +02:00
Fabien Potencier
d1825030b4 Merge branch '2.2' into 2.3
* 2.2:
  fixes RequestDataCollector bug, visible when used on Drupal8
  [Console] fixed exception rendering when nested styles
  [Console] added some more information about OutputFormatter::replaceStyle()
  [Console] fixed the formatter for single-char tags
  [Console] Escape exception message during the rendering of an exception
  [BrowserKit] Fixed the handling of parameters when redirecting
  Typo fix
  HttpFoundation RequestTest - Fixed indentation and removed comments
  HttpFoundation Request test for #8619
  LICENSE files moved to meta folders
  added missing method in the UPGRADE file for 2.2 (closes #8941)
  [Translation] Removed an unneeded return annotation.
  [DomCrawler] Added missing docblocks and removed unneeded return annotation.

Conflicts:
	src/Symfony/Component/BrowserKit/Client.php
	src/Symfony/Component/DomCrawler/Crawler.php
2013-09-18 09:03:56 +02:00
Cas
568113f64a Typo fix
Small typo/grammar fix in class' comment
2013-09-16 10:02:49 +02:00
Fabien Potencier
0f78175dcd Merge branch '2.2' into 2.3
* 2.2:
  [HttpKernel] added a check for private event listeners/subscribers
  [FrameworkBundle] fixed registration of the register listener pass
  [Form] Fixed regression causing invalid "WHERE id IN ()" statements
  [DependencyInjection] fixed a non-detected circular reference in PhpDumper (closes #8425)
  [Form] Fixed regression in BooleanToStringTransformer from ed83752
  [FrameworkBundle] removed obsolete code
  [Process] Close unix pipes before calling `proc_close` to avoid a deadlock

Conflicts:
	src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php
	src/Symfony/Component/HttpKernel/DependencyInjection/RegisterListenersPass.php
	src/Symfony/Component/Process/Process.php
2013-09-12 14:57:47 +02:00
Fabien Potencier
ce7de37f16 [DependencyInjection] fixed a non-detected circular reference in PhpDumper (closes #8425)
This circular reference cannot be detected by the compiler pass as we
don't check for method arguments there.

The Container itself already detects such circular references at runtime.

So this fix is about circular references that are not detected at
compile time, and are not even detected at runtime because the code that
would cause the detection is never run (generated after a return
statement.)
2013-09-12 09:51:05 +02:00
Nathaniel Catchpole
e4b303973f Use isset() instead of array_key_exists() in DIC 2013-09-03 12:21:15 +02:00
Fabien Potencier
e8e5a3a2e5 Merge branch '2.2' into 2.3
* 2.2:
  [Security] fixed some phpdoc
  Fixed PHPDoc Blocks
  optimized circular reference checker
  [HttpKernel] changed fragment URLs to be relative by default (closes #8458)
2013-08-30 15:10:46 +02:00
Tóth Gábor
96bb731b28 optimized circular reference checker 2013-08-30 13:28:31 +02:00
Fabien Potencier
364ccd1cb3 merged branch bronze1man/PR-setLazy-parent-2.3 (PR #8573)
This PR was merged into the 2.3 branch.

Discussion
----------

[DependencyInjection] setLazy not work on DefinitionDecorator

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

Commits
-------

970ce2c [DependencyInjection] fixed #8570
2013-07-25 19:13:25 +02:00
Fabien Potencier
7dc211a263 merged branch fabpot/null-services (PR #8582)
This PR was merged into the 2.3 branch.

Discussion
----------

[DependencyInjection] fixed regression where setting a service to null did not trigger a re-creation of the service when getting it (closes #8392)

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

Commits
-------

50d0727 [DependencyInjection] fixed regression where setting a service to null did not trigger a re-creation of the service when getting it
2013-07-25 19:04:05 +02:00
Fabien Potencier
50d0727477 [DependencyInjection] fixed regression where setting a service to null did not trigger a re-creation of the service when getting it 2013-07-25 17:41:27 +02:00
bronze1man
970ce2c413 [DependencyInjection] fixed #8570 2013-07-25 13:55:15 +08:00
Fabien Potencier
b45f18b81d Merge branch '2.2' into 2.3
* 2.2:
  [Validator] fixed ConstraintViolation:: incorrect when nested
  handle Optional and Required constraints from XML or YAML sources correctly
  added missing comments to WebTestCase
  Fixed #8455: PhpExecutableFinder::find() does not always return the correct binary
  [DependencyInjection] Fix Container::camelize to convert beginning and ending chars
  [Validator] Fixed groups argument misplace for validateValue method from validator class

Conflicts:
	src/Symfony/Component/Validator/Tests/Constraints/CollectionTest.php
	src/Symfony/Component/Validator/Tests/GraphWalkerTest.php
2013-07-21 22:18:49 +02:00
Martin Hasoň
4146587ce7 Added missing files .gitignore 2013-07-21 14:12:18 +02:00
Jérôme Tamarelle
485d53aead [DependencyInjection] Fix Container::camelize to convert beginning and ending chars
To convert a service ID exactly like Container::get
2013-07-21 11:38:59 +02:00
Jérôme Tamarelle
9ac3556825 [DependencyInjection] Add exception for service name not dumpable in PHP 2013-07-19 09:14:04 +02:00
Jérôme Tamarelle
242b3184b9 [DependencyInjection] Add exception for service name not dumpable in PHP 2013-07-16 14:47:20 +02:00
WouterJ
8bb4e4d332 [DI] Fixed bug requesting non existing service from dumped frozen container 2013-07-07 17:47:47 +02:00
Fabien Potencier
4c0bfd3313 fixed CS 2013-07-01 14:24:43 +02:00
Jakub Zalas
494e8035ad [DependencyInjection] Replaced try/catch block with an @expectedException annotation in a test. 2013-06-17 14:32:29 +01:00
Lukas Kahwe Smith
aa79393054 also consider alias in Container::has() 2013-06-12 12:05:56 +02:00
Jordi Boggiano
81b122dd7b [DependencyInjection] Add support for aliases of aliases + regression test 2013-06-05 11:51:05 +02:00
Jordi Boggiano
d8c0ef705c [DependencyInjection] Rename ContainerBuilder::$aliases to avoid conflicting with the parent class 2013-06-04 15:12:01 +02:00
Jordi Boggiano
bb797ee755 [DependencyInjection] Remove get*Alias*Service methods from compiled containers 2013-06-04 14:33:18 +02:00
Jordi Boggiano
379f5e08b4 [DependencyInjection] Fix aliased access of shared services, fixes #8096 2013-06-04 14:33:14 +02:00
Fabien Potencier
b1c9fd20a1 removed versions in composer.json files 2013-05-13 16:36:40 +02:00
Fabien Potencier
f41ac06531 changed all version deps to accepts all upcoming Symfony versions 2013-05-13 09:33:35 +02:00
Fabien Potencier
f1c227be22 Merge branch '2.2'
* 2.2:
  added additional tests to cover invalid argument exceptions in OutputFormatterStyle component
  added a missing check for the provider key
  [Validator] fixed wrong URL for XSD
  [Validator] Fixed: $traverse and $deep is passed to the visitor from Validator::validate()
  [Form] Fixed transform()/reverseTransform() to always throw TransformationFailedExceptions
  [Form] Fixed: String validation groups are never interpreted as callbacks
  if the repository method returns an array ensure that it's internal poin...
  [Form] Improved multi-byte handling of NumberToLocalizedStringTransformer
  Fix wrong method in findTaggedServiceIds(), add example to docblock.

Conflicts:
	src/Symfony/Component/Form/Extension/Core/DataTransformer/ChoicesToBooleanArrayTransformer.php
	src/Symfony/Component/Form/Extension/Validator/Constraints/FormValidator.php
2013-05-06 10:44:35 +02:00
Fabien Potencier
b9bc5b4770 Merge branch '2.1' into 2.2
* 2.1:
  added additional tests to cover invalid argument exceptions in OutputFormatterStyle component
  added a missing check for the provider key
  [Validator] fixed wrong URL for XSD
  [Form] Fixed transform()/reverseTransform() to always throw TransformationFailedExceptions
  [Form] Fixed: String validation groups are never interpreted as callbacks
  if the repository method returns an array ensure that it's internal poin...
  Fix wrong method in findTaggedServiceIds(), add example to docblock.

Conflicts:
	src/Symfony/Bridge/Doctrine/Form/DataTransformer/CollectionToArrayTransformer.php
	src/Symfony/Component/Form/Extension/Core/DataTransformer/DataTransformerChain.php
	src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/ArrayToPartsTransformerTest.php
	src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/ChoiceToValueTransformerTest.php
	src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/ChoicesToValuesTransformerTest.php
	src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/DateTimeToArrayTransformerTest.php
	src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/DateTimeToRfc3339TransformerTest.php
	src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/IntegerToLocalizedStringTransformerTest.php
	src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/ValueToDuplicatesTransformerTest.php
2013-05-06 10:37:50 +02:00
Fabien Potencier
59867f921e merged branch fabpot/yaml-optim (PR #7935)
This PR was merged into the master branch.

Discussion
----------

made some optimization when parsing YAML files

| 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

This change makes a small speed optimization when loading a YAML file, but more important, it allows to use local stream wrappers instead of regular files on the filesystem.

Commits
-------

0586c7e made some optimization when parsing YAML files
2013-05-06 10:32:05 +02:00
Fabien Potencier
31a35aa8a6 tweaked previous merge 2013-05-06 10:30:13 +02:00
Fabien Potencier
dfd605fc1b 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
2013-05-06 08:38:39 +02:00
Marco Pivetta
78e3710de8 ProxyManager Bridge 2013-05-06 08:38:39 +02:00
Fabien Potencier
0586c7eb16 made some optimization when parsing YAML files 2013-05-05 19:11:25 +02:00
Jordi Boggiano
f1c2ab78af [DependencyInjection] Add a method map to avoid computing method names from service names 2013-05-05 12:11:01 +02:00
Benjamin Eberlei
cfebe47000 Fix wrong method in findTaggedServiceIds(), add example to docblock. 2013-05-03 07:08:13 +02:00
Fabien Potencier
2dc012ed01 [DependencyInjection] fixed ? position in some exception messages (refs #7861) 2013-05-01 06:24:56 +02:00
Grégoire Pineau
e989d8bd0b [DependencyInjection] Added some check before guessing similar parameters 2013-04-30 20:00:41 +02:00
Grégoire Pineau
9300157a61 [DependencyInjection] Made tests more accurate 2013-04-30 19:56:47 +02:00