Commit Graph

4297 Commits

Author SHA1 Message Date
Fabien Potencier
ba080cd228 merged branch Seldaek/console-win-fix (PR #4100)
Commits
-------

4171305 [Console] Use proc_open instead of exec to suppress errors when run on windows and stty is not present

Discussion
----------

[Console] Use proc_open instead of exec to suppress errors.

stty is *sometimes* there on windows, but not always, so with proc_open we can quietly return null instead of outputting errors.

/cc @gnutix: that's the error you told me about this morning in https://gist.github.com/2478037

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

by maoueh at 2012-04-24T17:46:25Z

Thx, I'm getting this in my output each time an exception is thrown in CLI. Good this should fix it :)
2012-04-24 21:17:30 +02:00
Christian Raue
f287f0804d removed superfluous public modifier from interface methods 2012-04-24 19:15:04 +02:00
Jordi Boggiano
4171305067 [Console] Use proc_open instead of exec to suppress errors when run on windows and stty is not present 2012-04-24 18:59:43 +02:00
Fabien Potencier
5ed9dbe632 merged branch Tobion/patch-2 (PR #4080)
Commits
-------

9f0daf4 put parentheses back
885104c fix typo

Discussion
----------

fix typo

Fix typo introduced in #4069
Past participle of `read` is `read`
2012-04-24 14:30:47 +02:00
Tobias Schultze
9f0daf47f9 put parentheses back 2012-04-24 15:28:42 +03:00
Fabien Potencier
abf39fd282 merged branch gajdaw/2_0_component_domcrawler_cs (PR #4091)
Commits
-------

25fed13 [2.0][Component][DomCrawler] cs

Discussion
----------

[2.0][Component][DomCrawler] cs

Bug fix: no
Feature addition: no
Backwards compatibility break: no
Symfony2 tests pass: [![Build Status](https://secure.travis-ci.org/gajdaw/symfony.png?branch=2_0_component_domcrawler_cs)](http://travis-ci.org/gajdaw/symfony)
Fixes the following tickets: -
Todo: -

Code standard fix + some documentation.
2012-04-24 14:16:28 +02:00
William DURAND
c89f3d3b88 [HttpKernel] Added DEPRECATED errors 2012-04-24 12:21:59 +02:00
Włodzimierz Gajda
25fed1355b [2.0][Component][DomCrawler] cs 2012-04-24 11:53:16 +02:00
Christian Raue
ee57c04b24 added missing dot in FormType as follow-up to #3922 2012-04-24 01:06:23 +02:00
Joseph Bielawski
fde94caad8 [Validator] Fixed example in README file (fixes #4088) 2012-04-23 18:53:08 +03:00
Bernhard Schussek
d9e142bd62 [Form] Restored and deprecated method guessMinLength in FormTypeGuesser 2012-04-23 16:02:44 +02:00
Tobias Schultze
58b2b2da54 fix fatal error when mongo not available 2012-04-23 14:17:34 +02:00
Tobias Schultze
885104cb78 fix typo 2012-04-23 14:43:49 +03:00
Fabien Potencier
c9424c61de merged branch Ziumin/2.0 (PR #4076)
Commits
-------

2e7d3b1 http_build_query fix
de73de0 http_build_query fix
3b7ee9a http_build_query fix

Discussion
----------

[2.0] http_build_query extra parameters

Bug fix: yes

arg_separator.output is not always "&", so it is better ini_set it or put an extra parameters to http_build_query

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

by fabpot at 2012-04-23T10:20:05Z

Can you squash your commits? It will be much easier to get back to this change later on. Thanks.

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

by Ziumin at 2012-04-23T10:46:35Z

I have no idea how to do it using web interface. I'm not familiar with git (prefer hg). Sorry.
2012-04-23 12:56:33 +02:00
Fabien Potencier
27b4774ff3 merged branch ruian/guess_pattern (PR #4077)
Commits
-------

f7200e4 [Form] added method `guessPattern` to FormTypeGuesserInterface

Discussion
----------

[Form] add guess pattern

Bug fix: no
Feature addition: yes
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets: https://github.com/symfony/symfony/issues/3766
Todo: -

Due to some trouble when rebase my previous PR i open a new one with Master merged
Refs PR: https://github.com/symfony/symfony/pull/3927

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

by fabpot at 2012-04-23T10:25:57Z

@vicb @bschussek ok for you?

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

by bschussek at 2012-04-23T10:26:51Z

please do also rephrase the commit message to something clearer, like

    [Form] added method `guessPattern` to FormTypeGuesserInterface

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

by bschussek at 2012-04-23T10:27:35Z

Otherwise this looks good :)

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

by ruian at 2012-04-23T10:29:18Z

every changes done
2012-04-23 12:29:33 +02:00
julien.galenski
f7200e479c [Form] added method guessPattern to FormTypeGuesserInterface
rephrase changelog
2012-04-23 12:28:18 +02:00
Fabien Potencier
d5c5d7667d merged branch Baachi/mongo-session-storage (PR #4013)
Commits
-------

40df3bf Add mongodb session storage

Discussion
----------

[HttpFoundation][Session] Add mongodb session storage

Bug fix: no
Feature addition: yes
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets: -
Todo: -

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

by Baachi at 2012-04-19T19:05:19Z

Review please :)

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

by Baachi at 2012-04-19T19:49:42Z

@stof Can be merged?

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

by stof at 2012-04-19T19:51:28Z

I'm not a Mongo expert but it seems fine. You simply need to wait @fabpot's final review now

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

by Baachi at 2012-04-19T19:52:53Z

Okay, thanks :)

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

by Baachi at 2012-04-20T06:21:52Z

@vicb Sorry, for the email flood :)

I implemented all your suggestions.

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

by fabpot at 2012-04-22T08:27:19Z

@drak, @vicb: Is it ok now?

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

by vicb at 2012-04-22T08:33:31Z

I am ok with this PR
2012-04-23 12:27:25 +02:00
Fabien Potencier
62005b9736 merged branch pulzarraider/windows_proces_hang_fix (PR #4069)
Commits
-------

e3296cb fix php5.4 problem
c2405c0 fix hanging of unit tests on Windows

Discussion
----------

[WIP] [Process] Fix hanging of unit tests on Windows

Bug fix: yes
Feature addition: no
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets: #3798
Todo: -

This PR tries to fix hanging unit tests on Windows platform. The problem is caused by known [PHP bug](https://bugs.php.net/bug.php?id=51800). PHP hangs forever while reading from STDOUT pipe if the output is too big.

I tried different combinatios and this is not ideal, but a working patch - STDOUT is sending to a file.

@Tobion, @drak and other developers working on Windows - can you please confirm, if this solution works for you, too?

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

by Seldaek at 2012-04-22T20:56:20Z

Tried it on 5.4.0 - I get the following when I checkout your branch:

```
SS..........ESSSSSSSSSS...E.S

Time: 0 seconds, Memory: 19.75Mb

There were 2 errors:

1) Symfony\Component\Process\Tests\ProcessTest::testProcessResponses with data set #0 ('output', 'getOutput', 'echo \'output\';')
Undefined offset: 1

C:\Users\seld\Web\symfony\framework\src\Symfony\Component\Process\Process.php:342
C:\Users\seld\Web\symfony\framework\src\Symfony\Component\Process\Process.php:168
C:\Users\seld\Web\symfony\framework\src\Symfony\Component\Process\Tests\ProcessTest.php:46

2) Symfony\Component\Process\Tests\ProcessTest::testIsRunning
Undefined offset: 1

C:\Users\seld\Web\symfony\framework\src\Symfony\Component\Process\Process.php:342
C:\Users\seld\Web\symfony\framework\src\Symfony\Component\Process\Tests\ProcessTest.php:106
```

When I remove the skipping of `ProcessTest::testProcessPipes` - it still hangs so it looks like your fix is not working.

Just for reference, with latest master checkout I get this:

```
SS...........SSSSSSSSSS.....S

Time: 2 seconds, Memory: 19.75Mb

OK, but incomplete or skipped tests!
```

Don't have time right now, but if I find time to look at your diff in more details I will, maybe it's possible to fix it.

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

by pulzarraider at 2012-04-22T22:23:05Z

@Seldaek Thanks, fixed php5.4 problem, my php5.3.8 passed every Process tests.

This patch isn't fixing problem with pipes in general. I don't think it's even possible from PHP code. We have to wait for PHP core developers to fix this problem. This patch only fix issue with hanging unit tests (not the one with pipes you mentioned). In my environment, symfony unit tests never finished and hangs on SwitchUserTest from SecurityBundle on 98%. Now with this patch, I can see final informations about all tests and their errors.

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

by Seldaek at 2012-04-23T07:44:16Z

Ok, it passes again on 5.4.
2012-04-23 12:23:49 +02:00
Fabien Potencier
918769ded9 merged branch gajdaw/2_1_component_classloader_cs (PR #4073)
Commits
-------

bc8855e [2.1][Component][ClassLoader] cs

Discussion
----------

[2.1][Component][ClassLoader] cs

Bug fix: no
Feature addition: no
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets: -
Todo: -

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

by fabpot at 2012-04-23T06:18:26Z

Can you please remove the changes you have already made in the other PR as I merge 2.0 into master regularly. Then, you will need to squash you commits to avoid any conflict when merging will occur. Thanks.

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

by gajdaw at 2012-04-23T06:50:58Z

I hope that's it.
2012-04-23 12:23:18 +02:00
Ziumin
de73de0259 http_build_query fix 2012-04-23 10:55:54 +03:00
Ziumin
3b7ee9a4bc http_build_query fix 2012-04-23 10:54:46 +03:00
Włodzimierz Gajda
bc8855e46a [2.1][Component][ClassLoader] cs 2012-04-23 08:41:33 +02:00
Włodzimierz Gajda
54ec6877a2 [2.0][Component][ClassLoader] cs 2012-04-23 07:37:21 +02:00
Andrej Hudec
e3296cb744 fix php5.4 problem 2012-04-23 00:05:10 +02:00
Andrej Hudec
c2405c0bbc fix hanging of unit tests on Windows 2012-04-22 21:52:08 +02:00
Fabien Potencier
b0a6956bdc merged branch willdurand/fix-composer-json (PR #4066)
Commits
-------

e344609 [DependencyInjection] Fixed composer.json
1aa0786 [FrameworkBundle] Fixed composer.json
3601f61 [DoctrineBridge] Fixed composer.json

Discussion
----------

Fix composer json

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

by jalliot at 2012-04-22T14:22:24Z

`suggest` no longer requires a version constraint. While you're at it, maybe you could change those to more meaningful strings explaining what each optional dependency provides.

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

by willdurand at 2012-04-22T14:24:27Z

I know, but the version is fine. It's more up to @fabpot to add description in each `suggest` entries.
Anyway, this is not the purpose of this PR. If you want to contribute on that, feel free :)
2012-04-22 18:51:57 +02:00
Manuel de Ruiter
6154ae5b28 Implement Countable 2012-04-22 16:16:11 +02:00
William DURAND
e344609bcb [DependencyInjection] Fixed composer.json
'recommend' section no more exists
2012-04-22 15:37:21 +02:00
Hugo Hamon
6dddb6b850 [HttpFoundation] removed useless else clause in Request::getPort() method. 2012-04-21 13:27:44 +02:00
Fabien Potencier
03ad8c932d merged branch jalliot/pdo_tests (PR #4051)
Commits
-------

e509e6f Skip PDOSessionHandlerTest if PDO SQLite is not available

Discussion
----------

Skip PDOSessionHandlerTest if PDO SQLite is not available
2012-04-21 12:54:01 +02:00
Fabien Potencier
514f822b00 merged branch jalliot/patch-3 (PR #4044)
Commits
-------

128ac26 Added missing '%' in DI component README

Discussion
----------

Added missing '%' in DI component README

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

by ruian at 2012-04-21T10:37:12Z

@fabpot PR ok
2012-04-21 12:53:38 +02:00
Jordan Alliot
e509e6ffd1 Skip PDOSessionHandlerTest if PDO SQLite is not available 2012-04-21 12:28:57 +02:00
Bilal Amarni
4a9a9d6eb8 fixed typo 2012-04-21 11:25:22 +02:00
Bilal Amarni
167597c0bd removed unused use statement 2012-04-21 11:24:50 +02:00
Markus Bachmann
40df3bf86f Add mongodb session storage
Some changes based on @stof and @stloyd suggestions

Some changes based on @vicb suggestions

Some changes based on @vicb suggestions

Add changes
2012-04-20 19:19:55 +02:00
Jordan Alliot
128ac26334 Added missing '%' in DI component README 2012-04-20 18:51:25 +03:00
Fabien Potencier
ae6ccfa94b fixed typo 2012-04-20 16:24:24 +02:00
Gordon Franke
1137670bfa add resource links for the console component 2012-04-20 16:59:51 +03:00
Fabien Potencier
736886688f merged branch vicb/finder/regex (PR #4028)
Commits
-------

f728463 [Finder] Fixes in the iterators

Discussion
----------

[Finder] Fixes in the iterators

fix: #4023
ref: #4011

- Fix regex detection
- call `file_get_contents()` only once (vs once per pattern)

[![Build Status](https://secure.travis-ci.org/vicb/symfony.png?branch=finder/regex)](http://travis-ci.org/vicb/symfony)

@gajdaw thoughts ?
2012-04-20 14:18:46 +02:00
Fabien Potencier
cdca62559d merged branch jfsimon/issue-3896 (PR #4029)
Commits
-------

686653a [HttpKernel] Fixed wache vary write (fixes #3896).

Discussion
----------

[HttpKernel] Fixed cache vary write (fixes #3896).

Bug fix: yes
Feature addition: no
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets: #3896

Same as https://github.com/symfony/symfony/pull/4001, but for write method.
2012-04-20 14:03:12 +02:00
jeanfrancois.simon
686653ae3c [HttpKernel] Fixed wache vary write (fixes #3896). 2012-04-20 13:29:15 +02:00
Victor Berchet
f72846305e [Finder] Fixes in the iterators 2012-04-20 12:38:15 +02:00
Fabien Potencier
539634cbaa merged 2.0 2012-04-20 12:18:51 +02:00
Drak
70a6de9896 [EventDispatcher] Remove data property 2012-04-20 14:49:32 +05:45
Drak
4ff92b93ce [EventDispatcher] Added generic event class. 2012-04-20 14:49:22 +05:45
Fabien Potencier
56a4ab7903 made some private protected as many users needs to override the default implementation anyway (closes #3942) 2012-04-20 09:20:31 +02:00
Fabien Potencier
2786f21822 fixed CS 2012-04-20 09:05:48 +02:00
Fabien Potencier
74cc38004b merged branch gajdaw/finder_search_by_contents (PR #4011)
Commits
-------

218813c [Finder] contains(), notContains()
33e119a Merge branch 'master' of https://github.com/symfony/symfony into finder_search_by_contents
082d86e [Finder] content(), notContent() methods

Discussion
----------

[Finder] search by contents

Bug fix: no
Feature addition: yes
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets: -
Todo: -

Sometimes I need to search for files containing some text:

```
$finder
    ->content('lorem')->notContent('ipsum')
    ->content('/^Begining/m')->notContent('/the end$/m');
```

I don't know how to tests exceptions thrown by `file_get_contents()` calls.

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

by gajdaw at 2012-04-19T15:53:05Z

To keep it as close as possible to `name` and `notName`.
2012-04-20 09:04:33 +02:00
Fabien Potencier
3e2b39dd21 merged branch michal-pipa/symlink-fix (PR #4012)
Commits
-------

94bee7a [Filesystem] symlink() creates target directories

Discussion
----------

[Filesystem] symlink() creates target directories

Bug fix: yes
Feature addition: no
Backwards compatibility break: no
Symfony2 tests pass: yes [![Build Status](https://secure.travis-ci.org/michal-pipa/symfony.png?branch=symlink-fix)](http://travis-ci.org/michal-pipa/symfony)
Fixes the following tickets: #3967
Todo: -

Changed symlink() method behavior to recursively create target directory if it does not exist. It makes Filesystem component methods more consistent since copy() does the same. It is also more convenient.

Also mirror() fails to create symlink in non-existent directory (if we don't want to change symlink(), than we need to fix mirror()).

Fixes: #3967
2012-04-20 08:50:33 +02:00
Fabien Potencier
866b13e5fc merged branch Crell/flatten-exception (PR #4017)
Commits
-------

1c290d7 Add unit tests for FlattenException::getLine() and FlattenException::getFile().
a22f0cd Enhance FlattenException to include more methods from Exception.  That allows it to be used in place of Exception in more places.

Discussion
----------

[HttpKernel] Enhance FlattenException to include more methods from Exception.

I'm trying to retrofit FlattenException into Drupal, in places where Drupal expects an Exception.  That doesn't quite work though, as FlattenException only has some of the methods from Exception.  I'm not entirely clear why it only has some, but this PR adds getFile() and getLine() so that it's a more ready drop-in.  I did not add them to the toArray() method for fear of breaking BC somewhere, but that could be done as well no doubt if folks felt it was appropriate.

Note: While the parts of Drupal in question will get rewritten later anyway, I think having this information exposed is a good thing in general for logging purposes if nothing else.  It's already possible to dig it out of the trace, so this is just an improved "Developer eXperience" (DX).

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

by fabpot at 2012-04-20T04:34:54Z

I'm +1 to make `FlattenException` more "compatible" with `Exception`. Can you add the other missing methods? Also, you need to populate the `$this->file` and `$this->line` value in the constructor.

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

by Crell at 2012-04-20T04:48:40Z

I knew I was forgetting something obvious...

According to http://us.php.net/manual/en/class.exception.php, I think the only other missing method is http://us.php.net/manual/en/exception.gettraceasstring.php.  I'm not sure how useful that is, but I can try to approximate it if you think it's necessary.  (Honestly I've never used that method on an exception myself.)

I should probably add some tests, too.  Stand by for those.

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

by Crell at 2012-04-20T05:00:28Z

Now includes unit tests to make sure I didn't do anything stupid this time.  I'll hold off on getTraceAsString() for now unless you think it's needed.  (I'm not sure it is since it's harder to do and IMO less useful.)
2012-04-20 07:41:36 +02:00
Fabien Potencier
b71d42a65a tweaked previous commit 2012-04-20 07:18:49 +02:00
Roger Webb
23707bd8d6 Added Method Call, Factory Class and File Include examples. 2012-04-20 07:18:17 +02:00
Larry Garfield
1c290d7af2 Add unit tests for FlattenException::getLine() and FlattenException::getFile(). 2012-04-19 23:59:28 -05:00
Larry Garfield
a22f0cdc32 Enhance FlattenException to include more methods from Exception. That allows it to be used in place of Exception in more places. 2012-04-19 23:45:54 -05:00
Michał Pipa
94bee7a3d5 [Filesystem] symlink() creates target directories 2012-04-19 19:42:07 +02:00
Włodzimierz Gajda
218813cb50 [Finder] contains(), notContains() 2012-04-19 18:19:17 +02:00
Włodzimierz Gajda
33e119a7dc Merge branch 'master' of https://github.com/symfony/symfony into finder_search_by_contents 2012-04-19 17:35:33 +02:00
Włodzimierz Gajda
082d86e3a0 [Finder] content(), notContent() methods 2012-04-19 17:34:50 +02:00
Victor Berchet
e0e451feb8 Fix umasks in chmod() calls 2012-04-19 15:47:04 +02:00
Fabien Potencier
4d8461f243 merged branch Seldaek/filesystemfixes (PR #4008)
Commits
-------

748bbe1 Make windows test run on windows only
e7f1295 [Filesystem] Fix Filesystem::chmod to apply umask properly
5c059aa Fix chmod() calls to apply umask
13c07d1 [Filesystem] Fix typo
c578d3a [Filesystem] Fix makePathRelative on windows with mixed paths, fix tests

Discussion
----------

[Filesystem][Others] Fix chmod method and all calls to chmod throughout the framework

Fixes the issue I mentioned in #4004 - basically php's chmod() does not apply the umask by default (unlike mkdir's mode arg which is masked by umask, from which I guess the confusion comes from).

So I expanded all cache writes and such to 0666 when they were 0644, and then mask it against umask, so that we respect the user settings a bit better.

Also fixed Filesystem::chmod which completely ignored the umask argument before.

Fixed a few tests on windows too.
2012-04-19 14:16:42 +02:00
Jordi Boggiano
748bbe17b8 Make windows test run on windows only 2012-04-19 13:51:15 +02:00
Jordi Boggiano
e7f129576e [Filesystem] Fix Filesystem::chmod to apply umask properly 2012-04-19 13:35:44 +02:00
Jordi Boggiano
5c059aa121 Fix chmod() calls to apply umask 2012-04-19 13:35:17 +02:00
Fabien Potencier
086b73506d merged branch pvanliefland/ticket_1692 (PR #3945)
Commits
-------

8bdff01 [DoctrineBridge][Form] added collection guess for array Doctrine type and array constraint type

Discussion
----------

[Form] [DoctrineBridge] Better field type guessing for array doctrine type and array validator type

Bug fix: no
Feature addition: yes
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets: #1692
Todo: -

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

by bschussek at 2012-04-18T08:45:17Z

Could you please add an entry to the CHANGELOG and squash your commits into one?

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

by pvanliefland at 2012-04-18T17:20:39Z

Done
2012-04-19 13:13:47 +02:00
Jordi Boggiano
13c07d1469 [Filesystem] Fix typo 2012-04-19 12:37:59 +02:00
Jordi Boggiano
c578d3ac57 [Filesystem] Fix makePathRelative on windows with mixed paths, fix tests 2012-04-19 12:37:15 +02:00
Fabien Potencier
811751e147 merged branch rouffj/fix-3929 (PR #4004)
Commits
-------

5fa7ec2 Fix #3929

Discussion
----------

Fix #3929
2012-04-19 12:14:24 +02:00
Joseph Rouff
5fa7ec2acb Fix #3929 2012-04-19 12:10:32 +02:00
Fabien Potencier
684e5025ad merged branch Seldaek/asseturl (PR #4002)
Commits
-------

725423c Add test to prevent regressions
3b2f542 Fix asset generation with an empty asset

Discussion
----------

[Templating] Return base URL when an empty path is given to asset()

I think it's straightforward enough in the patch. Tests pass. It's quite useful to generate the base path to send to a JS frontend.
2012-04-19 12:03:59 +02:00
Fabien Potencier
460c181951 merged branch evillemez/master (PR #3557)
Commits
-------

b7b26af [DependencyInjection] Added, implemented and tested IntrospectableContainerInterface::initialized()

Discussion
----------

[DependencyInjection] IntrospectableContainerInterface::initialized()

Bug fix: no
Feature addition: yes
Backwards compatibility break: no
Symfony2 tests pass: yes

Added, implemented and tested `IntrospectableContainerInterface::initialized()`, which allows checking for whether or not a service id has actually been loaded, without forcing it to load.  This could be implemented in several places to prevent loading a service when it's only needed if it has been previously loaded - for example the SwiftmailBundle's event listener for the `kernel.terminate` event, which currently forces Swiftmail to load on every request to check for messages to send, even if it was not previously loaded.

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

by fabpot at 2012-03-11T09:10:32Z

Do you have any other examples in mind where it would be useful?

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

by stof at 2012-03-11T12:39:22Z

@fabpot 2 exemples:

- the Swiftmailer listener to avoid loading the initialization code of Swiftmailer in each kernel.terminate event just to check that there is no pending message in the spool (if the spool has never been retrieved, it cannot have messages) (this is the use case we discussed on IRC last night)
- closing Doctrine connections and Monolog handlers in the shutdown method without creating them if they were not used

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

by stof at 2012-03-11T12:39:53Z

However, I don't like the name of the method

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

by lsmith77 at 2012-03-11T13:26:34Z

sounds very useful

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

by evillemez at 2012-03-11T17:00:39Z

@fabpot another example:

* Forcing a session to write early, if it was previously loaded - but not having to load the session to check, thus potentially forcing a database connection (if that's how the session is being handled) when it's not needed.

@stof Would more or less verbose be better?  Like, `isServiceLoaded()` or just `loaded()`.... or a better word than "loaded" ? :)

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

by stof at 2012-03-11T17:03:11Z

@evillemez My issue is the word ``loaded``. I don't think it is clear about what it means here

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

by lsmith77 at 2012-03-11T17:04:24Z

one thing we should also keep in mind here is the scope of the service.

BTW: there are also a couple of CS violations in your PR

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

by fabpot at 2012-03-11T17:07:43Z

@stof: I agree that we should think of a better name: `initialized()` or `exists()` (to differentiate from `has()`)?

@evillemez: After choosing the name, can you work on actually using the new method for some of the use cases mentioned in this PR?

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

by lsmith77 at 2012-03-11T17:20:12Z

what i meant with "scope" was if we are only talking about services instantiated in the current scope? but i guess there is no way to handle anything else anyway.

as for name .. i think ``instantiated()`` is more fitting than ``initialized()``.
``exists()`` could be confused with ``has()`` imho

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

by stof at 2012-03-11T17:26:06Z

The current implementation only works for container-scoped services. It does not make sense  for prototyped-scope services anyway (as the container does not keep them) but supporting scoped services will be tricky IMO

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

by mvrhov at 2012-03-11T17:34:21Z

hasBeen(Used|Called|Initialized),

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

by evillemez at 2012-03-11T17:54:43Z

The next day or two I'm only around for an hour or so here and there, I may be a little slow to respond.

@stof @lsmith77 I agree with either `instantiated()` or `initialized()`, I also think `exists()` might be easily confused with `has()`

@lsmith77 Besides the opening/closing brace placements, was there anything else?

@fabpot I would happily implement it in the Swiftmail bundle - as of now that's the only area where I know absolutely it would be useful.  The Session example I mentioned was an issue I ran into working on another app in another framework, and I'm not familiar yet with the internals of the Monolog/Doctrine Bundles.  But if people could point me in the right direction I'd be willing to check it out.

I'm still relatively new to some of the Symfony2 internals, so if there are obvious things I'm missing, please don't hesitate to point them out. :)

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

by evillemez at 2012-03-11T18:00:29Z

@lsmith77 Oh... I think there were some tab issues I didn't see in my editor, I'll fix those too.

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

by stof at 2012-03-11T18:13:03Z

The places where it should be used for Doctrine and Monolog are in separate repos anyway so it cannot be part of this PR

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

by evillemez at 2012-03-12T03:38:50Z

Any thoughts on `instantiated` vs `initialized`?  I'm leaning towards `initialized`.

How should I proceed, close this request and submit another with the changed name and fixed CS violations?

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

by fabpot at 2012-03-12T07:41:11Z

`initialized()` looks fine to me. Make your changes, squash your commits and then force the push to your branch (the PR will be updated automatically).

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

by evillemez at 2012-03-12T20:49:17Z

I was about to squash my commits to update this, but it just occurred to me that I hadn't considered the interface.  Does anyone feel this method `initialized()` should be defined in ContainerInterface as well?  It seems like it's generic enough that it would make sense.  But I'm not immediately aware if this would cause BC breaks.

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

by fabpot at 2012-03-13T11:34:33Z

We cannot break BC for `ContainerInterface` as this is marked with the `@api` tag.

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

by henrikbjorn at 2012-03-13T12:34:42Z

Is it a BC break if we add a method? i thought only changing the already written methods would be a BC break.

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

by ooflorent at 2012-03-13T12:39:44Z

@henrikbjorn It will raise a fatal error if the method isn't implemented in existing class.

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

by lsmith77 at 2012-03-13T13:06:26Z

we could however add a new interface that extends from the previous one.

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

by evillemez at 2012-03-13T15:40:39Z

Are the BC breaks we are worried about for compatibility just within the Symfony repo - or in general in case others have implemented the interface elsewhere?  As far as Symfony is concerned, the only class I can find that implements `ContainerInterface` is `Container`, so adding the method shouldn't be an issue.

If it's an issue of principle, in case others may have implemented the `ContainerInterface`, then... yeah, it's a break, and maybe should be left out.  I suppose this would mean that other places in code that type hint for `ContainerInterface` would have to change the type hint to `Container` if they want to implement the `initialized()` method.

Is this more or less acceptable than updating the interface?

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

by evillemez at 2012-03-14T19:17:27Z

Hadn't properly squashed commits, just fixed.

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

by evillemez at 2012-03-15T14:06:38Z

I'm done with this PR, unless there is a consensus that I should also implement `Container::initialized()` in `ContainerInterface`.

Anything else I need to do?

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

by Seldaek at 2012-03-15T15:41:44Z

@evillemez the common pattern for BC is to add a new interface, say IntrospectableContainerInterface or something, that extends ContainerInterface, then you can type-hint that without restricting use of competing implementations of the Container class.

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

by stof at 2012-04-03T22:30:51Z

@evillemez Please update this PR. It conflicts with master because of the move of tests. And the new interface suggested by @Seldaek is a good idea IMO

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

by evillemez at 2012-04-04T14:57:29Z

@Stof I may not be able to get to this until the end of the week, but I'll do it as soon as I can.

I'll rebase against the current master, and add/implement the interface.  Is `IntrospectableContainerInterface ` as suggested by @Seldaek ok with everyone?

Are there other features that we can think of that would be useful for this new interface?  I don't want to start a precedent of adding a new interface for every new method that comes up... I understand it makes sense for not breaking backwards compatibility for something previously marked as stable, but still, it's yet another file that will likely be included on every request.

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

by stof at 2012-04-04T15:35:15Z

@evillemez classes used on every requests can be added to some cached bootstrap files (which are loaded during the ``$kernel->loadClassCache()`` call in your front controller) to avoid including many files through the autoloader. And for even better performances in prod, the solution is to use APC with ``apc.stat = 0``, as advocated by @lsmith77

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

by evillemez at 2012-04-15T19:00:07Z

Ok, rebased against current master and implemented the interface.  I didn't mark it as `@api` because I think we may want to consider if there's any other functionality that could be implemented there before declaring it stable.

Sorry for the delay.  My wife and I are in the process of buying a house, and some unexpected things have come up.

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

by fabpot at 2012-04-18T10:59:01Z

Can you rebase before I merge? Thanks.
2012-04-19 11:56:35 +02:00
Jordi Boggiano
725423c4c4 Add test to prevent regressions 2012-04-19 11:54:19 +02:00
Fabien Potencier
d599442cc1 merged branch jfsimon/issue-3896 (PR #4001)
Commits
-------

cd783fb [HttpKernel] Fixed cache vary lookup (fixes #3896).

Discussion
----------

[HttpKernel] Fixed cache vary lookup (fixes #3896).

Bug fix: yes
Feature addition: no
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets: #3896
2012-04-19 11:49:29 +02:00
Jordi Boggiano
3b2f5428c3 Fix asset generation with an empty asset 2012-04-19 11:46:54 +02:00
jeanfrancois.simon
cd783fba06 [HttpKernel] Fixed cache vary lookup (fixes #3896). 2012-04-19 11:41:27 +02:00
Bernhard Schussek
ccd6bbc0a1 [Form] Removed extra CSRF field on collection prototype 2012-04-19 11:00:26 +02:00
Hugo Hamon
b19468e15b [HttpFoundation] changed return type from int to integer in ParameterBag::getInt() method. 2012-04-19 01:11:41 +02:00
Marc Abramowitz
1863b28e97 Fix typo: Resonse -> Response 2012-04-18 13:38:08 -07:00
Evan Villemez
b7b26af9c5 [DependencyInjection] Added, implemented and tested IntrospectableContainerInterface::initialized() 2012-04-18 15:15:26 -04:00
pierre
8bdff01f17 [DoctrineBridge][Form] added collection guess for array Doctrine type and array constraint type
Fixes #1692
2012-04-18 19:15:40 +02:00
Hugo Hamon
9cd0b03aea [HttpFoundation] fixed phpdoc in ParameterBag::getInt() method. 2012-04-18 17:30:08 +02:00
Fabien Potencier
065632b059 merged branch gajdaw/finder_comparator_not_equal (PR #3974)
Commits
-------

1b320c8 [Finder][Comparator] not equal operator

Discussion
----------

[Finder][Comparator] not equal operator

Bug fix: no
Feature addition: yes
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets: -
Todo: -
2012-04-18 17:20:26 +02:00
Hugo Hamon
64a0abe577 [HttpFoundation] fixed CS in ParameterBag class. 2012-04-18 17:10:56 +02:00
Włodzimierz Gajda
1b320c83c3 [Finder][Comparator] not equal operator 2012-04-18 13:59:47 +02:00
Fabien Potencier
85bb439356 merged branch bschussek/issue3878 (PR #3923)
Commits
-------

6e4ed9e [Form] Fixed regression: bind(null) was not converted to an empty string anymore
fcb2227 [Form] Deprecated FieldType, which has been merged into FormType
bfa7ef2 [Form] Removed obsolete exceptions
2a49449 [Form] Simplified CSRF mechanism and removed "csrf" type

Discussion
----------

[Form] Merged FieldType into FormType

Bug fix: no
Feature addition: no
Backwards compatibility break: yes
Symfony2 tests pass: yes
Fixes the following tickets: #3878
Todo: update the documentation on theming

![Travis Build Status](https://secure.travis-ci.org/bschussek/symfony.png?branch=issue3878)

This PR is a preparatory PR for #3879. See also #3878.

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

by juliendidier at 2012-04-13T14:25:19Z

What's the benefit ?

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

by henrikbjorn at 2012-04-13T14:26:40Z

why `input_widget` ? and not just `widget`

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

by Burgov at 2012-04-13T14:27:49Z

@juliendidier dynamic inheritance is now obsolete which fixes some other issues

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

by stloyd at 2012-04-13T14:37:26Z

What about __not__ breaking API so *badly* and leaving `FieldType` which will be simple like (with marking as deprecated):

```php
<?php

class FieldType extends AbstractType
{
    public function getParent(array $options)
    {
        return 'form';
    }

    public function getName()
    {
        return 'field';
    }
}

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

by bschussek at 2012-04-13T14:43:41Z

@stloyd That's a very good idea.

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

by mvrhov at 2012-04-13T17:41:21Z

IMHO what @stloyd proposed sounds like a good idea, but removing FieldType class, if #3903 will come into life might ensure that more forms will broke and people will check them thoroughly.

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

by r1pp3rj4ck at 2012-04-13T18:46:08Z

@bschussek looks great, but I'm concerned about how quickly will the third-party bundles adapt to this BC break. I hope really quick, because if they don't the whole stuff will be useless :S of course it's not your problem to solve.

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

by stof at 2012-04-13T18:50:32Z

@r1pp3rj4ck there is already another BC break requiring to update custom types for Symfony master. So third party bundles already have to do some work.

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

by r1pp3rj4ck at 2012-04-13T18:59:37Z

@stof which one? I've looked into @bschussek 's RFC about these [foo].bar stuff, but it's not yet implemented. Are you refering to this or another one I've missed?

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

by stof at 2012-04-13T19:04:06Z

@r1pp3rj4ck the change regarding default options

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

by r1pp3rj4ck at 2012-04-13T19:06:10Z

@stof oh, I forgot that one. Weird thing is that I've already changed my default options today and still forgetting these stuff :D

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

by bschussek at 2012-04-14T08:58:29Z

I restored and deprecated FieldType now. I'd appreciate further reviews.

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

by stloyd at 2012-04-14T09:02:32Z

Maybe we should try to avoid this BC in templates ? What do you think about similar move like with `FieldType` ? (hold old, but inside just render new)

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

by bschussek at 2012-04-14T09:07:22Z

@stloyd You mean for those cases where people explicitely render the block "field_*"? We can do that.

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

by stloyd at 2012-04-14T09:09:45Z

@bschussek Yes I mean this case =) Sorry for not being explicit, I need some coffee I think =)

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

by bschussek at 2012-04-17T14:45:35Z

I added the field_* blocks again for BC. Could someone please review again? Otherwise this can be merged.

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

by Burgov at 2012-04-17T15:11:16Z

@bschussek I'm not sure what has changed to cause this, but if I try out your branch on our forms, if I leave the value of an input empty, eventually the reverseTransform method receives a null value, rather than a '' (empty string) value, as on the current symfony master.

DateTimeToLocalizedStringTransformer, for example, will throw an Exception if the value is not a string

```php
if (!is_string($value)) {
   throw new UnexpectedTypeException($value, 'string');
}
```

Other than that, all forms render just the same as they do on symfony master

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

by bschussek at 2012-04-17T15:30:29Z

@Burgov Fixed.
2012-04-18 12:50:00 +02:00
Till Klampaeckel
962f975a6f Use Memcache::replace() first instead of Memcache::set(): http://docs.php.net/manual/en/memcache.replace.php#100023 2012-04-18 12:17:02 +02:00
Fabien Potencier
a47a5aa52c merged branch umpirsky/issue-3379 (PR #3922)
Commits
-------

24bd8f4 Added missing dot to translation messages.
4bff221 Added missing dot to translation messages.
7454894 Added missing dot to translation messages.
6e90c50 Updated upgrade instructions.
7e21dd1 Added missing dot to translation messages.

Discussion
----------

Issue 3379

This should fix [issues 3379](https://github.com/symfony/symfony/issues/3379)

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

by stof at 2012-04-13T15:06:32Z

Your branch conflicts with master. Please rebase it

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

by umpirsky at 2012-04-13T19:11:54Z

@stof I tried to rebase, I'm not sure if I did everything right. Is it ok now?

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

by umpirsky at 2012-04-13T19:12:06Z

@stof I tried to rebase, I'm not sure if I did everything right. Is it ok now?

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

by mvrhov at 2012-04-13T19:19:34Z

IMHO no, because there are commits from other people. Did you follow the [instructions](http://symfony.com/doc/current/contributing/code/patches.html#id1)?

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

by stof at 2012-04-13T19:36:53Z

@mvrhov commits from others ?

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

by umpirsky at 2012-04-13T19:41:53Z

@stof There were some, so I reverted. Now I'm trying again following instructions from Symfony doc.

I come to this:

```
$ git push origin issue-3379
To git@github.com:umpirsky/symfony.git
 ! [rejected]        issue-3379 -> issue-3379 (non-fast-forward)
error: failed to push some refs to 'git@github.com:umpirsky/symfony.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.
```

And I don't know how to fix this. Any idea?

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

by stof at 2012-04-13T19:43:45Z

@umpirsky when you rebase, it is logical to need to force the push

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

by umpirsky at 2012-04-13T19:44:38Z

@stof I did `git push -f origin issue-3379`. I hope it's fixed now.

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

by maoueh at 2012-04-13T20:39:34Z

@umpirsky seems better than last time I checked :)

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

by umpirsky at 2012-04-13T20:43:04Z

@maoueh Is it good enough? :)

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

by maoueh at 2012-04-13T20:51:27Z

@umpirsky At least, the rebase seems good enough :D As for the subject of the PR, I don't pronounce myself ;)

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

by vicb at 2012-04-13T20:53:23Z

you should probably squash the commits
2012-04-18 11:57:20 +02:00
Fabien Potencier
99f8a3ce97 Merge branch '2.0'
* 2.0:
  Revert "merged branch jakzal/2.0-StaticMethodLoaderFix (PR #3937)"
  fixed CS
2012-04-18 11:42:52 +02:00
Fabien Potencier
29a41ec13b Revert "merged branch jakzal/2.0-StaticMethodLoaderFix (PR #3937)"
This reverts commit 0078faa84b, reversing
changes made to 098b934410.
2012-04-18 11:42:27 +02:00
Fabien Potencier
35e6c8ed0f fixed typo 2012-04-18 11:06:34 +02:00
Fabien Potencier
10944db804 fixed previous merge 2012-04-18 11:03:36 +02:00
Fabien Potencier
580c8fa875 fixed CS 2012-04-18 10:41:11 +02:00
Fabien Potencier
92b0824900 merged 2.0 2012-04-18 10:38:31 +02:00
Fabien Potencier
8dc25abe1b merged branch stealth35/locale_intl_error_name (PR #3959)
Commits
-------

5799d25 Add BOGUS UErrorCode test
6f9c05d [Locale] Complete Stub with intl_error_name

Discussion
----------

[Locale] Complete StubIntl with the missing intl_error_name

    Bug fix: yes
    Feature addition: no
    Backwards compatibility break: no
    Symfony2 tests pass: yes
    Fixes the following tickets: -
    Todo: -
2012-04-18 10:38:01 +02:00
Fabien Potencier
545c6f28f2 merged branch bschussek/issue3228 (PR #3317)
Commits
-------

5208bbe [Validator] Fixed typo, updated CHANGELOG and UPGRADE
dc059ab [Validator] Added default validate() implementation to ConstraintValidator for BC
6336d93 [Validator] Renamed ConstraintValidatorInterface::isValid() to validate() because of the lack of a return value
46f0393 [Validator] Removed return value from ConstraintValidatorInterface::isValid()

Discussion
----------

[Validator] Renamed ConstraintValidatorInterface::isValid() to validate() and removed return value

Bug fix: no
Feature addition: no
Backwards compatibility break: **YES**
Symfony2 tests pass: yes
Fixes the following tickets: -
Todo: update the documentation

![Travis Build Status](https://secure.travis-ci.org/bschussek/symfony.png?branch=issue3228)

Before I begin, this PR is up for discussion.

I removed the return value of ConstraintValidator::isValid() because it wasn't used anymore within the framework. Removing it also means a simplification for userland implementations. Already now the validation component only depended on violation errors being present for deciding whether the validation was considered failed or not.

Because the name `isValid` does not make a lot of sense without a return value, I changed it to `validate`. Note that this affects an interface (ConstraintValidatorInterface) previously marked with `@api` by us!

What do you think about this change?

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

by stof at 2012-02-09T17:51:38Z

@bschussek IIRC, the Validator component was part of the components that are not considered as stable for 2.0 (there is 4 of them IIRC, including Config, Security and Form) so changing the interface should not be an issue here

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

by lsmith77 at 2012-02-09T17:54:55Z

No it was .. form wasn't:
http://symfony.com/doc/2.0/book/stable_api.html

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

by rdohms at 2012-02-10T13:23:32Z

I fail to see the value of the BC in this case.
Just because the framework does not use given functionality anymore is not reason to drop it, since all of this was clearly proposed as a "component" to be used in other projects. Other implementations of validator in other projects might actually depend on this.

Is it possible to just add a new value and have both functionalities available?

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

by stof at 2012-02-10T13:25:12Z

@rdohms the point is that the return value is confusing. Someone may return ``false`` by thinking it will mark the field as invalid (which is implied by the name ``isValid``) whereas it is not the case at all

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

by bschussek at 2012-02-10T13:30:13Z

Exactly. UniqueEntityValidator for example always returned `true` and nobody ever noticed.

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

by beberlei at 2012-02-10T13:53:03Z

@bschussek but its not a bug, setting the execution context failure is enough. returning false would lead to a second error message being evicted. This is the weird problem of the API imho

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

by bschussek at 2012-02-10T13:54:49Z

@beberlei This has already been fixed.

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

by stof at 2012-02-10T13:59:59Z

@beberlei in the master branch, errors are not duplicated anymore as the return value is simply ignored.

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

by Tobion at 2012-02-10T14:29:03Z

I'm +1. If people are concerned about this strong BC break we could maybe add a fallback for the majority.
Most people propably have extended the ConstraintValidator and not used the interface directly. So we can change the Interface and at the same time provide a default proxy method in ConstraintValidator for validate. I.e.

    public function validate($value, Constraint $constraint)
    {
        $this->isValid($value, $constraint);
    }

Thus all people who have extended ConstraintValidator won't notice a BC break.

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

by hades200082 at 2012-02-10T16:10:31Z

Could you not have both validate and isValid as separate methods with distinct purposes?

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

by stof at 2012-02-10T16:55:12Z

@hades200082 which distinct purposes ?

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

by hades200082 at 2012-02-10T17:02:57Z

One should actually validate.  The other should return whether it is valid or not as a bool.

Even if isValid calls validate to determine this surely they are distinct purposes?  doing it this way would not require a break to BC but the existing components in the framework could be switched to use validate.

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

by bschussek at 2012-02-10T17:10:50Z

@hades200082 Validators are stateless. They don't "remember" whether they validated successfully or not.

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

by hades200082 at 2012-02-10T17:13:25Z

Maybe they should?  Would save revalidating every time

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

by stof at 2012-02-10T17:16:10Z

@hades200082 how could they be stateless ? you can use the same instance to validate several values. For instance, the UniqueEntityValidator is a service and so will be reused.

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

by fabpot at 2012-02-11T23:40:09Z

I would really like that we do not break BC in this case.

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

by stof at 2012-02-11T23:59:02Z

@fabpot there is also a BC break in the previous changes: the return value has no meaning at all now (it is not even considered by the GraphWalker.
Most 2.0 validator will continue working because of the new implementation of setMessage but I can provide the 2 broken cases:

```php
<?php

/**
 * This validator always set the message, even when it is valid to keep things simple.
 * This works fine in 2.0.x (as the return value is what makes the decision) but will
 * add a violation in 2.1 (setMessage adds the violation to keep things working for
 * cases setting the message only for invalid values, like the core used to do).
 */
public function isValid($value, Constraint $constraint)
{
    $this->setMessage($constraint->message);

    return true;
}

/**
 * This validator never set the message, failing with an empty message.
 * This works fine in 2.0.x (as the return value is what makes the decision) but will
 * not add the violation in 2.1.
 */
public function isValid($value, Constraint $constraint)
{
    return false;
}
```

The second one is clearly an edge case as it would absolutely not be user-friendly but the first one makes totally sense when using the 2.0.x API (with a boolean expression using the value of course)

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

by fabpot at 2012-02-12T00:11:19Z

I agree with you; I should probably have refused to merge the previous PR. And I think we need to reconsider this change. If not, why are we even bothering tagging stuff with the @api tag?

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

by bschussek at 2012-02-12T10:15:55Z

@stof I disagree with you. Setting an error message but not letting the validation fail is not how the API is supposed to work. Also the opposite was not meant to work, as it results in empty error messages. The third example is that a validator *had* to return true if it called `addViolation` directly. These cases show that the previous implementation was clearly buggy and needed to be fixed.

This PR is only a consequence that cleans the API up.

@fabpot IMHO validator was too young and not tried enough to be marked as stable. But as we can't change this anymore, I think the decision we have to make is

* BC/reliance on `@api` marks vs.
* API usability (also considering the coming LTR)

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

by bschussek at 2012-02-12T10:18:12Z

BTW @Tobion's suggestion could definitely make a transition easier.

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

by fabpot at 2012-02-15T10:26:10Z

@bschussek +1 for @Tobion's suggestion.

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

by Brouznouf at 2012-02-15T16:06:12Z

Could be nice to comment function as deprecated and/or trigger a E_USER_DEPRECATED error when using this method to prevent user calling this method.

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

by stof at 2012-02-15T16:09:37Z

trigger E_USER_DEPRECATED would be wrong as the kernel set the error reporting to ``-1`` and registers an error handler tuning all reported errors  to exception in debug mode, so it would be a BC break.
Commenting the function as deprecated in indeed possible

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

by rdohms at 2012-02-29T11:15:01Z

Went back to working on validators and it really makes me disagree with these changes a little more. Let me explain.

In the isValid method, i like to work with return early checks, so straight up i check some stuff and return early either true/false.

From the frameworks perspective true/false does not make a difference, but from a reader's perspective it adds a lot of value:

        if ($object->getId() === null) {
            return true;
        }

versus

        if ($object->getId() === null) {
            return;
        }

having the return true make it clear that in this case the object is valid for anyone who is reading my validator. i think this is a good practice to push forward.

Anyway, my 2 cents on it.

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

by stof at 2012-04-04T00:05:09Z

@fabpot what do you think about this ?

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

by bschussek at 2012-04-05T16:37:38Z

@rdohms: Still, how do you want to deal with the fact that the return value is ignored anyway?

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

by rdohms at 2012-04-06T06:51:07Z

@bschussek Nobody has to know? I would keep it as it is, i have noticed that returning false without any error messages does not get me the expected results, so it seems there is no harm in keeping the parctice of true/false even if it is misleading.

Other then that.. i would alter the code to self create a error message if false is returned, thus making true/false still work, but i'm guessing that's not what your vision says, even if i find it les readable and understandable. So yeah, just my opinioin.

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

by bschussek at 2012-04-06T07:02:53Z

@rdohms: Your opinion is appreciated. Self-creation of error messages is what we did before, unfortunately it's very hacky then to suppress the self-creation if you want to return false and add (potentially more than one) error messages yourself.

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

by bschussek at 2012-04-17T14:58:07Z

I added @Tobion's suggestion now. Can you please review again? Otherwise this is ready for merge.

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

by Tobion at 2012-04-17T15:05:16Z

Statement in changelog and upgrade is missing, or?
2012-04-18 10:19:30 +02:00
Bernhard Schussek
6e4ed9e177 [Form] Fixed regression: bind(null) was not converted to an empty string anymore 2012-04-17 17:29:15 +02:00
Bernhard Schussek
5208bbec8a [Validator] Fixed typo, updated CHANGELOG and UPGRADE 2012-04-17 17:19:12 +02:00
Bernhard Schussek
dc059abc3c [Validator] Added default validate() implementation to ConstraintValidator for BC 2012-04-17 16:54:40 +02:00
Bernhard Schussek
6336d9314e [Validator] Renamed ConstraintValidatorInterface::isValid() to validate() because of the lack of a return value 2012-04-17 16:46:43 +02:00
Bernhard Schussek
46f0393f70 [Validator] Removed return value from ConstraintValidatorInterface::isValid() 2012-04-17 16:46:43 +02:00
Bernhard Schussek
fcb2227ac9 [Form] Deprecated FieldType, which has been merged into FormType 2012-04-17 16:44:39 +02:00