Commit Graph

3642 Commits

Author SHA1 Message Date
Johannes Schmitt
d37ff152c0 removed unused code 2011-07-16 16:14:43 +02:00
Johannes Schmitt
2d3051f9cc tabs -> spaces 2011-07-16 16:13:26 +02:00
Johannes Schmitt
2c224ce42b improves the exception message, and removes unnecessary constraint to only allow strings inside strings 2011-07-16 16:10:11 +02:00
Johannes Schmitt
d0b056cce9 fixes a bug where getParameterBag() always returns null 2011-07-16 15:52:02 +02:00
Fabien Potencier
e718a51b59 [DependencyInjection] fixed un-detected circular references involving aliases 2011-07-11 18:25:40 +02:00
Fabien Potencier
be31bc091e [DependencyInjection] made a small performance optimization 2011-07-11 17:55:12 +02:00
Arnaud Le Blanc
e6a2d76366 delay resolving values of extensions config until all files are loaded 2011-07-09 18:03:05 +02:00
Fabien Potencier
5f6c5f02d3 removed obsolete code 2011-07-06 16:11:01 +02:00
Fabien Potencier
001af2ae4a [DependencyInjection] enhanced error message 2011-07-06 15:26:21 +02:00
Fabien Potencier
bb3f5c5575 [DependencyInjection] fixed CS for previous merge 2011-07-06 15:26:08 +02:00
Lars Strojny
133169f668 Better exception message for extension in XmlFileLoader 2011-07-06 00:08:33 +02:00
Fabien Potencier
9fbffcc650 removed usage of preg_match with the 'e' modifier 2011-07-05 19:49:27 +02:00
Victor Berchet
2af2260c34 Remove useless code 2011-07-04 14:08:20 +02:00
Fabien Potencier
c3bb214e94 [DependencyInjection] removed injection for protected and private properties 2011-06-27 08:28:54 +02:00
stloyd
0d3fb6f26c Missing quote in IniFileLoader exception 2011-06-24 16:28:15 +02:00
Victor Berchet
d89298de7c [DependencyInjection] Fix a typo 2011-06-16 10:37:09 +02:00
Fabien Potencier
3859589daa [Yaml] renamed load() to parse() 2011-06-14 16:25:25 +02:00
Fabien Potencier
1aabc5da64 fixed CS 2011-06-08 12:16:48 +02:00
Fabien Potencier
62e4342a86 fixed CS 2011-06-08 12:12:55 +02:00
Pascal Borreli
404c452c0b [Various] Phpdoc & typos 2011-06-04 15:30:56 +00:00
Fabien Potencier
65200aa86a added missing license headers 2011-05-31 10:57:06 +02:00
Fabien Potencier
988355993a refactored Profiler class 2011-05-30 22:25:25 +02:00
Pascal Borreli
824e48efa7 [Various] Fixed phpdoc 2011-05-29 23:33:36 +00:00
Pascal Borreli
46cdf02750 [Various] Fixed typo 2011-05-29 14:19:02 +00:00
Arnout Boks
a0397f99f5 [DependencyInjection] Fixed bug where anonymous services from two different xml-files (with the same basename) could collide 2011-05-28 10:29:32 +02:00
Fabien Potencier
3bdb7c2b57 [DependencyInjection] fixed regression when a parameter contains an escaped %
Notice that this is still not perfect, but I don't see how to fix the remaining
potential problems.
2011-05-26 12:47:50 +02:00
Fabien Potencier
ce79fa9ba2 [DependencyInjection] fixed typo 2011-05-26 08:22:16 +02:00
Fabien Potencier
462f222319 [DependencyInjection] changed \LogicException to RuntimeException to be more consistent 2011-05-25 09:59:38 +02:00
Fabien Potencier
2438a73c7b [DependencyInjection] added a check for circular references in parameter definitions 2011-05-25 09:57:38 +02:00
Fabien Potencier
456eb53eb8 [DependencyInjection] renamed CircularReferenceException to ServiceCircularReferenceException 2011-05-25 09:48:49 +02:00
Fabien Potencier
6c409cac84 [DependencyInjection] refactored parameter bag parameter replacements (removed duplicated code) 2011-05-25 09:35:51 +02:00
everzet
b6ce137e2d [DependencyInjection] create inlined private service from it's definition 2011-05-23 23:00:38 +03:00
Fabien Potencier
0e65bc746e [DependencyInjection] renamed Exception interface to ExceptionInterface to follow CS 2011-05-17 16:57:31 +02:00
Fabien Potencier
0168241014 [DependencyInjection] renamed NonExistentParameterException and NonExistentServiceException to ParameterNotFoundException and ServiceNotFoundException 2011-05-17 16:26:08 +02:00
Fabien Potencier
09cccf60c7 Merge remote branch 'stof/ParameterBagInterface'
* stof/ParameterBagInterface:
  [DependencyInjection] Removed the public keyword from interface
  [DependencyInjection] Added missing methods in the ParameterBagInterface
  [DependencyInjection] Fixed phpdoc
2011-05-17 10:29:19 +02:00
Fabien Potencier
e46e53daa0 Merge remote branch 'stof/graphviz'
* stof/graphviz:
  [DependencyInjection] Fixed a property visibility in GraphvizDumper and removed a useless instanciation in the test
2011-05-14 17:23:50 +02:00
Fabien Potencier
0b367b9489 [DependencyInjection] tweaked error messages 2011-05-13 12:52:44 +02:00
Christophe Coevoet
c2f074b7d5 [DependencyInjection] Fixed a property visibility in GraphvizDumper and removed a useless instanciation in the test 2011-05-13 12:18:09 +02:00
Martin Schuhfuss
9112d8c2d3 removed obsolete use-statement 2011-05-10 16:34:44 +02:00
Martin Schuhfuss
5387532ff2 [DependencyInjection] added phpdoc for property $container in ContainerAware
This should ease code-completion a little bit...
2011-05-10 16:30:58 +02:00
Christophe Coevoet
a54d6b7e58 [DependencyInjection] Removed the public keyword from interface 2011-05-10 13:55:08 +02:00
Christophe Coevoet
1bb6b97c1c [DependencyInjection] Added missing methods in the ParameterBagInterface
The Container relies on the resolve() value which was not part of
the interface.
2011-05-10 02:34:02 +02:00
Christophe Coevoet
b6c36de134 [DependencyInjection] Fixed phpdoc 2011-05-10 02:33:34 +02:00
Johannes Schmitt
2c287676fb [DependencyInjection] fixes a bug when requesting a definition that uses property injection 2011-05-03 23:46:02 +02:00
Fabien Potencier
0b165e13b2 [DependencyInjection] added public attribute when dumping a container to XML 2011-05-01 17:21:19 +02:00
Fabien Potencier
6fec656239 [DependencyInjection] forced anonymous services to always be private 2011-05-01 17:21:18 +02:00
Fabien Potencier
8b0450083a [DependencyInjection] removed unused vars 2011-05-01 17:21:17 +02:00
Pascal Borreli
391744719a Various typos 2011-04-30 19:40:15 +00:00
Fabien Potencier
2e9278993c added Definition::getArgument() (very useful when unit testing a Container) 2011-04-28 11:26:10 +02:00
Eriksen Costa
164ce5210d capitalized 'boolean' 2011-04-27 02:35:10 -03:00
Fabien Potencier
175f944f93 [DependencyInjection] added NonExistentParameterException that indicates where a non-existent parameter is being used 2011-04-26 12:36:25 +02:00
Pascal Borreli
8c0beea677 [Phpdoc] Cleaning/fixing 2011-04-23 15:18:47 +00:00
Lukas Kahwe Smith
d9491a743e removed support for interface injection as well as all relevant tests 2011-04-23 11:42:31 +02:00
Pascal Borreli
b5769c52d6 Fixed various typo 2011-04-22 23:12:50 +00:00
Fabien Potencier
8b2b8e16dc Merge remote branch 'schmittjoh/referenceValidation'
* schmittjoh/referenceValidation:
  [DependencyInjection] also check references of inlined services
  [DependencyInjection] adds emulation of "exception-on-invalid-reference" behavior
2011-04-21 22:44:20 +02:00
Bertrand Zuchuat
7ed8ea25d8 [Container] Added function array_unique on getServiceIds to return only one service name 2011-04-20 23:45:36 +02:00
Kris Wallsmith
470baaab9f [DependencyInjection] renamed ContainerBuilder::remove() as removeDefinition() to be more consistent with other definition-related methods 2011-04-20 04:48:19 -07:00
Kris Wallsmith
cdf706d357 [DependencyInjection] renamed Definition::setArgument() as replaceArgument() to be more specific 2011-04-20 04:47:44 -07:00
Brikou CARRE
e898445b94 removed empty lines/trailing spaces 2011-04-15 21:12:02 +02:00
Fabien Potencier
de390fd893 [DependencyInjection] removed timing info as it is useless 2011-04-15 10:42:56 +02:00
Fabien Potencier
0b563c32ac Merge remote branch 'schmittjoh/diLogging'
* schmittjoh/diLogging:
  [DependencyInjection] enable debug related passes only in debug environment
  [DependencyInjection] removed pass time
  [DependencyInjection] fixes a bug which might have occurred when using property injection under certain circumstances
  [DependencyInjection] fixed method name
  [FrameworkBundle] whitespace fix
  [DependencyInjection] refactored code a bit, added some more logging messages
  [DependencyInjection] dump a readable format
  [DependencyInjection] better logging
2011-04-15 10:38:54 +02:00
Johannes Schmitt
fd5caa9546 [DependencyInjection] also check references of inlined services 2011-04-15 08:47:28 +02:00
Johannes Schmitt
ff41541d45 [DependencyInjection] removed pass time 2011-04-15 08:19:28 +02:00
Johannes Schmitt
6d7a9d752d [DependencyInjection] adds emulation of "exception-on-invalid-reference" behavior
This pass requires that all of references are valid at the end of
the compilation process.
2011-04-15 00:55:18 +02:00
Johannes M. Schmitt
1992c3b96d [DependencyInjection] fixes a bug which might have occurred when using property injection under certain circumstances 2011-04-14 21:29:46 +02:00
Johannes M. Schmitt
75ac0f5dc3 [DependencyInjection] fixed method name 2011-04-14 21:07:16 +02:00
Johannes M. Schmitt
6ea9fb16c7 [DependencyInjection] refactored code a bit, added some more logging messages 2011-04-14 21:01:37 +02:00
Fabien Potencier
fa6961bb91 Revert "Merge remote branch 'lsmith77/prevent_redundant_DI_method_calls'"
This reverts commit 0d61ae06b4, reversing
changes made to 8e3d125902.
2011-04-13 14:30:06 +02:00
Lukas Kahwe Smith
c9be18a79f do not add method calls from interface injection if a method call has already been set manually 2011-04-13 14:11:56 +02:00
Johannes Schmitt
2397bcbe94 [DependencyInjection] better logging 2011-04-13 00:51:32 +02:00
Lukas Kahwe Smith
a4b04c4add use synthetic services instead of special exceptions 2011-04-12 10:07:46 +02:00
Ryan Weaver
b9883a3bad [Config] Improving the exception when a resource cannot be imported
This improves, for example, the exception one would receive if they tried to import a resource from a bundle that doesn't exist.
Previously, the deep "bundle is not activated" exception would be thrown. That has value, however there is no indication of where
the exception is actually occurring.

In this new implementation, we throw an exception that explains exactly which resource, and from which source resource, cannot be
loaded. The deeper exception is still thrown as a nested exception.

Two caveats:

  * The `HttpKernel::varToString` method was replicated
  * This introduces a new `Exception` class, which allows us to prevent lot's of exceptions from nesting into each other in the case
    that some deeply imported resource cannot be imported (each upstream import that fails doesn't add its own exception).
2011-04-01 18:59:54 -05:00
Ryan Weaver
65ac5ec7c0 [DependencyInjection] Fixing a bug where "ignore_errors" doesn't work in YAML and XML
Tests added, the arguments were simply mismatched.
2011-04-01 18:59:45 -05:00
Fabien Potencier
e4a3e0c2c7 [Config] moved from protected to private (WIP) 2011-03-23 19:34:00 +01:00
Fabien Potencier
68011c0dd6 [DependenInjection] fixed CS 2011-03-22 19:47:46 +01:00
Jan Prieser
67aaf5ce91 Fixed PhpDumper isSimpleService and changed test fixtures 2011-03-22 17:01:03 +01:00
Miha Vrhovnik
25e4193294 removed unused variable 2011-03-21 11:34:06 +01:00
Miha Vrhovnik
496280329b changing phpdoc parameter to array as all variables are used in foreach 2011-03-21 11:28:38 +01:00
Jan Prieser
60c1159b2e [DependecyInjection] fixed typo. Using InterfaceInjectors broke methodCalls. 2011-03-17 15:03:16 +01:00
Fabien Potencier
e6ebf4da4c fixed small bug in sub-request profiling 2011-03-16 19:33:55 +01:00
Fabien Potencier
ad3b7e912d merged noelg/profiler 2011-03-16 16:44:44 +01:00
Fabien Potencier
ae7a2df104 fixed CS 2011-03-16 14:45:34 +01:00
Fabien Potencier
ac49289451 Merge remote branch 'rrehbeindoi/master' 2011-03-16 14:44:44 +01:00
max
e2542962df reinitialize array so arguments dont stack up 2011-03-15 12:08:13 -07:00
Ray
c2908cdaa0 Allow collection's internal keys to be mixed case 2011-03-15 09:35:40 -05:00
Johannes M. Schmitt
98216a9af2 [DependencyInjection] refactored some more exceptions 2011-03-14 21:14:49 +01:00
Johannes M. Schmitt
a1fb717074 [DependencyInjection] loader fix 2011-03-14 17:45:27 +01:00
Johannes M. Schmitt
e624e27675 [DependencyInjection] refactored some exceptions 2011-03-13 20:35:15 +01:00
Fabien Potencier
a1fcbf4d5f Merge remote branch 'kriswallsmith/dic/false-circular-ref-fix'
* kriswallsmith/dic/false-circular-ref-fix:
  [DependencyInjection] fixed false positive when detecting circular references if a service throws an exception during creation
2011-03-11 19:58:54 +01:00
Fabien Potencier
cedf588e98 Revert "Merge remote branch 'kriswallsmith/dic/lazy-replace-ext-params'"
This reverts commit 32ac2e8709, reversing
changes made to 6e81c28ca4.
2011-03-11 15:35:09 +01:00
Fabien Potencier
f321fadad6 [DependencyInjection] moved most protected things to private 2011-03-11 14:50:46 +01:00
Fabien Potencier
9dadcff13e [DependencyInjection] removed obsolete code 2011-03-11 14:36:44 +01:00
Fabien Potencier
a8d05746ff Merge remote branch 'schmittjoh/propertyAnnotations'
* schmittjoh/propertyAnnotations:
  [DependencyInjection] added some tests
  [DependencyInjection] adds property injection
2011-03-11 13:12:12 +01:00
Fabien Potencier
32ac2e8709 Merge remote branch 'kriswallsmith/dic/lazy-replace-ext-params'
* kriswallsmith/dic/lazy-replace-ext-params:
  [DependencyInjection] added test for lazy param replacement
  Removed replacement of parameter placeholders at load time since they're now replaced at compile time. Extensions should be written to expect parameter placeholders.
2011-03-11 10:41:22 +01:00
Amal Raghav
517735e581 fix for ignoring abstract definition 2011-03-11 10:36:48 +01:00
Kris Wallsmith
f33cf0ba5d Removed replacement of parameter placeholders at load time since they're now replaced at compile time. Extensions should be written to expect parameter placeholders.
Revert "[DependencyInjection] Allow parameter replacement within extension configurations."

This reverts commit ab7ad4808b.

Conflicts:

	src/Symfony/Component/DependencyInjection/ContainerBuilder.php
2011-03-10 12:59:00 -08:00
Johannes M. Schmitt
d9848f38ac [DependencyInjection] added some tests 2011-03-10 15:31:00 +01:00
Kris Wallsmith
8c45a21637 [DependencyInjection] fixed false positive when detecting circular references if a service throws an exception during creation 2011-03-09 06:38:02 -08:00
Kris Wallsmith
de6c353b40 [DependencyInjection] made compiler lazy again since there are many temporary ContainerBuilder objects that don't use it 2011-03-08 05:34:07 -08:00
Fabien Potencier
8c423edfef replaced symfony-project.org by symfony.com 2011-03-06 12:40:06 +01:00
Johannes Schmitt
eb2eb2e47a [DependencyInjection] adds property injection 2011-03-05 13:03:28 +01:00
Kris Wallsmith
bf0553c23a [DependencyInjection] extensions should only load if called during configuration 2011-03-03 13:53:29 +01:00
ornicar
6790e45911 [DependencyInjection] Fix variable name in ExtensionInterface 2011-03-01 16:20:26 -08:00
Fabien Potencier
fd53035c8d Merge remote branch 'schmittjoh/inlinePassFix'
* schmittjoh/inlinePassFix:
  [DependencyInjection/Compiler] fixes a bug which silently changed the scope of services
2011-03-01 20:38:48 +01:00
Pascal Borreli
b84999ac33 [DependencyInjection] Fixed Typo 2011-03-01 18:58:08 +01:00
Johannes M. Schmitt
67c886f3df [DependencyInjection/Compiler] fixes a bug which silently changed the scope of services 2011-03-01 13:47:34 +01:00
Fabien Potencier
cdf6851eb3 fixed merge 2011-02-27 21:16:13 +01:00
Christophe Coevoet
92bfbf575c Fixed CS 2011-02-27 20:56:29 +01:00
Pascal Borreli
66f4d8bf6d [DependencyInjection] Removed useless else 2011-02-27 18:36:37 +01:00
Pascal Borreli
1a8ce933e1 [DependencyInjection] Fixed typo 2011-02-26 20:02:05 +01:00
noel guilbert
a8eff2b154 Improved profiler to store and retrieve sub requests data 2011-02-26 17:24:02 +01:00
Fabien Potencier
f54cedfe5e added LICENSE files for the subtree repositories 2011-02-22 18:58:15 +01:00
Fabien Potencier
6b12c21261 moved DependencyInjection\Configuration to Config\Definition 2011-02-17 16:03:48 +01:00
Ryan Weaver
c5e4dfb5a6 [DependencyInjection] Adding to InvalidArgumentException messages to clarify when a service is given an invalid "tags" value. 2011-02-17 15:59:39 +01:00
Christophe Coevoet
ee8ad0c4e9 Fixed previous commit to handle the case of arrays 2011-02-16 23:07:11 +01:00
Christophe Coevoet
27e2ec139d Added the possibility to add the value in the exception message 2011-02-16 23:07:11 +01:00
Christophe Coevoet
6b4538a1c4 Added the test ifNotInArray 2011-02-16 23:07:11 +01:00
Christophe Coevoet
ef045a9433 Added missing license header in the DependenciInjection\Configuration classes 2011-02-16 23:07:11 +01:00
Christophe Coevoet
077d1921b3 Added the support of the validation in the Builder 2011-02-16 23:07:10 +01:00
Christophe Coevoet
a5bac4b5a3 Fixed xmlloader 2011-02-15 22:41:29 +01:00
Fabien Potencier
a29a413c48 made DIC extensions members of the Container instead of static members 2011-02-15 22:22:32 +01:00
Fabien Potencier
62e3053769 refactored previous commit, fixed tests
How to upgrade?

For XML configuration files:

 * All extensions should now use the config tag (this is just a convention as
   the YAML configurations files do not use it anymore):

 * The previous change means that the doctrine and security bundles now are
   wrapped under a main "config" tag:

        <doctrine:config>
            <doctrine:orm />
            <doctrine:dbal />
        </doctrine:config>

        <security:config>
            <security:acl />
            ...
        </security:config>

For YAML configuration files:

 * The main keys have been renamed as follows:

        * assetic:config -> assetic
        * app:config -> framework
        * webprofiler:config -> web_profiler
        * doctrine_odm.mongodb -> doctrine_mongo_db
        * doctrine:orm -> doctrine: { orm: ... }
        * doctrine:dbal -> doctrine: { dbal: ... }
        * security:config -> security
        * security:acl -> security: { acl: ... }
        * twig.config -> twig
        * zend.config -> zend
2011-02-15 22:22:28 +01:00
Lukas Kahwe Smith
7f182bd877 implicitly load all registered bundles, all loading is now handled by load(), disable loading of an extension explcitly via setting the extension config to false (for now only Yaml is implemented) 2011-02-15 22:11:08 +01:00
Fabien Potencier
391e00c1de [DependencyInjection] fixed a bug when xpath() returns false 2011-02-15 22:06:52 +01:00
Fabien Potencier
81765f8b6a [DependencyInjection] fixed XML loader 2011-02-15 10:09:58 +01:00
Fabien Potencier
4972bf6350 [DependencyInjection] made getXsdValidationBasePath() and getNamespace() methods from DIC Extension class optional
This has been changed so that people that do not use XML for their own extensions do
not need to bother implementing these two methods.
2011-02-15 04:14:48 +01:00
Tim Nagel
7173764dc1 [Dependency Injection] PHPDoc 2011-02-14 11:16:04 +01:00
Fabien Potencier
5c905beb13 moved common configuration classes to a new Config component 2011-02-13 22:31:50 +01:00
Johannes M. Schmitt
d4d2d60f7b [DependencyInjection] minor interface change 2011-02-13 10:38:10 +01:00
Johannes Schmitt
a5cfc2207c [Security/DependencyInjection] updated SecurityBundle's configuration, some bug fixes in DIC config classes 2011-02-12 22:05:54 +01:00
Jordi Boggiano
98e035b963 [DepdenencyInjection] Prevent self-referencing aliases 2011-02-12 21:58:00 +01:00
Christophe Coevoet
ccd630981f Moved the exception to setDefaultValue 2011-02-12 21:56:21 +01:00
Christophe Coevoet
142212e2ba Added a way to define the default value of a prototype for array nodes 2011-02-12 21:56:21 +01:00
Fabien Potencier
b588caf467 [DependencyInjection] made a small change to mimic a similar change in Routing 2011-02-11 00:13:02 +01:00
Fabien Potencier
b91f082be5 Revert "moved Resource to the Config component"
This reverts commit f53080860a.

Revert "[Router] config fixes"

This reverts commit 51beecc6f2.

Revert "moved duplicated files to a new Config component"

This reverts commit a8ec9b27f0.
2011-02-10 16:14:12 +01:00
Fabien Potencier
f53080860a moved Resource to the Config component 2011-02-10 16:07:42 +01:00
Christophe Coevoet
1305728502 Fixed ExprBuilder to really use the parameter when replacing a key with an attribute 2011-02-10 15:33:14 +01:00
Christophe Coevoet
fa32adb9a3 Added phpdoc for the configuration builder 2011-02-10 15:33:14 +01:00
Fabien Potencier
a8ec9b27f0 moved duplicated files to a new Config component 2011-02-10 03:43:36 +01:00
Fabien Potencier
e58a84eb09 added a FileLocator to DIC so that we can load resources like @BundleName/Resources/... 2011-02-10 00:44:02 +01:00
Johannes M. Schmitt
2b256a0804 [DependencyInjection] allow null for scalar nodes 2011-02-06 20:50:03 +01:00
Johannes M. Schmitt
c7ef8d98d6 [DependencyInjection] append new elements for prototype nodes without a key attribute 2011-02-06 20:11:08 +01:00
Johannes Schmitt
0b8fef2347 [Security/DependencyInjection] adds support for merging security configurations
The merging is done in three steps:

    1. Normalization:
    =================
    All passed config arrays will be transformed into the same structure
    regardless of what format they come from.

    2. Merging:
    ===========
    This is the step when the actual merging is performed. Starting at the root
    the configs will be passed along the tree until a node has no children, or
    the merging of sub-paths of the current node has been specifically disabled.

       Left-Side       Right-Side      Merge Result
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       -nothing-       array           Right-Side will be taken.
       scalar          scalar          Right-Side will be taken.
       array           false           Right-Side will be taken if ->canBeUnset()
                                       was called on the array node.
       false           array           Right-Side will be taken.
       array           array           Each value in the array will be passed to
                                       the specific child node, or the prototype
                                       node (whatever is present).

    3. Finalization:
    ================
    The normalized, and merged config will be passed through the config tree to
    perform final validation on the submitted values, and set default values
    where this has been requested.

You can influence this process in various ways, here is a list with some examples.
All of these methods must be called on the node on which they should be applied.

  * isRequired(): Node must be present in at least one config file.
  * requiresAtLeastOneElement(): PrototypeNode must have at least one element.
  * treatNullLike($value): Replaces null with $value during normalization.
  * treatTrueLike($value): Same as above just for true
  * treatFalseLike($value): Same as above just for false
  * defaultValue($value): Sets a default value for this node (only for scalars)
  * addDefaultsIfNotSet(): Whether to add default values of an array which has not
                           been defined in any configuration file.
  * disallowNewKeysInSubsequentConfigs(): All keys for this array must be defined
                                          in one configuration file, subsequent
                                          configurations may only overwrite these.
  * fixXmlConfig($key, $plural = null): Transforms XML config into same structure
                                        as YAML, and PHP configurations.
  * useAttributeAsKey($name): Defines which XML attribute to use as array key.
  * cannotBeOverwritten(): Declares a certain sub-path as non-overwritable. All
                           configuration for this path must be defined in the same
                           configuration file.
  * cannotBeEmpty(): If value is set, it must be non-empty.
  * canBeUnset(): If array values should be unset if false is specified.

Architecture:
=============
The configuration consists basically out of two different sets of classes.

  1. Builder classes: These classes provide the fluent interface and
                      are used to construct the config tree.

  2. Node classes: These classes contain the actual logic for normalization,
                   merging, and finalizing configurations.

After you have added all the metadata to your builders, the call to
->buildTree() will convert this metadata to actual node classes. Most of the
time, you will not have to interact with the config nodes directly, but will
delegate this to the Processor class which will call the respective methods
on the config node classes.
2011-02-06 20:11:08 +01:00
Jeremy Mikola
743f25a287 [DependencyInjection] Create explicit factoryClass property for Definitions
Previously, the Definition class was used both for type inference and factory construction (if factoryService was absent). This is fine for cases where classes create instances of themselves (e.g. getInstance() or create()), but leads to ambiguity when we have a separate factory class.
2011-02-05 20:39:42 +01:00
Fabien Potencier
37537e3e8c fixed previous commit 2011-02-04 19:38:42 +01:00
Lukas Kahwe Smith
dd71501f54 some fixes by just "blindly" trying to make phpStorm code analysis happier 2011-02-04 19:30:28 +01:00
Fabien Potencier
b6f400a2bc [DependencyInjection] made an optimization on dumped DIC
When dumping a Container, and if it is frozen, we use a plain
PHP array for parameters instead of a ParameterBag.
2011-02-04 00:17:51 +01:00
Johannes Schmitt
b484763a7a [DependencyInjection] added first version of the config normalizer
This is mainly intended for complex configurations to ease the work you
have with normalizing different configuration formats (YAML, XML, and PHP).

First, you have to set-up a config tree:

    $treeBuilder = new TreeBuilder();
    $tree = $treeBuilder
        ->root('security_config', 'array')
            ->node('access_denied_url', 'scalar')->end()
            ->normalize('encoder')
            ->node('encoders', 'array')
                ->key('class')
                ->prototype('array')
                    ->before()->ifString()->then(function($v) { return array('algorithm' => $v); })->end()
                    ->node('algorithm', 'scalar')->end()
                    ->node('encode_as_base64', 'scalar')->end()
                    ->node('iterations', 'scalar')->end()
                ->end()
            ->end()
        ->end()
        ->buildTree()
    ;

This tree and the metadata attached to the different nodes is then used
to intelligently transform the passed config array:

    $normalizedConfig = $tree->normalize($config);
2011-02-01 16:07:04 +01:00
Victor Berchet
cb445b9ca0 [Container] Tweak code 2011-02-01 13:21:10 +01:00
Johannes M. Schmitt
62d52d8015 enables normalizeConfig() to handle irregular plural forms, e.g. factory -> factories 2011-01-28 18:22:17 +01:00
Johannes Schmitt
803dd58002 add definition inheritance support 2011-01-28 09:12:29 +01:00
Johannes M. Schmitt
f3c2e98b25 lazy-load the compiler, and related objects 2011-01-27 21:06:49 +01:00
Fabien Potencier
0219ec3dbc [DependencyInjection] added missing methods in ContainerInterface 2011-01-27 08:42:22 +01:00
Johannes Schmitt
40dec8831f adds helper method to normalize keys 2011-01-25 15:59:51 +01:00
Fabien Potencier
3e71c2c76e [DependencyInjection] made a small speed optimization 2011-01-25 08:41:58 +01:00
Johannes Schmitt
f29a5f74a1 made the DI config validation more strict to catch errors early 2011-01-24 21:15:48 +01:00
Bulat Shakirzyanov
04e16e433d [DependencyInjection] fixed ResolveInterfaceInjectorsPass, as services might not have a class defined due to a scope (e.g. 'request') 2011-01-24 17:55:09 +01:00
Johannes M. Schmitt
e55f150fb7 adds hasTag() to Definition 2011-01-24 17:46:22 +01:00
Johannes M. Schmitt
0144dd86da adds synthetic attribute to definitions
This attribute can be used to hint that the service is being injected
dynamically at runtime, and not constructed by the DIC.
2011-01-23 21:11:50 +01:00
Fabien Potencier
4909987e23 [DependencyInjection] fixed strict flag propagation to aliases 2011-01-22 16:05:51 +01:00
Fabien Potencier
959438ee81 [DependencyInjection] fixed CS + tweaked error messages 2011-01-22 15:35:59 +01:00
Johannes M. Schmitt
1d5b6ed908 adds scope to the DI container 2011-01-22 15:20:50 +01:00
Johannes M. Schmitt
8d19136a55 refactors extensions to call XXXLoad only once with all config sections 2011-01-21 17:04:18 +01:00
Fabien Potencier
0b0c15b7b6 made XSD less strict when possible 2011-01-21 10:53:13 +01:00
Ryan Weaver
17f9162b89 [Standards] Changing many instances of "boolean" to "Boolean". 2011-01-21 09:53:24 +01:00
Johannes M. Schmitt
84fa4b50db adds setArgument to Definition 2011-01-19 21:48:56 +01:00
Kris Wallsmith
8d6da86016 [DependencyInjection] moved loading stack from static to object scope 2011-01-19 07:28:42 +01:00
Lukas Kahwe Smith
ddea635a51 fixes else -> } else 2011-01-19 07:20:23 +01:00
Dominique Bongiraud
64fb94c725 normalized license messages in PHP files 2011-01-18 08:07:46 +01:00
Fabien Potencier
c5f2ec8d2d made DIC tags only available during "compilation"
Now that we have a compilation phase for the DIC, using tags after compilation
is not needed anymore.

Tags were introduced to allow several independant bundles to be able to
interact which each others (remember that each extension knows nothing about
the others).

But during the compilation phase, the container has been merged ans so, all
the information from all bundles are available. This is then the right place
to deal with tags. That way, less work is needed at runtime and the DIC class
in the cache is also much smaller.

For simple cases, it means that you need to process the tag in a compiler pass
and store the information you need in a DIC parameter (have a look at the
TranslatorPass for a very simple example).

So, the PHP dumper does not add tags to the dumped PHP class anymore (it does
not implements TaggedContainerInterface anymore). But tags are still available
on ContainerBuilder instances.
2011-01-17 11:40:04 +01:00
Fabien Potencier
b7d2528384 added a way for any extension to add classes to the class cache 2011-01-16 11:32:17 +01:00
Fabien Potencier
612dce873b [DependencyInjection] added the possibility to pass the type of compiler pass in ContainerBuilder::addCompilerPAss 2011-01-16 10:20:13 +01:00
Fabien Potencier
d5c9f37982 [DependencyInjection] added compiler passes as resources 2011-01-16 10:20:10 +01:00
Fabien Potencier
5c64ca8a30 renamed Container::freeze() to Container::compile() 2011-01-16 08:12:36 +01:00
Johannes Schmitt
f1b7bc1fe9 some refactorings/improvements 2011-01-15 21:07:35 +01:00
Igor Wiedler
d1bc959fc6 [DependencyInjection] Typo in Container
"freezed" should be "frozen".
2011-01-15 15:22:04 +01:00
Martin Hason
6011073e7c [DependencyInjection] fixed XmlDumper (corrected validity) 2011-01-14 18:16:11 +01:00
Fabien Potencier
ea6342413c [DependencyInjection] fixed CS 2011-01-14 17:00:43 +01:00
Martin Hason
5ee48c4963 [DependencyInjection] fix XML entities in XmlDumper 2011-01-14 16:56:44 +01:00
Martin Hason
2a3d94a6d0 [DependencyInjection] added support for anonymous services in XmlDumper 2011-01-14 08:25:18 +01:00
Victor Berchet
0bc6d814c3 [DI Compiler] Make processArguments() process arguments only 2011-01-11 20:29:44 +01:00
Victor Berchet
22f04f50a6 [DI XmlLoader] Add missing type hints 2011-01-11 20:29:29 +01:00
Johannes Schmitt
f1e41a9671 [DependencyInjection] made some improvments to the container compiler
- inline private services which are references multiple times, but where all references originate from the same definition
- bug fix for non-shared services which were considered shared within the scope in which they were inlined
2011-01-09 19:58:51 +01:00
Johannes Schmitt
d1a2a65d19 [DependencyInjection] performance improvement, better analysis tools 2011-01-09 19:58:42 +01:00
Johannes Schmitt
e85546ef7d [DependencyInjection] made some improvments to the container compiler
- added generic repeated pass
- better optimization of services
- started adding some integration tests
2011-01-09 19:58:39 +01:00
Fabien Potencier
b2a720f2b7 [DependencyInjection] restricted supported for only phar URI 2011-01-07 16:03:57 +01:00
Martin Hason
a11619973b [DependencyInjection] fix xml validation for extension in phar archive 2011-01-07 16:00:28 +01:00
Johannes Schmitt
3785a99b94 adds visibility to aliases 2011-01-07 15:58:48 +01:00
Jeremy Mikola
554c86c589 [DependencyInjection] Add hasInterfaceInjectorForClass(), which is helpful for extension loader methods
Additionally, doc blocks were added for the Container's InterfaceInjector methods, and the test case was modified to cover both add() methods
2011-01-07 14:33:06 +01:00
Fabien Potencier
183acd8460 [DependencyInjection] fixed interface injection when the class is not available 2011-01-06 20:00:04 +01:00
Fabien Potencier
af8ebeaabb [DependencyInjection] added automatic detection for service circular references 2011-01-06 14:52:47 +01:00
Jeremy Mikola
a7bac83c58 [DependencyInjection] Remove OpenSky doc-block and AGPL license string 2011-01-06 08:46:17 +01:00
Johannes M. Schmitt
c5ef113b18 DI container optimization 2011-01-05 15:41:11 +01:00
Fabien Potencier
fc96702483 [DependencyInjection] fixed generation of empty tags when getting a tag from a definition
This change removes a lot of noise in the dumped container.
2011-01-05 15:00:59 +01:00
Fabien Potencier
eb4788e98e [DependencyInjection] made service keys and aliases case insensitive (as method names are case insensitive in PHP) 2011-01-03 09:07:06 +01:00
Victor Berchet
de42cfdf3e fix a typo 2011-01-03 08:48:57 +01:00
Victor Berchet
b7db5482d7 Container builder tweaks 2011-01-03 08:48:25 +01:00
Fabien Potencier
5c73619d80 [DependencyInjection] optimized previous commit 2010-12-31 09:15:36 +01:00
Lukas Kahwe Smith
c886d88bf3 [DependencyInjection] force loading of class file when resolving interface injections 2010-12-31 09:12:09 +01:00
Johannes Schmitt
db5e180d37 tweaked DI container 2010-12-30 15:59:52 +01:00
Victor Berchet
b2476719f6 Container PHP dumper: optimize string dumping ('f'.'o'.'o' -> 'foo') 2010-12-21 11:19:42 +01:00
Johannes Schmitt
a2105d44aa slight compiler refactoring (RFC) 2010-12-20 20:11:13 +01:00
Fabien Potencier
9f5253e460 fixed typo 2010-12-14 07:49:55 +01:00
Bulat Shakirzyanov
ff9e9ac315 [DependencyInjection] fixed a typo in PhpDumper 2010-12-13 18:55:37 +01:00
Jordi Boggiano
ac7e0bc35f [DependencyInjection] Fixes a loading order issue
ab7ad4808b introduced a regression when using a parameter in an extension config that is defined in the same file, the ParameterBag can not resolve it
2010-12-13 07:52:09 +01:00
Johannes Schmitt
763bba9b89 bug fix 2010-12-12 10:27:15 +01:00
Fabien Potencier
48e30537c4 added exception when a loaded YAML resource is not an array 2010-12-12 08:39:37 +01:00
Johannes Schmitt
e49cc36339 This commit fixes two bugs:
- interfaces can now also be defined on containers which are built with an Extension
- interface injection can also be used on classes that require constructor arguments
2010-12-10 17:15:04 +01:00
Jonathan H. Wage
ab7ad4808b [DependencyInjection] Allow parameter replacement within extension configurations. 2010-12-10 08:45:49 +01:00
Bulat Shakirzyanov
73331cf1c1 [DependencyInjection] Interface Injection implementation 2010-11-30 20:36:56 +01:00
pablodip
314d3d06ae [DependencyInjection] format the tags in the findTaggedServiceIds method of the PhpDumper 2010-11-30 07:56:51 +01:00
Fabien Potencier
341178e869 [DependencyInjection] made some cosmetic changes to the PHP dumper output 2010-11-24 15:55:25 +01:00
Fabien Potencier
60bbb8f380 [DependencyInjection] optimized compiled containers
* removed the __call() method in Container: it means that now, there is only
   one way to get a service: via the get() method;

 * removed the $shared variable in the dumped Container classes (we now use
   the $services variable from the parent class directly -- this is where we
   have a performance improvement);

 * optimized the PHP Dumper output.
2010-11-23 22:43:09 +01:00
Fabien Potencier
f6cc63c99c removed ArrayAccess interface for Container and Controller 2010-11-15 10:05:28 +01:00
Fabien Potencier
53dd4e39c7 [DependencyInjection] changed the YAML notation for optional services from @@ to @? 2010-11-15 10:00:59 +01:00
Fabien Potencier
92f3d9e7ec [DependencyInjection] removed the leading _ for anonymous service ids (the usage of strtr() in the conversion between ids and methods does not take leading _ into account like camelize() does) 2010-11-15 09:56:20 +01:00
Fabien Potencier
efed6005cb [DependencyInjection] fixed PHP dumper
In the dumped PHP class, we must use get() and not get*Service() methods to get services.
That's because all calls must be managed by get(). From the outside, you can call
get*Service() because as they are protected, they are caught by the __call() method;
which is not the case obviously when it is used internally.

If not, if you override a service with set(), this won't work when a service
depends on this one (the default one will still be used).
2010-11-12 17:38:32 +01:00
Kris Wallsmith
c991b250ea [DependencyInjection] updated TaggedContainerInterface to extend ContainerInterface 2010-11-03 17:16:57 +01:00
Fabien Potencier
988722b23b [DependencyInjection] fixed phpdoc 2010-10-26 16:01:39 +02:00
Jordi Boggiano
48155ccc2f [DependencyInjection] Regex optimization 2010-10-21 07:48:12 +02:00
Jordi Boggiano
2186535848 [DependencyInjection] Removed useless code 2010-10-21 07:48:06 +02:00
Jeremy Mikola
0aba8ef720 [DependencyInjection] XmlFileLoader should allow "factory-service" attribute without "class" for <service> 2010-10-19 21:10:07 +02:00
Kris Wallsmith
f79e23ffb5 Removed all those spaces after @author that were bothering me so… 2010-10-18 16:55:41 +02:00
Kris Wallsmith
0b1f3145ae Removed unnecessary "public" from interface method signatures. 2010-10-18 16:55:09 +02:00
Artur Kotyrba
308e85a5a7 Removed methods which implemented interfaces by throwing \LogicException('You must override...'). 2010-10-17 07:54:18 +02:00
pborreli
86cc6a11d9 [Component] Fixed some spelling typos 2010-10-17 07:51:50 +02:00
Kris Wallsmith
ef4f61bb9f [DependencyInjection] Added TaggedContainerInterface to signature of generated container classes 2010-10-16 08:32:07 +02:00
Ryan Weaver
c39635680f added PHPDoc 2010-10-13 07:29:41 +02:00
Ryan Weaver
7fb3b2ab9d Adding basic PHPDoc to the Routing\DelegatingLoader class. 2010-10-12 06:58:54 +02:00
Fabien Potencier
35ee15d131 [DependencyInjection] tweaked an error message to ease debugging 2010-09-26 16:59:40 +02:00
Fabien Potencier
7be00aa34e fixed previous commit 2010-09-03 16:18:04 +02:00
Fabien Potencier
4c17ce8e5e changed calls to has() to use the new proxy method 2010-09-03 11:38:21 +02:00
Bulat Shakirzyanov
2ccaafa561 [DpependencyInjection] added hasParameter() 2010-09-03 11:37:03 +02:00
Fabien Potencier
af96c87104 [DependencyInjection] added methods to remove an alias and a definition from a ContainerBuilder instance 2010-09-02 12:20:20 +02:00
Fabien Potencier
7c1b42e81b [DependencyInjection] added a way to inject an anonymous service in an extension configuration
<foo:bar>
        <service class="Foo" />
        <service class="Bar" />
    </foo:bar>

In the foo:bar extension method, you can retrieve the services with:

    // always an array of services
    $config['_services']
2010-09-02 12:17:32 +02:00
Fabien Potencier
d17c2edb49 fixed perms 2010-08-30 20:46:16 +02:00
Noël GUILBERT
d40d1746e0 [ZendBundle] added an option to register zend logger as an error handler 2010-08-30 19:03:12 +02:00
Fabien Potencier
83a64df542 added ContainerAwareInterface 2010-08-28 09:43:10 +02:00
Fabien Potencier
a432417ab9 [DependencyInjection] added a way to ignore errors when importing a non-existent file (useful when you want to include an optional service file) 2010-08-24 16:37:41 +02:00
Fabien Potencier
b1e79963b1 [DependencyInjection] moved extension loading in the freezing process (opens more possibilities in the loading order of configs) 2010-08-24 16:25:08 +02:00
Fabien Potencier
ec8500bd64 [FrameworkBundle] added support for previous exceptions in the exception pages 2010-08-24 14:01:57 +02:00
Fabien Potencier
bf82cf42dd renamed Symfony\Components to Symfony\Component 2010-08-20 23:09:55 +02:00