Commit Graph

110 Commits

Author SHA1 Message Date
Fabien Potencier
5b71e61d15 Merge branch '2.3'
* 2.3:
  [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
  [Process] Fix process merge in 2.3
  [Intl] made RegionBundle and LanguageBundle merge fallback data when using a country-specific locale
2013-09-12 14:59:51 +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
b1a062d232 moved RequestStack to HttpFoundation and removed RequestContext 2013-09-08 07:38:03 +02:00
Fabien Potencier
018b71936f [HttpKernel] tweaked the code 2013-09-07 21:43:50 +02:00
Benjamin Eberlei
c55f1ea8af added a RequestStack class 2013-09-07 21:43:49 +02:00
Fabien Potencier
64535bbcb2 Merge branch '2.2' into 2.3
* 2.2:
  [HttpKernel] added a missing dep for dev
  [Form] fixed wrong call to setTimeZone() (closes #8644)
  Fix issue with \DateTimeZone::UTC / 'UTC' for PHP 5.4
  [Form] Removed the "disabled" attribute from the placeholder option in select fields due to problems with the BlackBerry 10 browser
  [routing] added ability for apache matcher to handle array values
  removed dead code and fixed CS
  [Validator] fixed StaticMethodLoader trying to invoke methods of abstract classes (closes #8589)

Conflicts:
	src/Symfony/Bundle/TwigBundle/TokenParser/RenderTokenParser.php
	src/Symfony/Component/Form/FormConfigBuilder.php
	src/Symfony/Component/HttpKernel/composer.json
	src/Symfony/Component/Validator/Tests/GraphWalkerTest.php
2013-08-02 22:53:38 +02:00
Fabien Potencier
7d581471ce removed dead code and fixed CS 2013-07-28 20:26:16 +02:00
Fabien Potencier
686bbb61c4 Merge branch '2.2' into 2.3
* 2.2:
  Update JsonResponse.php
  [HttpKernel] fixed the inline renderer when passing objects as attributes (closes #7124)
  [WebProfiler] fix content-type parameter
  Replace romaji period characters with Japanese style zenkaku period characters
  Passed the config when building the Configuration in ConfigurableExtension

Conflicts:
	src/Symfony/Bundle/FrameworkBundle/Tests/Functional/Bundle/TestBundle/Resources/config/routing.yml
	src/Symfony/Component/HttpKernel/Tests/Fragment/InlineFragmentRendererTest.php
2013-07-08 15:36:15 +02:00
Christophe Coevoet
a830001ca3 Passed the config when building the Configuration in ConfigurableExtension 2013-06-26 14:56:23 +02:00
Fabien Potencier
853f681957 fixed request scope issues (refs #7457) 2013-05-09 09:53:36 +02:00
Fabien Potencier
5047227489 moved the kernel listener compiler pass to HttpKernel to make it reusable (refs #6643) 2013-04-25 16:01:08 +02:00
Fabien Potencier
74f96bfebf merged branch fabpot/contagious-services (PR #7007)
This PR was merged into the master branch.

Discussion
----------

[2.3] [WIP] Synchronized services...

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #5300, #6756
| License       | MIT
| Doc PR        | symfony/symfony-docs#2343

Todo:

 - [x] update documentation
 - [x] find a better name than contagious (synchronized)?

refs #6932, refs #5012

This PR is a proof of concept that tries to find a solution for some problems we have with scopes and services depending on scoped services (mostly the request service in Symfony).

Basically, whenever you want to inject the Request into a service, you have two possibilities:

 * put your own service into the request scope (a new service will be created whenever a sub-request is run, and the service is not available outside the request scope);

 * set the request service reference as non-strict (your service is always available but the request you have depends on when the service is created the first time).

This PR addresses this issue by allowing to use the second option but you service still always has the right Request service (see below for a longer explanation on how it works).

There is another issue that this PR fixes: edge cases and weird behaviors. There are several bug reports about some weird behaviors, and most of the time, this is related to the sub-requests. That's because the Request is injected into several Symfony objects without being updated correctly when leaving the request scope. Let me explain that: when a listener for instance needs the Request object, it can listen to the `kernel.request` event and store the request somewhere. So, whenever you enter a sub-request, the listener will get the new one. But when the sub-request ends, the listener has no way to know that it needs to reset the request to the master one. In practice, that's not really an issue, but let me show you an example of this issue in practice:

 * You have a controller that is called with the English locale;
 * The controller (probably via a template) renders a sub-request that uses the French locale;
 *  After the rendering, and from the controller, you try to generate a URL. Which locale the router will use? Yes, the French locale, which is wrong.

To fix these issues, this PR introduces a new notion in the DIC: synchronized services. When a service is marked as synchronized, all method calls involving this service will be called each time this service is set. When in a scope, methods are also called to restore the previous version of the service when the scope leaves.

If you have a look at the router or the locale listener, you will see that there is now a `setRequest` method that will called whenever the request service changes (because the `Container::set()` method is called or because the service is changed by a scope change).

Commits
-------

17269e1 [DependencyInjection] fixed management of scoped services with an invalid behavior set to null
bb83b3e [HttpKernel] added a safeguard for when a fragment is rendered outside the context of a master request
5d7b835 [FrameworkBundle] added some functional tests
ff9d688 fixed Request management for FragmentHandler
1b98ad3 fixed Request management for LocaleListener
a7b2b7e fixed Request management for RequestListener
0892135 [HttpKernel] ensured that the Request is null when outside of the Request scope
2ffcfb9 [FrameworkBundle] made the Request service synchronized
ec1e7ca [DependencyInjection] added a way to automatically update scoped services
2013-03-23 14:07:03 +01:00
Fabien Potencier
550df5a85a moved the request scope creation to the ContainerAwareHttpKernel class 2013-03-23 10:14:37 +01:00
Fabien Potencier
0892135f45 [HttpKernel] ensured that the Request is null when outside of the Request scope 2013-03-20 16:58:09 +01:00
Fabien Potencier
f17f5867a8 moved the container aware HTTP kernel to the HttpKernel component 2013-01-10 09:21:32 +01:00
Fabien Potencier
d97829e8a8 fixed CS 2012-12-20 08:41:17 +01:00
Florin Patan
c2acc6c2cb Fixed most of the docblocks/unused namespaces 2012-12-19 08:09:49 +01:00
Victor Berchet
57e9d28795 [DI] Add a base class for extension 2012-12-06 15:41:32 +01:00
Fabien Potencier
64b76ba1b4 merged branch vicb/sfcc (PR #6148)
This PR was merged into the master branch.

Commits
-------

7f16c1f [HttpKernel] Add DI extension configs as ressources when possible

Discussion
----------

[HttpKernel] Add DI extension configs as ressources when possible

/cc @rdohms @richardmiller

---------------------------------------------------------------------------

by vicb at 2012-11-30T11:57:48Z

btw @fabpot what about having a base class for `Extension` in the DI ? Would make it easier to re-use it when using standalone components, Di and (the suggested) Config as the greatest part of the class is not HttpKernel specific.

---------------------------------------------------------------------------

by fabpot at 2012-12-06T08:47:28Z

@vicb your suggestion makes sense.

Can you also explain the goal of this PR?

---------------------------------------------------------------------------

by vicb at 2012-12-06T09:01:58Z

The goal of this PR is to avoid having to sfcc when you modify a DI extension configuration. I think @rdohms got trapped.

---------------------------------------------------------------------------

by vicb at 2012-12-06T09:08:08Z

see https://twitter.com/rdohms/status/274059267428978688

---------------------------------------------------------------------------

by stof at 2012-12-06T09:20:54Z

I thought about it several times but never took time to implement it. It is annoying to have to clear the cache when you modify a default value in the Configuration class. So +1
2012-12-06 14:04:11 +01:00
Jérôme Vieilledent
5e8d401008 Implemented possibility to skip key normalization in config processing 2012-12-05 15:02:11 +01:00
Victor Berchet
7f16c1f5bc [HttpKernel] Add DI extension configs as ressources when possible 2012-11-29 14:58:56 +01:00
Eugene Leonovich
315ffc7f69 Remove executable bit from HttpKernel/DependencyInjection/ConfigurableExtension.php 2012-10-01 11:23:15 +02:00
Fabien Potencier
d100ffaf76 fixed CS 2012-07-09 14:54:20 +02:00
Fabien Potencier
3bdf52a16a fixed CS 2012-05-18 19:42:42 +02:00
Fabien Potencier
72e854e943 fixed CS 2012-04-07 09:10:50 +02:00
Eriksen Costa
2cac50d8a9 fixed CS (missing or misplaced license blocks) 2012-04-02 00:52:14 -03:00
Eriksen Costa
cf67870af7 fixed line break to LF 2012-03-31 18:11:43 -03:00
Eriksen Costa
013f998bb8 updated license blocks 2012-03-31 18:00:32 -03:00
Johannes M. Schmitt
3f2b9176e6 added a configurable extension base class 2012-03-18 21:15:55 -06:00
Fabien Potencier
d08c2ef8b4 removed unused use statements 2011-12-18 14:36:25 +01:00
Kevin Bond
73ac77336b [Config] added ability to set info message and example to node definition 2011-12-13 06:04:53 -05:00
Fabien Potencier
851eb73778 removed unused use statements 2011-10-29 11:56:30 +02:00
Fabien Potencier
edcdb4137f [HttpKernel] fixed possible double-classes in compiled classes 2011-07-22 22:17:31 +02:00
Fabien Potencier
eb7c86b7a8 [HttpKernel] removed the need to keep the compiled classes in the container 2011-07-22 19:10:59 +02:00
Johannes Schmitt
f6c5ef7b74 adds a small convenience method 2011-07-18 11:48:20 +02:00
Ryan Weaver
52cbbfe0d3 [HttpKernel] Adding small example of how the extension alias is auto-generated 2011-06-13 17:16:49 -05:00
Fabien Potencier
4cbc33a785 removed the automatic loading of the compiled classes (should be done explicitely by the end user now) 2011-04-28 14:19:10 +02:00
Fabien Potencier
3fe385e4fb removed the autoloader map feature
This feature added complexity to the framework but wasn't used in the core anyway.
You can still use the Map class loader  in your application though. But most of the time, using the APC
autoloader is just better.
2011-04-28 13:38:22 +02:00
Kris Wallsmith
7a7b448680 [HttpKernel] added BundleInterface::getContainerExtension() which is implicitly loaded 2011-04-25 21:12:35 -07:00
Fabien Potencier
fe43e1b759 Merge remote branch 'lsmith77/default_namespace2'
* lsmith77/default_namespace2:
  added default implementation for getNamespace()
2011-04-04 18:46:30 +02:00
Fabien Potencier
f232b3cdda reverted Merge remote branch 'kriswallsmith/kernel/shorter-bundle-names' 2011-04-04 11:10:56 +02:00
Lukas Kahwe Smith
ab93d40855 added default implementation for getNamespace() 2011-03-31 14:21:44 +02:00
Kris Wallsmith
a8ffa909ad [HttpKernel] updated component to work with shorter bundle names 2011-03-27 06:25:13 -07:00
Fabien Potencier
1b8dc80215 [HttpKernel] moved from protected to private 2011-03-23 19:47:16 +01:00
Fabien Potencier
8716c2ad1e merged 2011-03-08 15:43:02 +01:00
Fabien Potencier
8c423edfef replaced symfony-project.org by symfony.com 2011-03-06 12:40:06 +01:00
Kris Wallsmith
33d47be32e [HttpKernel] added an subclass merge extension configuration compiler pass to ensure each bundle's "main" extension is loaded 2011-03-03 13:54:32 +01:00
Martin Hason
1d04ebfda5 [HttpKernel] changed extends Extension to implements ExtensionInterface 2011-02-28 09:55:53 +01:00
Fabien Potencier
23e9386a0e changed all extensions to use the default Extension::getAlias() impl 2011-02-20 08:58:37 +01:00
Ray
8e2d7edb8c Attempt to create a reasonable default based on the rules enforced in
src/Symfony/Component/HttpKernel/bootstrap.php
  from commit: 14aa95ba21
2011-02-20 08:53:53 +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
Fabien Potencier
5c905beb13 moved common configuration classes to a new Config component 2011-02-13 22:31:50 +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
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
Fabien Potencier
2509c9da4b added an autoloader that uses a class map
A class in Symfony2 can be loaded by four different mechanisms:

 * bootstrap.php: This file contains classes that are always required and
   needed very early in the request handling;

 * classes.php: This file contains classes that are always required and
   managed by extensions via addClassesToCompile();

 * MapFileClassLoader: This autoloader uses a map of class/file to load
   classes (classes are managed by extensions via addClassesToAutoloadMap(),
   and should contain often used classes);

 * UniversalAutolaoder: This autoloader loads all other classes (it's the
   slowest one).
2011-01-27 16:30:58 +01:00
Johannes Schmitt
40dec8831f adds helper method to normalize keys 2011-01-25 15:59:51 +01:00
Johannes Schmitt
a4de7dab10 make normalizeConfig public and static 2011-01-25 11:40:02 +01:00
Fabien Potencier
69f0ec3b1a added a method to normalize config entries coming from YAML and XML 2011-01-21 17:44:30 +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