Commit Graph

18371 Commits

Author SHA1 Message Date
Rouven Weßling
bd8531d2d8 added a new Syntax to define factories as callables. 2014-09-24 08:27:41 +02:00
Fabien Potencier
4ee2e93109 feature #12003 [Form] Renamed the option "empty_value" to "placeholder" (webmozart)
This PR was merged into the 2.6-dev branch.

Discussion
----------

[Form] Renamed the option "empty_value" to "placeholder"

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

This PR is changing the "empty_value" option to the more understandable name "placeholder".

In a subsequent PR, the "placeholder" option should also be added to all types that support the "placeholder" HTML5 attribute.

Commits
-------

2b440f3 [Form] Renamed the option "empty_value" to "placeholder"
2014-09-23 18:59:59 +02:00
Fabien Potencier
1b49368617 feature #10640 VarDumper and DebugBundle (jpauli, nicolas-grekas, ruian, moux2003, tony-co, romainneutron, oscherler, lyrixx)
This PR was merged into the 2.6-dev branch.

Discussion
----------

VarDumper and DebugBundle

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

From a user land point of view, this PR creates a global `dump()` function that is to be used instead of `var_dump()`. The component can be used standalone in any dev workflow. Please see the [provided README](https://github.com/symfony/symfony/pull/10640/files?short_path=52d526f#diff-52d526f19bc9e3825c80e7694755409c) for details.

When used with the Framework bundle, variables passed to `dump()` are dumped in a new dedicated panel in the web toolbar. The function is also available in twig templates.

Regarding the implementation, I'm pretty sure you'll find a lot to comment. As I'm sure of nothing else, not even the names of things, please do.

I tried to organize this PR in several commits, from the most fundamental algorithm to pure Symfony glue.
I suggest you follow this order while progressing in the review and the discussion around this PR, so that we can together validate commits one after the other.

Don't hesitate to fork the PR and submit PR on it, I'll cherry-pick your patches.

TODO:
- [x] open a doc PR: https://github.com/symfony/symfony-docs/pull/4243
- [x] open a PR on the Standard edition: https://github.com/symfony/symfony-standard/pull/710
- [x] prefix the CSS classes
- [x] tests for the DebugBundle + other Symfony glue classes
- [x] inline css and js for compat with e.g. Silex
- [x] finish and merge nicolas-grekas/Patchwork-Dumper#5 for better UX
- [x] show a dump excerpt on hovering the icon in the toolbar
- [x] verify README and comments
- [x] validate interfaces/names (Caster / Cloner / Dumper)
- [x] validate new VarDumper component + DebugBundle
- [x] validate Resource/ext/ vs independent repos.
- [x] test and define behavior after KernelEvents::RESPONSE
- [x] update dependencies between components/bundles and composer.json files
- [x] no hard dep on iconv

Not for this PR but might be worth later:
- show a light stack trace + timing + memory at debug() calls
- create a "theme" concept for custom colors/UX

Commits
-------

80fd736 [DebugBundle] Enhance some comments
2e167ba [TwigBridge] add Twig dump() function + tests and fixes
0f8d30f [VarDumper] Replace \e with \x1B in CliDumper to support colour in PHP < 5.4
d43ae82 [VarDumper] Add workaround to https://bugs.php.net/65967
a8d81e4 [DebugBundle] Inlined assets to avoid installation issues
5f59811 [DebugBundle] Add doc example for Twig usage
e4e00ef [TwigBridge] DumpNode and Token parser
de05cd9 [DebugBundle] enhance dump excerpts
49f13c6 [HttpKernel] add tests for DumpDataCollector
081363c [HttpKernel] tests for DumpListener
0d8a942 [VarDumper] add Stub objects for cutting cleanly and dumping consts
c8746a4 [DebugBundle] add tests for twig and for the bundle
8d5d970 [DebugBundle] adjust after review
eb98c81 [DebugBundle] dump() + better Symfony glue
9dea601 [DebugBundle] global dump() function for daily use
297d373 [VarDumper] README, LICENSE and composer.json
a69e962 [VarDumper] tests for HtmlDumper
5eaa187 [VarDumper] tests for CliDumper
e6dde33 [VarDumper] HTML variant of the CLI dumper
fa81544 [VarDumper] CLI dedicated dumper and related abstract
1d5e3f4 [VarDumper] interface for dumping collected variables
0266072 [VarDumper] casters for DOM objects
c426d8b [VarDumper] casters for Doctrine objects
0a92c08 [VarDumper] casters for PDO related objects
da3e50a [VarDumper] casters for SPL data structures
c91bc83 [VarDumper] casters for exceptions representation
3ddbf4b [VarDumper] add casters for per class/resource custom state extraction
5b7ae28 [VarDumper] symfony_debug ext. fast and memory efficient cloning algo
07135a0 [VarDumper] algo to clone any PHP variable to a breadth-first queue
4bf9300 [Debug] a README for the debug extension
eec5c92 [Debug] Symfony debug extension
2014-09-23 18:54:24 +02:00
Bernhard Schussek
2b440f3847 [Form] Renamed the option "empty_value" to "placeholder" 2014-09-23 16:46:44 +02:00
Grégoire Pineau
80fd736142 [DebugBundle] Enhance some comments 2014-09-23 16:26:00 +02:00
Nicolas Grekas
2e167ba351 [TwigBridge] add Twig dump() function + tests and fixes 2014-09-23 16:26:00 +02:00
Olivier Scherler
0f8d30fd89 [VarDumper] Replace \e with \x1B in CliDumper to support colour in PHP < 5.4 2014-09-23 16:26:00 +02:00
Romain Neutron
d43ae82027 [VarDumper] Add workaround to https://bugs.php.net/65967 2014-09-23 16:26:00 +02:00
Tony Cosentino
a8d81e4fd7 [DebugBundle] Inlined assets to avoid installation issues 2014-09-23 16:25:59 +02:00
Maxime HERMOUET
5f59811c60 [DebugBundle] Add doc example for Twig usage 2014-09-23 16:25:59 +02:00
julien Galenski
e4e00ef78e [TwigBridge] DumpNode and Token parser 2014-09-23 16:25:59 +02:00
Nicolas Grekas
de05cd97b9 [DebugBundle] enhance dump excerpts 2014-09-23 16:25:59 +02:00
Nicolas Grekas
49f13c6eab [HttpKernel] add tests for DumpDataCollector 2014-09-23 16:25:59 +02:00
Nicolas Grekas
081363cbd4 [HttpKernel] tests for DumpListener 2014-09-23 16:25:59 +02:00
Nicolas Grekas
0d8a942cfa [VarDumper] add Stub objects for cutting cleanly and dumping consts 2014-09-23 16:25:59 +02:00
Nicolas Grekas
c8746a43c9 [DebugBundle] add tests for twig and for the bundle 2014-09-23 16:25:59 +02:00
Nicolas Grekas
8d5d970eea [DebugBundle] adjust after review 2014-09-23 16:25:59 +02:00
Nicolas Grekas
eb98c81754 [DebugBundle] dump() + better Symfony glue 2014-09-23 16:25:59 +02:00
Nicolas Grekas
9dea601234 [DebugBundle] global dump() function for daily use 2014-09-23 16:25:57 +02:00
Fabien Potencier
ea6ce1c8af fixed typo 2014-09-23 16:20:22 +02:00
Nicolas Grekas
297d3734f8 [VarDumper] README, LICENSE and composer.json 2014-09-23 14:30:52 +02:00
Nicolas Grekas
a69e962209 [VarDumper] tests for HtmlDumper 2014-09-23 14:30:52 +02:00
Nicolas Grekas
5eaa187f8b [VarDumper] tests for CliDumper 2014-09-23 14:30:52 +02:00
Nicolas Grekas
e6dde33940 [VarDumper] HTML variant of the CLI dumper 2014-09-23 14:30:52 +02:00
Nicolas Grekas
fa81544075 [VarDumper] CLI dedicated dumper and related abstract 2014-09-23 14:30:52 +02:00
Nicolas Grekas
1d5e3f4dc5 [VarDumper] interface for dumping collected variables 2014-09-23 14:30:52 +02:00
Nicolas Grekas
0266072bb3 [VarDumper] casters for DOM objects 2014-09-23 14:30:52 +02:00
Nicolas Grekas
c426d8bc09 [VarDumper] casters for Doctrine objects 2014-09-23 14:30:52 +02:00
Nicolas Grekas
0a92c08699 [VarDumper] casters for PDO related objects 2014-09-23 14:30:51 +02:00
Nicolas Grekas
da3e50a2bf [VarDumper] casters for SPL data structures 2014-09-23 14:30:51 +02:00
Nicolas Grekas
c91bc83c86 [VarDumper] casters for exceptions representation 2014-09-23 14:30:51 +02:00
Nicolas Grekas
3ddbf4b6b9 [VarDumper] add casters for per class/resource custom state extraction 2014-09-23 14:30:51 +02:00
Nicolas Grekas
5b7ae2862f [VarDumper] symfony_debug ext. fast and memory efficient cloning algo 2014-09-23 14:30:51 +02:00
Nicolas Grekas
07135a0959 [VarDumper] algo to clone any PHP variable to a breadth-first queue 2014-09-23 14:30:51 +02:00
Nicolas Grekas
4bf9300c09 [Debug] a README for the debug extension 2014-09-23 14:30:51 +02:00
Julien Pauli
eec5c92c35 [Debug] Symfony debug extension 2014-09-23 14:30:51 +02:00
Fabien Potencier
aa594450d2 feature #11716 [OptionsResolver] Added a light-weight, low-level API for basic option resolving (webmozart)
This PR was merged into the 2.6-dev branch.

Discussion
----------

[OptionsResolver] Added a light-weight, low-level API for basic option resolving

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

See [the updated documentation](https://github.com/webmozart/symfony-docs/blob/issue11705/components/options_resolver.rst) for details on the usage of the simple API.

The most important motivation for this change is DX and speed. The basic features of the component should be easily usable in a wide variety of use cases without impacting performance.

For DX reasons, I added the static methods to the `Options` class, which makes the code concise and easy to read and understand:

```php
use Symfony\Component\OptionsResolver\Options;

$options = Options::validateRequired($options, 'format');

$options = Options::validateTypes($options, array(
    'format' => array('string', 'int'),
    'calendar' => 'int',
));

$options = Options::validateValues($options, array(
    'calendar' => array(
        \IntlDateFormatter::GREGORIAN,
        \IntlDateFormatter::TRADITIONAL,
    ),
));

$options = Options::resolve($options, array(
    'format' => null,
    'calendar' => \IntlDateFormatter::GREGORIAN,
));
```

If you need to distribute the option configuration, this PR also extracts the configuration part of the `OptionsResolver` class into a new class `OptionsConfig`, which can be passed around. When the configuration is complete, pass the config object to `Options::resolve()` as second argument:

```php
$config = new OptionsConfig();

$config->setDefaults(array(
    'format' => \IntlDateFormatter::MEDIUM,
    'calendar' => \IntlDateFormatter::GREGORIAN,
));

$options = Options::resolve($options, $config);
```

Consequently - since `OptionsResolver` extends `OptionsConfig` - the two following statements now become identical:

```php
$options = $resolver->resolve($options);
$options = Options::resolve($options, $resolver);
```

Commits
-------

9066025 [OptionsResolver] Added a light-weight, low-level API for basic option resolving
2014-09-23 12:46:07 +02:00
Fabien Potencier
cc63edbfa8 minor #11994 [Form] Changed "allow_html5" to "html5" (webmozart)
This PR was merged into the 2.6-dev branch.

Discussion
----------

[Form] Changed "allow_html5" to "html5"

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

This is a follow-up to #8291, which I missed before it was merged. IMO "allow_html5" is a confusing name. We don't "allow" HTML5, but we use it - or we don't. I think "html5" conveys that meaning well and is shorter at the same time.

Commits
-------

ad171be [Form] Changed "allow_html5" to "html5"
2014-09-23 12:31:32 +02:00
Bernhard Schussek
ad171be6e9 [Form] Changed "allow_html5" to "html5" 2014-09-23 12:15:17 +02:00
Fabien Potencier
0050b8d458 feature #10698 [Security] Added a REMOTE_USER based listener to security firewalls (Maxime Douailin)
This PR was squashed before being merged into the 2.6-dev branch (closes #10698).

Discussion
----------

[Security] Added a REMOTE_USER based listener to security firewalls

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | /
| License       | MIT
| Doc PR        | symfony/symfony-docs#3912
TODO
- [x] submit changes to the documentation

I've seen myself implementing a few times a REMOTE_USER based authentication listener, as a large part of security modules for Apache (Kerberos, CAS, and more) are providing the username via an environment variable.

So I thought this could benefit the whole community if directly included in the framework. It is very similar to the X509AuthenticationListener, and basing the RemoteUserAuthenticationListener on the AbstractPreAuthenticatedListener is relevant and very convenient.

Using the X509AuthenticationListener could be possible, but it is confusing to use it directly when your authentication is not certificate based.

Please let me know if I need to update anything.

Regards

Commits
-------

a2872f2 [Security] Added a REMOTE_USER based listener to security firewalls
2014-09-23 11:54:13 +02:00
Maxime Douailin
a2872f21b9 [Security] Added a REMOTE_USER based listener to security firewalls 2014-09-23 11:54:11 +02:00
Fabien Potencier
1fb8f8817a feature #11183 [Security] add an AbstractVoter implementation (Inoryy)
This PR was squashed before being merged into the 2.6-dev branch (closes #11183).

Discussion
----------

[Security] add an AbstractVoter implementation

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/4257

The idea is to reduce boilerplate required to create custom Voter, doing most of the work for the developer and guiding him on the path by providing simple requirements via abstract methods that will be called by the AbstractVoter.

P.S. This is meant to be a [DX Initiative](https://github.com/symfony/symfony/issues?labels=DX&state=open) improvement.

Commits
-------

d3bafc6 [Security] add an AbstractVoter implementation
2014-09-23 11:51:23 +02:00
Roman Marintšenko
d3bafc6b48 [Security] add an AbstractVoter implementation 2014-09-23 11:51:18 +02:00
Fabien Potencier
56a7a60f52 minor #11992 [Console][Command][LogicException] The command name cannot be empty. #11991 (skafandri)
This PR was submitted for the 2.5 branch but it was merged into the 2.6-dev branch instead (closes #11992).

Discussion
----------

[Console][Command][LogicException] The command name cannot be empty. #11991

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

Commits
-------

7d6fbd9 [Console][Command][LogicException] The command name cannot be empty. #11991
2014-09-23 11:01:06 +02:00
skafandri
7d6fbd99a2 [Console][Command][LogicException] The command name cannot be empty. #11991 2014-09-23 11:01:06 +02:00
Fabien Potencier
d059b1edae fixed CS 2014-09-23 08:31:13 +02:00
Fabien Potencier
0da03cf98b feature #8291 [Form] Add allow_html5 option to date and time FormType to disable HTML5 input type (csanquer)
This PR was merged into the 2.6-dev branch.

Discussion
----------

[Form] Add allow_html5 option to date and time FormType to disable HTML5 input type

[Form] added allow_html5 option to date and time FormType to disable HTML5 input type when widget is set to single_text

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

With this little patch we can have a single text widget without HTML5 date input type which is required when using some javascript date or time picker .

Commits
-------

392d6c7 add allow_html5 option to date and time FormType to disable HTML5 date input when widget is set to single_text
2014-09-23 08:30:39 +02:00
Fabien Potencier
8ac12257f3 fixed CS 2014-09-23 08:15:49 +02:00
Fabien Potencier
8e8488092f feature #11815 Added some methods to improve the handling of auto_mapping feature (goetas)
This PR was squashed before being merged into the 2.6-dev branch (closes #11815).

Discussion
----------

Added some methods to improve the handling of auto_mapping feature

| Q             | A
| ------------- | ---
| Bug fix?      |no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?  | yes
| Fixed tickets | https://github.com/doctrine/DoctrineBundle/issues/60
| License       | MIT

This PR is a part that is required by:
* https://github.com/doctrine/DoctrineMongoDBBundle/pull/267
* https://github.com/doctrine/DoctrineBundle/pull/321

The proposed PRs are an alternative to https://github.com/symfony/symfony/pull/11650 and https://github.com/doctrine/DoctrineBundle/pull/322

Commits
-------

2e30a43 Added some methods to improve the handling of auto_mapping feature
2014-09-23 08:15:19 +02:00
Asmir Mustafic
2e30a431d0 Added some methods to improve the handling of auto_mapping feature 2014-09-23 08:15:16 +02:00