Commit Graph

13943 Commits

Author SHA1 Message Date
Kévin Dunglas
31696b7e98 Change few occurences of a public setUp() method to protected 2016-01-27 13:43:54 +01:00
Fabien Potencier
26ad4ff93a feature #17504 [Console] Show code when an exception is thrown (maidmaid)
This PR was squashed before being merged into the 3.1-dev branch (closes #17504).

Discussion
----------

[Console] Show code when an exception is thrown

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

Hi !

When an exception is thrown, sf console doesn't show the code exception, while this code is very useful during developpement (for example, [guzzle put http status code in his code exception](https://github.com/guzzle/guzzle/blob/6.1.1/src/Exception/RequestException.php#L30-L33)).

I propose you that we show the code exception only when the code exception > 0 and with ``-v`` verbosity. It means :

- ``throw new Exception('Not found', 0)`` with normal verbosity --> no change
- ``throw new Exception('Not found', 0)`` with ``-v`` verbosity --> no change
- ``throw new Exception('Not found', 404)`` with normal verbosity --> no change
- **but** ``throw new Exception('Not found', 404)`` with ``-v`` verbosity --> showing :

![image](https://cloud.githubusercontent.com/assets/4578773/12530638/052991f2-c1e5-11e5-92f1-b7b3f60cc4ba.png)

Commits
-------

f8cd9e8 [Console] Show code when an exception is thrown
2016-01-27 05:55:20 +01:00
Dany Maillard
f8cd9e8263 [Console] Show code when an exception is thrown 2016-01-27 05:55:18 +01:00
Fabien Potencier
cb16bffb28 feature #17446 [Serializer] Add PSR-6 adapter (dunglas)
This PR was squashed before being merged into the 3.1-dev branch (closes #17446).

Discussion
----------

[Serializer] Add PSR-6 adapter

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

- [x] Add tests

Commits
-------

4bf9d05 [Serializer] Add PSR-6 adapter
2016-01-27 05:42:02 +01:00
Kévin Dunglas
4bf9d05237 [Serializer] Add PSR-6 adapter 2016-01-27 05:42:01 +01:00
Fabien Potencier
127538ef26 feature #16917 [PropertyInfo] Cache support (dunglas)
This PR was squashed before being merged into the 3.1-dev branch (closes #16917).

Discussion
----------

[PropertyInfo] Cache support

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

Replace #16893 with several advantages:

- Less complex patch
- Work for all usages of PropertyInfo (even outside of the Serializer)
- Avoid a circular reference between Serializer's CallMetadataFactory and PropertyInfo's SerializerExtractor
- Allow @mihai-stancu's #16143 to work as-is

Commits
-------

86c20df [PropertyInfo] Cache support
2016-01-27 05:40:32 +01:00
Kévin Dunglas
86c20df53c [PropertyInfo] Cache support 2016-01-27 05:40:30 +01:00
Fabien Potencier
712eeed5bb minor #17549 [Validator] Minor fixes for the PSR-6 adapter (dunglas)
This PR was merged into the 3.1-dev branch.

Discussion
----------

[Validator] Minor fixes for the PSR-6 adapter

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

Follows #17440. Take into account comments of @Tobion.

Commits
-------

aa60d5b [Validator] Minor fixes for the PSR-6 adapter
2016-01-27 05:36:25 +01:00
Kévin Dunglas
12852c2aea [Validator] PSR-6 cache: Avoid name collision 2016-01-26 20:26:38 +01:00
Kévin Dunglas
aa60d5be20 [Validator] Minor fixes for the PSR-6 adapter 2016-01-26 19:13:14 +01:00
Fabien Potencier
37f526467e feature #17440 [Validator] Add a PSR-6 adapter (dunglas)
This PR was squashed before being merged into the 3.1-dev branch (closes #17440).

Discussion
----------

[Validator] Add a PSR-6 adapter

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

Commits
-------

1f0ba00 [Validator] Add a PSR-6 adapter
2016-01-26 13:31:07 +01:00
Kévin Dunglas
1f0ba00109 [Validator] Add a PSR-6 adapter 2016-01-26 13:31:05 +01:00
Fabien Potencier
420989f5a9 feature #17113 [Serializer] Add a MaxDepth option (dunglas)
This PR was squashed before being merged into the 3.1-dev branch (closes #17113).

Discussion
----------

[Serializer] Add a MaxDepth option

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | https://github.com/symfony/symfony/issues/14924#issuecomment-111977173, https://github.com/dunglas/DunglasApiBundle/issues/104#issuecomment-110644569
| License       | MIT
| Doc PR        | todo

Add a max depth option during the normalization process. Especially useful when normalizing trees.

Usage:

```php
use Symfony\Component\Serializer\Annotation\MaxDepth;

class MyObj
{
    /**
     * @MaxDepth(2)
     */
    public $foo;

    /**
     * @var self
     */
    public $child;
}

use Doctrine\Common\Annotations\AnnotationReader;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Symfony\Component\Serializer\Serializer;
use Symfony\Component\Serializer\Mapping\Loader\AnnotationLoader;
use Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactory;

$classMetadataFactory = new ClassMetadataFactory(new AnnotationLoader(new AnnotationReader()));
$normalizer = new ObjectNormalizer($classMetadataFactory);
$serializer = new Serializer(array($this->normalizer));

$level1 = new MyObj();
$level1->foo = 'level1';

$level2 = new MyObj();
$level2->foo = 'level2';
$level1->child = $level2;

$level3 = new MyObj();
$level3->foo = 'level3';
$level2->child = $level3;
$result = $serializer->normalize($level1, null, array(ObjectNormalizer::ENABLE_MAX_DEPTH => true));
/*      $result = array(
            'foo' => 'level1',
            'child' => array(
                    'foo' => 'level2',
                    'child' => array(
                            'child' => null,
                        ),
                ),
        );
*/
```

* [x] Metadata support
* [x] `@MaxDepth(2)` annotation and loader
* [x] XML loader
* [x] YAML loader
* [x] Delegate recursive normalization at the end of the process
* [x] Use constants with Late Static Binding in the abstract class instead of raw strings
* [x] Move common logic to the abstract class

/cc @mRoca @csarrazi

Commits
-------

a44bead [Serializer] Add a MaxDepth option
2016-01-26 13:18:18 +01:00
Kévin Dunglas
a44beade1e [Serializer] Add a MaxDepth option 2016-01-26 13:18:08 +01:00
Nicolas Grekas
d21fab0d0b [Cache] Handle and log errors properly 2016-01-25 20:18:55 +01:00
Fabien Potencier
48d91a83b6 feature #17522 [Cache] Use generator in ArrayAdapter (gcds)
This PR was merged into the 3.1-dev branch.

Discussion
----------

[Cache] Use generator in ArrayAdapter

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

Commits
-------

367e784 [Cache] Use generator in ArrayAdapter
2016-01-25 15:53:15 +01:00
Aurimas Niekis
367e784f25 [Cache] Use generator in ArrayAdapter 2016-01-25 15:49:11 +01:00
Fabien Potencier
acfa9abfdc feature #16164 [Serializer] Add a data: URI normalizer (dunglas)
This PR was squashed before being merged into the 3.1-dev branch (closes #16164).

Discussion
----------

[Serializer] Add a data: URI normalizer

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

A new normalizer to transform `\SplFileInfo`, `\SplFileObject` and `\Symfony\Component\HttpFoundation\File\File` to [`data:` URI](https://en.wikipedia.org/wiki/Data_URI_scheme) and the opposite.

It's convenient when dealing with the JavaScript `FileReader` API.

Usage:

```php
$normalizer = new DataUriNormalizer();
echo $normalizer->normalize(new File(__DIR__.'/test.gif'));
// data:image/gif;base64,R0lGODdhAQABAIAAAP///////ywAAAAAAQABAAACAkQBADs=

echo $normalizer->normalize(new File(__DIR__.'/test.txt'));
// data:text/plain,K%C3%A9vin%20Dunglas%0A

var_dump($normalizer->denormalize('data:image/gif;base64,R0lGODdhAQABAIAAAP///////ywAAAAAAQABAAACAkQBADs=', 'SplFileObject');
// a SplFileObject (also supports HttpFoundation file if the composant is installed)
```
cc @clementtalleu

Commits
-------

cc7b5af [Serializer] Add a data: URI normalizer
2016-01-25 15:33:51 +01:00
Kévin Dunglas
cc7b5af170 [Serializer] Add a data: URI normalizer 2016-01-25 15:33:44 +01:00
Marek Pietrzak
a16b1a0228 [console] Add truncate method to FormatterHelper 2016-01-25 13:26:46 +01:00
Fabien Potencier
0d3bde8ae6 feature #17438 [Cache] Allow and use generators in AbstractAdapter (nicolas-grekas)
This PR was merged into the 3.1-dev branch.

Discussion
----------

[Cache] Allow and use generators in AbstractAdapter

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

The most important enhancement is allowing doFetch to return a generator, which wasn't possible before.
The other changes add strictness.

Commits
-------

0ba851a [Cache] Allow and use generators in AbstractAdapter
2016-01-25 13:23:12 +01:00
SofHad
3f605982e1 [Security] add USERNAME_NONE_PROVIDED constant 2016-01-25 13:06:55 +01:00
Fabien Potencier
0974606d60 made some cleanup in tests 2016-01-25 12:33:17 +01:00
Mátyás Somfai
6a1080f899 [HttpKernel] added a setter for the headers property in the HttpException 2016-01-25 12:19:00 +01:00
Fabien Potencier
e9e4869c98 feature #17132 [DependencyInjection] Properly ignore invalid reference arguments in collection arguments (ogizanagi)
This PR was merged into the 3.1-dev branch.

Discussion
----------

[DependencyInjection] Properly ignore invalid reference arguments in collection arguments

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

With this new feature, the following configuration:

```xml
<service id="baz" class="Baz"/>

<service id="foo" class="Foo">
    <argument type="collection">
        <argument type="service" id="bar" on-invalid="ignore" />
        <argument type="service" id="baz" />
        <argument type="service" id="moo" on-invalid="null" />
    </argument>

    <argument type="service" id="bar" on-invalid="ignore" />
    <argument type="service" id="baz" />
    <argument type="service" id="moo" on-invalid="null" />

    <call method="foo">
        <argument type="service" id="bar" on-invalid="ignore" />
    </call>
    <call method="fooCollection">
        <argument type="collection">
            <argument type="service" id="bar" on-invalid="ignore" />
            <argument type="service" id="baz" />
            <argument type="service" id="moo" on-invalid="null" />
        </argument>
    </call>
</service>
```

will result into the following `Definition`:

```php
Definition {#64 ▼
  -class: "Foo"
  // […]
  -calls: array:1 [▼
    0 => array:2 [▼
      0 => "fooCollection"
      1 => array:1 [▼
        0 => array:2 [▼
          0 => Reference {#59 ▼
            -id: "baz"
            -invalidBehavior: 1
          }
          1 => null
        ]
      ]
    ]
  ]
  // […]
  #arguments: array:4 [▼
    0 => array:2 [▼
      0 => Reference {#63 ▼
        -id: "baz"
        -invalidBehavior: 1
      }
      1 => null
    ]
    1 => null
    2 => Reference {#56 ▼
      -id: "baz"
      -invalidBehavior: 1
    }
    3 => null
  ]
}
```

Invalid references are ignored instead of replaced by `null` when they are part of a collection argument.
If the collection argument is part of a method call and contains an invalid reference, the method call is kept, but the invalid reference removed.

The behavior stays the same as before for non-collection arguments.

🎄

Commits
-------

cfc4879 [DependencyInjection] Properly ignore invalid reference arguments in collection arguments
2016-01-25 12:14:38 +01:00
Fabien Potencier
d55114ef34 feature #17427 [Process] Allow a callback whenever the output is disabled (romainneutron)
This PR was merged into the 3.1-dev branch.

Discussion
----------

[Process] Allow a callback whenever the output is disabled

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | Related to #17390
| License       | MIT

This was not allowed in the past. However, it's possible with these changes

Commits
-------

02f0fc7 [Process] Allow a callback whenever the output is disabled
2016-01-25 12:11:57 +01:00
Fabien Potencier
36c2961def feature #16909 Allows access to payload in callback validator (conradkleinespel)
This PR was merged into the 3.1-dev branch.

Discussion
----------

Allows access to payload in callback validator

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

Commits
-------

26cd91d allows access to payload in callback validator
2016-01-25 09:16:45 +01:00
Kévin Dunglas
ed2cdfa827 feature #17411 [Serializer] Add a new DateTime normalizer (dunglas)
This PR was merged into the 3.1-dev branch.

Discussion
----------

[Serializer] Add a new DateTime normalizer

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

This PR add support for dates and times to the Normalizer component. It supports all date and time formats supported by PHP. Dates and times are normalized in the RFC 3339 format by default. The output format can be customized using the `$context` parameter. The default format can be changed using a constructor parameter.

Usage:

```php
use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer;
use Symfony\Component\Serializer\Serializer;

$serializer = new Serializer(array(new DateTimeNormalizer()));

echo $serializer->normalize(new \DateTimeImmutable('2016/01/01'));
// 2016-01-01T00:00:00+00:00

echo $serializer->normalize(new \DateTime('2016/01/01'));
// 2016-01-01T00:00:00+00:00

echo $serializer->normalize(new \DateTime('2016/01/01'), null, array(DateTimeNormalizer::FORMAT_KEY => 'Y'))
// 2016

var_dump($serializer->denormalize('2016-01-01T00:00:00+00:00', \DateTimeInterface::class));
// class DateTimeImmutable#1 (3) {
//   public $date =>
//   string(26) "2016-01-01 00:00:00.000000"
//   public $timezone_type =>
//   int(1)
//   public $timezone =>
//   string(6) "+00:00"
// }

var_dump($serializer->denormalize('2016-01-01T00:00:00+00:00', \DateTime::class));
// class DateTime#1 (3) {
//   public $date =>
//   string(26) "2016-01-01 00:00:00.000000"
//   public $timezone_type =>
//   int(1)
//   public $timezone =>
//   string(6) "+00:00"
// }
```

Commits
-------

6749a70 [Serializer] Add a new DateTime normalizer
2016-01-22 08:40:56 +01:00
Kévin Dunglas
6749a70326 [Serializer] Add a new DateTime normalizer 2016-01-22 08:14:37 +01:00
Fabien Potencier
ab951a44ba feature #17462 [Yaml] deprecate parsing the !!php/object tag (xabbuh)
This PR was merged into the 3.1-dev branch.

Discussion
----------

[Yaml] deprecate parsing the !!php/object tag

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

Commits
-------

3380346 [Yaml] deprecate parsing the !!php/object tag
f146c8d tag for dumped PHP objects must be a local one
2016-01-22 07:37:40 +01:00
Fabien Potencier
09f92ba516 Merge branch '3.0'
* 3.0:
  fixed CS
  fixed CS
  fixed CS
  fixed test
  fixed CS
  Remove default match from AbstractConfigCommand::findExtension
  Remove unused imports
  [FrameworkBundle][Validator] Fix apc cache service deprecation
2016-01-21 11:01:50 +01:00
Fabien Potencier
e9143fd837 fixed CS 2016-01-21 10:55:31 +01:00
Fabien Potencier
2b1daa462f minor #17465 Remove unused imports (Koc)
This PR was merged into the 3.0 branch.

Discussion
----------

Remove unused imports

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

Commits
-------

b8028f6 Remove unused imports
2016-01-21 10:53:31 +01:00
Fabien Potencier
dba07f35c1 Merge branch '2.8' into 3.0
* 2.8:
  fixed CS
  fixed CS
  fixed test
  fixed CS
  Remove default match from AbstractConfigCommand::findExtension
  [FrameworkBundle][Validator] Fix apc cache service deprecation
2016-01-21 10:38:31 +01:00
Fabien Potencier
3aafa78f4d fixed CS 2016-01-21 10:24:53 +01:00
Fabien Potencier
9188f0507d Merge branch '2.7' into 2.8
* 2.7:
  fixed CS
  fixed test
  fixed CS
  Remove default match from AbstractConfigCommand::findExtension
2016-01-21 10:05:51 +01:00
Fabien Potencier
06b958a17e fixed CS 2016-01-21 09:40:25 +01:00
Fabien Potencier
9afd7e02e0 Merge branch '2.3' into 2.7
* 2.3:
  fixed test
2016-01-21 09:40:12 +01:00
Fabien Potencier
6eda9ad834 fixed test 2016-01-21 09:40:05 +01:00
Paráda József
96e40b22b2 Fix unit tests in master 2016-01-21 09:17:58 +01:00
Fabien Potencier
ddc668d1cb Merge branch '2.3' into 2.7
* 2.3:
  fixed CS
2016-01-21 07:59:09 +01:00
Fabien Potencier
64515b8049 Merge branch '3.0'
* 3.0:
  make tests compatible with Symfony 2.8 and 3.0
2016-01-21 07:33:52 +01:00
Fabien Potencier
78c8543d25 Merge branch '2.8' into 3.0
* 2.8:
  make tests compatible with Symfony 2.8 and 3.0
2016-01-21 07:33:42 +01:00
Fabien Potencier
42862c4668 fixed CS 2016-01-21 07:28:40 +01:00
Konstantin.Myakshin
b8028f6053 Remove unused imports 2016-01-21 00:01:55 +02:00
Christian Flothmann
4d2930e52a make tests compatible with Symfony 2.8 and 3.0 2016-01-20 21:05:54 +01:00
Christian Flothmann
3380346108 [Yaml] deprecate parsing the !!php/object tag 2016-01-20 20:25:36 +01:00
Christian Flothmann
f146c8d71b tag for dumped PHP objects must be a local one 2016-01-20 20:18:17 +01:00
Fabien Potencier
a729462ce1 Merge branch '3.0'
* 3.0: (36 commits)
  Fixed form types in profiler
  [Process] Use stream based storage to avoid memory issues
  Fix upgrade guides concerning erroneous removal of assets helper
  [Process] Remove a misleading comment
  Fix markdown typo
  ChooseBaseUrl should return an index
  [Form] ChoiceType: Fix a notice when 'choices' normalizer is replaced
  Improve the phpdoc of SplFileInfo methods
  [Process] Use stream based storage to avoid memory issues
  [FrameworkBundle] Don't log twice with the error handler
  synchronize 2.8 and 3.0 upgrade files
  Remove useless is_object condition
  [Process] Fix typo, no arguments needed anymore
  [Serializer] Introduce constants for context keys
  Fixed the documentation of VoterInterface::supportsAttribute
  Fixed Bootstrap form theme form "reset" buttons
  Fixed the form profiler when using long form types
  [PropertyInfo] PhpDocExtractor: Fix a notice when the property doesn't exist
  Remove useless duplicated tests
  [FrameworkBundle] Optimize framework extension tests
  ...
2016-01-20 13:19:44 +01:00
Fabien Potencier
67df429d99 Merge branch '2.8' into 3.0
* 2.8: (48 commits)
  [Process] Use stream based storage to avoid memory issues
  Fix upgrade guides concerning erroneous removal of assets helper
  [Process] Remove a misleading comment
  Fix markdown typo
  ChooseBaseUrl should return an index
  [Form] ChoiceType: Fix a notice when 'choices' normalizer is replaced
  Improve the phpdoc of SplFileInfo methods
  [Process] Use stream based storage to avoid memory issues
  [FrameworkBundle] Don't log twice with the error handler
  synchronize 2.8 and 3.0 upgrade files
  Remove useless is_object condition
  [Process] Fix typo, no arguments needed anymore
  [Serializer] Introduce constants for context keys
  Fixed the documentation of VoterInterface::supportsAttribute
  Fixed Bootstrap form theme form "reset" buttons
  Fixed the form profiler when using long form types
  [PropertyInfo] PhpDocExtractor: Fix a notice when the property doesn't exist
  Remove useless duplicated tests
  [FrameworkBundle] Optimize framework extension tests
  synchronize 2.7 and 3.0 upgrade files
  ...
2016-01-20 13:18:23 +01:00