Commit Graph

603 Commits

Author SHA1 Message Date
Francois Zaninotto
76efcc7f8c Remove executable bit on PHP file 2013-11-19 14:48:58 +01:00
Fabien Potencier
587f355137 Merge branch '2.3'
* 2.3: (25 commits)
  bumped Symfony version to 2.2.11
  updated VERSION for 2.2.10
  update CONTRIBUTORS for 2.2.10
  updated CHANGELOG for 2.2.10
  fixed version
  Request::overrideGlobals() may call invalid ini value
  Force Luhn Validator to only work with strings
  Fixed bug with lazy services
  [Translation] fixed the error in the dumper test as described in #9475
  deleted mixing string concatenation inside a sprintf
  "__call()" should be displayed only if $this->magicCall is true
  [Console] fix phpdoc and constructor default value
  Add media-query for printing: Do not print the toolbar.
  Fix ProgressHelper redraw when redrawFreq is greater than 1
  Update toolbar.css.twig
  slovenian translations fixed
  slovenian translations fixed
  [DependencyInjection] fixed YamlDumper did not make services private.
  [FrameworkBundle] fix routing container parameter exception message
  [Form] fix and unify phpdoc
  ...

Conflicts:
	src/Symfony/Component/Console/Helper/ProgressHelper.php
	src/Symfony/Component/DependencyInjection/ContainerBuilder.php
	src/Symfony/Component/HttpKernel/Kernel.php
2013-11-13 22:30:16 +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
9138e1a64c Merge branch '2.3'
* 2.3:
  fixed CS
  fixed CS
  [HttpKernel] fixed memory limit display in MemoryDataCollector
  Fixed the error handling when decoding invalid XML to avoid a Warning
  [Form] Fixed: The "data" option is taken into account even if it is NULL
  [DomCrawler] [HttpFoundation] Make `Content-Type` attributes identification case-insensitive

Conflicts:
	src/Symfony/Bundle/FrameworkBundle/Tests/Templating/TimedPhpEngineTest.php
2013-10-30 09:31:46 +01:00
Fabien Potencier
61dd06ea27 fixed CS 2013-10-30 09:30:20 +01:00
Fabien Potencier
d10dec9bf3 Merge branch '2.3'
* 2.3:
  fixed Client when using the terminable event
  Fix problem with Windows file links (backslash in JavaScript string)
  [Security] fixed wrong phpdoc
  [DependencyInjection] Prevented inlining of lazy loaded private service definitions.
  [Routing] removed extra argument
  [HttpFoundation] Header `HTTP_X_FORWARDED_PROTO` can contain various values Some proxies use `ssl` instead of `https`, as well as Lighttpd mod_proxy allows value chaining (`https, http`, where `https` is always first when request is encrypted).
  Added doc comments

Conflicts:
	src/Symfony/Component/Routing/Router.php
	src/Symfony/Component/Security/Http/Firewall.php
2013-09-29 21:43:28 +02:00
Jakub Zalas
bb0125b2f9 [DependencyInjection] Prevented inlining of lazy loaded private service definitions. 2013-09-26 23:39:53 +01:00
Fabien Potencier
e8691366ce [ExpressionLanguage] renamed addFunction() to register() 2013-09-21 20:20:49 +02:00
Fabien Potencier
ca62f65887 merged branch fabpot/expression-engine (PR #8913)
This PR was merged into the master branch.

Discussion
----------

New Component: Expression Language

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #8850, #7352
| License       | MIT
| Doc PR        | not yet

TODO:

 - [ ] write documentation
 - [x] add tests for the new component
 - [x] implement expression support for access rules in the security component
 - [x] find a better character/convention for expressions in the YAML format
 - [x] check the performance of the evaluation mode
 - [x] better error messages in the evaluation mode
 - [x] add support in the Routing
 - [x] add support in the Validator

The ExpressionLanguage component provides an engine that can compile and
evaluate expressions.

An expression is a one-liner that returns a value (mostly, but not limited to, Booleans).

It is a strip-down version of Twig (only the expression part of it is
implemented.) Like Twig, the expression is lexed, parsed, and
compiled/evaluated. So, it is immune to external injections by design.

If we compare it to Twig, here are the main big differences:

 * only support for Twig expressions
 * no ambiguity for calls (foo.bar is only valid for properties, foo['bar'] is only valid for array calls, and foo.bar() is required for method calls)
 * no support for naming conventions in method calls (if the method is named getFoo(), you must use getFoo() and not foo())
 * no notion of a line for errors, but a cursor (we are mostly talking about one-liners here)
 * removed everything specific to the templating engine (like output escaping or filters)
 * no support for named arguments in method calls
 * only one extension point with functions (no possibility to define new operators, ...)
 * and probably even more I don't remember right now
 * there is no need for a runtime environment, the compiled PHP string is self-sufficient

An open question is whether we keep the difference betweens arrays and hashes.

The other big difference with Twig is that it can work in two modes (possible
because of the restrictions described above):

 * compilation: the expression is compiled to PHP and is self-sufficient
 * evaluation: the expression is evaluated without being compiled to PHP (the node tree produced by the parser can be serialized and evaluated afterwards -- so it can be saved on disk or in a database to speed up things when needed)

Let's see a simple example:

```php
$language = new ExpressionLanguage();

echo $language->evaluate('1 + 1');
// will echo 2

echo $language->compile('1 + 2');
// will echo "(1 + 2)"
```

The language supports:

 * all basic math operators (with precedence rules):
    * unary: not, !, -, +
    * binary: or, ||, and, &&, b-or, b-xor, b-and, ==, ===, !=, !==, <, >, >=, <=, not in, in, .., +, -, ~, *, /, %, **

 * all literals supported by Twig: strings, numbers, arrays (`[1, 2]`), hashes
   (`{a: "b"}`), Booleans, and null.

 * simple variables (`foo`), array accesses (`foo[1]`), property accesses
   (`foo.bar`), and method calls (`foo.bar(1, 2)`).

 * the ternary operator: `true ? true : false` (and all the shortcuts
   implemented in Twig).

 * function calls (`constant('FOO')` -- `constant` is the only built-in
   functions).

 * and of course, any combination of the above.

The compilation is better for performances as the end result is just a plain PHP string without any runtime. For the evaluation, we need to tokenize, parse, and evaluate the nodes on the fly. This can be optimized by using a `ParsedExpression` or a `SerializedParsedExpression` instead:

```php
$nodes = $language->parse($expr, $names);
$expression = new SerializedParsedExpression($expr, serialize($nodes));

// You can now store the expression in a DB for later reuse

// a SerializedParsedExpression can be evaluated like any other expressions,
// but under the hood, the lexer and the parser won't be used at all, so it''s much faster.
$language->evaluate($expression);
```
That's all folks!

I can see many use cases for this new component, and we have two use cases in
Symfony that we can implement right away.

## Using Expressions in the Service Container

The first one is expression support in the service container (it would replace
#8850) -- anywhere you can pass an argument in the service container, you can
use an expression:

```php
$c->register('foo', 'Foo')->addArgument(new Expression('bar.getvalue()'));
```

You have access to the service container via `this`:

    container.get("bar").getvalue(container.getParameter("value"))

The implementation comes with two functions that simplifies expressions
(`service()` to get a service, and `parameter` to get a parameter value). The
previous example can be simplified to:

    service("bar").getvalue(parameter("value"))

Here is how to use it in XML:

```xml
<parameters>
    <parameter key="value">foobar</parameter>
</parameters>
<services>
    <service id="foo" class="Foo">
        <argument type="expression">service('bar').getvalue(parameter('value'))</argument>
    </service>
    <service id="bar" class="Bar" />
</services>
```

and in YAML (I chose the syntax randomly ;)):

```yaml
parameters:
    value: foobar

services:
    bar:
        class: Bar

    foo:
        class: Foo
        arguments: [@=service("bar").getvalue(parameter("value"))]
```

When using the container builder, Symfony uses the evaluator, but with the PHP
dumper, the compiler is used, and there is no overhead as the expression
engine is not needed at runtime. The expression above would be compiled to:

```php
$this->get("bar")->getvalue($this->getParameter("value"))
```

## Using Expression for Security Access Control Rules

The second use case in Symfony is for access rules.

As we all know, the way to configure the security access control rules is confusing, which might lead to insecure applications (see http://symfony.com/blog/security-access-control-documentation-issue for more information).

Here is how the new `allow_if` works:

```yaml
access_control:
    - { path: ^/_internal/secure, allow_if: "'127.0.0.1' == request.getClientIp() or has_role('ROLE_ADMIN')" }
```

This one restricts the URLs starting with `/_internal/secure` to people browsing from the localhost. Here, `request` is the current Request instance. In the expression, there is access to the following variables:

 * `request`
 * `token`
 * `user`

And to the following functions:

 * `is_anonymous`
 * `is_authenticated`
 * `is_fully_authenticated`
 * `is_rememberme`
 * `has_role`

You can also use expressions in Twig, which works well with the `is_granted` function:

```jinja
{% if is_granted(expression('has_role("FOO")')) %}
   ...
{% endif %}
```

## Using Expressions in the Routing

Out of the box, Symfony can only match an incoming request based on some pre-determined variables (like the path info, the method, the scheme, ...). But some people want to be able to match on more complex logic, based on other information of the Request object. That's why we introduced `RequestMatcherInterface` recently (but we no default implementation in Symfony itself).

The first change I've made (not related to expression support) is implement this interface for the default `UrlMatcher`. It was simple enough.

Then, I've added a new `condition` configuration for Route objects, which allow you to add any valid expression. An expression has access to the `request` and to the routing `context`.

Here is how one would configure it in a YAML file:

```yaml
hello:
    path: /hello/{name}
    condition: "context.getMethod() in ['GET', 'HEAD'] and request.headers.get('User-Agent') =~ '/firefox/i'"
```

Why do I keep the context as all the data are also available in the request? Because you can also use the condition without using the RequestMatcherInterface, in which case, you don't have access to the request. So, the previous example is equivalent to:

```yaml
hello:
    path: /hello/{name}
    condition: "request.getMethod() in ['GET', 'HEAD'] and request.headers.get('User-Agent') =~ '/firefox/i'"
```

When using the PHP dumper, there is no overhead as the condition is compiled. Here is how it looks like:

```php
// hello
if (0 === strpos($pathinfo, '/hello') && preg_match('#^/hello/(?P<name>[^/]++)$#s', $pathinfo, $matches) && (in_array($context->getMethod(), array(0 => "GET", 1 => "HEAD")) && preg_match("/firefox/i", $request->headers->get("User-Agent")))) {
    return $this->mergeDefaults(array_replace($matches, array('_route' => 'hello')), array ());
}
```

Be warned that conditions are not taken into account when generating a URL.

## Using Expressions in the Validator

There is a new Expression constraint that you can put on a class. The expression is then evaluated for validation:

```php
use Symfony\Component\Validator\Constraints as Assert;

/**
 * @Assert\Condition(condition="this.getFoo() == 'fo'", message="Not good!")
 */
class Obj
{
    public function getFoo()
    {
        return 'foo';
    }
}
```

In the expression, you get access to the current object via the `this` variable.

## Dynamic annotations

The expression language component is also very useful in annotations. the SensoLabs FrameworkExtraBundle leverages this possibility to implement HTTP validation caching in the `@Cache` annotation and to add a new `@Security` annotation (see sensiolabs/SensioFrameworkExtraBundle#238.)

Commits
-------

d4ebbfd [Validator] Renamed Condition to Expression and added possibility to set it onto properties
a3b3a78 [Validator] added a constraint that runs an expression
1bcfb40 added optimized versions of expressions
984bd38 mades things more consistent for the end user
d477f15 [Routing] added support for expression conditions in routes
86ac8d7 [ExpressionLanguage] improved performance
e369d14 added a Twig extension to create Expression instances
38b7fde added support for expression in control access rules
2777ac7 [HttpFoundation] added ExpressionRequestMatcher
c25abd9 [DependencyInjection] added support for expressions in the service container
3a41781 [ExpressionLanguage] added support for regexes
9d98fa2 [ExpressionLanguage] added the component
2013-09-19 13:00:34 +02:00
Fabien Potencier
984bd38568 mades things more consistent for the end user 2013-09-19 12:59:11 +02:00
Fabien Potencier
c25abd9c72 [DependencyInjection] added support for expressions in the service container 2013-09-19 12:59:10 +02:00
Fabien Potencier
51c6d7696c Merge branch '2.3'
* 2.3:
  fixed phpdoc
  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/Serializer/Encoder/XmlEncoder.php
2013-09-19 11:47:34 +02: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
c3728d21cd Merge branch '2.3'
* 2.3:
  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
  [DomCrawler] fixed HTML5 form attribute handling
  Making tests pass on mac os x without this change tests would fail under mac os x at least in 10.8.2
  [BrowserKit] Fixed the handling of parameters when redirecting
  [Process] Properly close pipes after a Process::stop call
  fixed bytes conversion when used on 32-bits systems
  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)
  [Form] Fixed: "required" attribute is not added to <select> tag if no empty value
  [Translation] Removed an unneeded return annotation.
  [DomCrawler] Added missing docblocks and removed unneeded return annotation.

Conflicts:
	src/Symfony/Component/Process/Tests/AbstractProcessTest.php
2013-09-18 09:05:46 +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
Lukas Kahwe Smith
639b0fa967 Allow null values as tag attributes 2013-09-16 10:01:04 +02:00
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
5cad478c64 [DependencyInjection] added tags validation when compiling a container 2013-09-12 12:52:36 +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
Fabien Potencier
091a96ca3d Merge branch '2.3'
* 2.3:
  Fixing singular form for kisses, accesses and addresses.
  fixed some circular references
  [Security] fixed a leak in ExceptionListener
  [Security] fixed a leak in the ContextListener
  Ignore posix_istatty warnings
  removed unused variable
  [Form] fix iterator typehint
  typos
  Button missing getErrorsAsString() fixes #8084 Debug: Not calling undefined method anymore. If the form contained a submit button the call would fail and the debug of the form wasn't possible. Now it will work in all cases. This fixes #8084
  Use isset() instead of array_key_exists() in DIC
  Fixed annotation
  [BrowserKit] fixed method/files/content when redirecting a request
  [BrowserKit] removed some headers when redirecting a request
  [BrowserKit] fixed headers when redirecting if history is set to false (refs #8697)
  [HttpKernel] fixed route parameters storage in the Request data collector (closes #8867)
  [BrowserKit] Pass headers when `followRedirect()` is called
  Return BC compatibility for `@Route` parameters and default values

Conflicts:
	src/Symfony/Component/Security/Http/Firewall/ContextListener.php
2013-09-06 20:21:06 +02:00
tgabi333
485fb15c91 [DependencyInjection] remove code duplication from ContainerBuilder 2013-09-06 17:04:46 +02:00
Nathaniel Catchpole
e4b303973f Use isset() instead of array_key_exists() in DIC 2013-09-03 12:21:15 +02:00
Jean-François Simon
dd8014a0f4 Replace sha1 and md5 hashing with sha256 algorithm 2013-08-31 13:25:41 +02:00
Fabien Potencier
e838bf04ca Merge branch '2.3'
* 2.3:
  [Security] fixed some phpdoc
  Fixed PHPDoc Blocks
  optimized circular reference checker
  fixed misleading doc block
  [HttpKernel] changed fragment URLs to be relative by default (closes #8458)

Conflicts:
	src/Symfony/Component/HttpKernel/Fragment/RoutableFragmentRenderer.php
	src/Symfony/Component/HttpKernel/Tests/Fragment/RoutableFragmentRendererTest.php
2013-08-30 15:15:50 +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
6132b40b06 merged branch endroid/master (PR #8488)
This PR was squashed before being merged into the master branch (closes #8488).

Discussion
----------

Add container aware trait

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

This trait can be used inside a class to make it container aware. As it is not always possible to extend the abstract ContainerAware class, the code for creating a container aware class is usually copied over and over (most of the time unchanged), resulting in a lot of redundant code in your project. As my projects are PHP 5.4 based nowadays, I would like to be able to use a trait in these scenarios to improve my workflow.

Commits
-------

4c9e606 Add container aware trait
2013-08-28 20:20:21 +02:00
endroid
4c9e606ea5 Add container aware trait 2013-08-28 20:20:21 +02:00
Fabien Potencier
de50621e8a removed deps checks in unit tests
As Composer is now widely used in the PHP world, having to run composer
install before running the test suite is expected. This also has the
nice benefit of removing a bunch of code, making things easier to
maintain (there is only one place to declare a dev dependency), and
probably more.
2013-08-19 22:44:22 +02:00
Tobias Schultze
49c4a79a1d optimize some unneeded casts (esp. when casting something to string for array access) 2013-08-09 08:59:22 +02:00
Loïc Chardonnet
9acedb7227 [DependencyInjection] Test constants 2013-08-08 14:16:00 +02:00
Fabien Potencier
aa3e474aed Merge branch '2.3'
* 2.3:
  [Form] fixes empty file-inputs get treated as extra field
  return 0 if there is no valid data
  [DependencyInjection] fixed regression where setting a service to null did not trigger a re-creation of the service when getting it
  [DependencyInjection] fixed #8570
  fixed file permission
  The ignoreAttributes itself should be ignored, too.
  [Tests] Tests on php 5.5 should pass
  [Twig] fixed TwigEngine::exists() method when a template contains a syntax error (closes #88546)
2013-07-27 07:01:52 +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
1d86ea10ff Merge branch '2.3'
* 2.3:
  [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
  Added missing files .gitignore
  [DependencyInjection] Fix Container::camelize to convert beginning and ending chars
  [Validator] Fixed groups argument misplace for validateValue method from validator class
  [Form] Fix of "PATCH'ed forms are never valid"
2013-07-21 22:19:01 +02: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
Fabien Potencier
0cac9a11cf Merge branch '2.3'
* 2.3:
  [PropertyAccess] added moves to pluralMap
  [Security] fixed issue where authentication listeners clear unrelated tokens
  added greek translation
  [DependencyInjection] Add exception for service name not dumpable in PHP
  bumped Symfony version to 2.3.3-DEV
  fix issue #8499 modelChoiceList call getPrimaryKey on a non object
  updated VERSION for 2.3.2
  updated CHANGELOG for 2.3.2
  [DependencyInjection] Add exception for service name not dumpable in PHP
  fixed typo
  bumped Symfony version to 2.2.5
  updated VERSION for 2.2.4
  update CONTRIBUTORS for 2.2.4
  updated CHANGELOG for 2.2.4
  Fixed NativeSessionStorage:regenerate when does not exists
  removed extraneous whitespaces

Conflicts:
	src/Symfony/Component/HttpKernel/Kernel.php
2013-07-20 09:42:41 +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
Jakub Zalas
44f932270a [DependencyInjection] Removed outdated FIXME comments. 2013-07-12 11:38:48 +01:00