Commit Graph

1188 Commits

Author SHA1 Message Date
Fabien Potencier
458ce6da2b Merge branch '2.2' into 2.3
* 2.2:
  Fix several instances of doubled words
  [Finder] Fix iteration fails with non-rewindable streams
  [Finder] Fix unexpected duplicate sub path related AppendIterator issue
  Added type of return value in VoterInterface.
  Fixed two bugs in HttpCache

Conflicts:
	src/Symfony/Component/Finder/Iterator/RecursiveDirectoryIterator.php
2013-05-27 16:49:21 +02:00
Fabien Potencier
1ead34ff8c Merge branch '2.1' into 2.2
* 2.1:
  Fix several instances of doubled words
  [Finder] Fix iteration fails with non-rewindable streams
  [Finder] Fix unexpected duplicate sub path related AppendIterator issue
  Added type of return value in VoterInterface.
  Fixed two bugs in HttpCache

Conflicts:
	src/Symfony/Component/Finder/Tests/FinderTest.php
2013-05-27 16:47:40 +02:00
John Bafford
52fed7b1d2 Fix several instances of doubled words
One in an exception; the rest in docblocks.
2013-05-26 14:42:07 -04:00
Jason Desrosiers
532160026f Fixed two bugs in HttpCache
1. 304 responses always send "Content-Type: text/html; charset=UTF-8"
header
I discovered that the HttpCache::handle method calls Response::prepare
after calling Response::isModified.  Response::isModified removes the
Content-Type header as it should, but Response::handle adds in the
default Content-Type header when none is set.  If the default
Content-Type is not the correct Content-Type, then the Content-Type in
the cache gets clobered.  I solved this problem by moving the
Response::isModified call after the Response::prepare call.  I updated
the testRespondsWith304WhenIfModifiedSinceMatchesLastModified and
testRespondsWith304WhenIfNoneMatchMatchesETag tests to verify that the
Content-Type header was not being sent for 304 responses.

2. Failure to invalidate cached entities referred to by the Location
header
I discovered that the Store::invalidate method was looking for Location
and Content-Location headers to invalidate, but it was looking in the
request headers instead of the response headers.  Because the
Store::invalidate method doesn't take a response, I decided it was
better to move this logic to the HttpCache::invalidate method instead.
I updated the testInvalidatesCachedResponsesOnPost test to verify that
Location headers are getting invalidated correctly.
2013-05-21 00:25:38 +02:00
Fabien Potencier
c8b2e111d2 bumped Symfony version to 2.3.0-DEV-DEV 2013-05-16 23:58:08 +02:00
Fabien Potencier
db719aea88 updated VERSION for 2.3.0-RC1 2013-05-16 22:52:46 +02:00
Fabien Potencier
b1c9fd20a1 removed versions in composer.json files 2013-05-13 16:36:40 +02:00
Fabien Potencier
f41ac06531 changed all version deps to accepts all upcoming Symfony versions 2013-05-13 09:33:35 +02:00
Fabien Potencier
1c61996a5b bumped Symfony version to 2.3.0-DEV-DEV 2013-05-10 21:19:19 +02:00
Fabien Potencier
5c73a4ce77 updated VERSION for 2.3.0-BETA2 2013-05-10 20:28:48 +02:00
Fabien Potencier
a00abf6cda fixed CS 2013-05-10 18:49:00 +02:00
Matthias Pigulla
97bee2050c Pass exceptions from the ExceptionListener to Monolog 2013-05-10 11:42:12 +02:00
Jakub Zalas
d5e7bdf5ee [HttpKernel] Fixed ContainerAwareHttpKernelTest. 2013-05-09 11:31:24 +01:00
Fabien Potencier
853f681957 fixed request scope issues (refs #7457) 2013-05-09 09:53:36 +02:00
Fabien Potencier
14cb1fa3d0 Merge branch '2.2'
* 2.2:
  bumped Symfony version to 2.1.11-DEV
  updated VERSION for 2.1.10
  update CONTRIBUTORS for 2.1.10
  updated CHANGELOG for 2.1.10
  fixed CS
  [Process] Cleanup tests & prevent assertion that kills randomly Travis-CI
  [Filesystem] Fix regression introduced in 10dea948

Conflicts:
	src/Symfony/Component/Process/Tests/AbstractProcessTest.php
2013-05-06 22:03:44 +02:00
Fabien Potencier
66433c5626 Merge branch '2.1' into 2.2
* 2.1:
  bumped Symfony version to 2.1.11-DEV
  updated VERSION for 2.1.10
  update CONTRIBUTORS for 2.1.10
  updated CHANGELOG for 2.1.10
  fixed CS
  [Process] Cleanup tests & prevent assertion that kills randomly Travis-CI
  [Filesystem] Fix regression introduced in 10dea948

Conflicts:
	src/Symfony/Component/Form/Extension/Core/DataTransformer/DataTransformerChain.php
	src/Symfony/Component/HttpKernel/Kernel.php
	src/Symfony/Component/HttpKernel/Profiler/RedisProfilerStorage.php
	src/Symfony/Component/Routing/Tests/Loader/XmlFileLoaderTest.php
2013-05-06 22:02:13 +02:00
Fabien Potencier
17a214a1c7 bumped Symfony version to 2.1.11-DEV 2013-05-06 21:45:53 +02:00
Fabien Potencier
7cced0a0e8 updated VERSION for 2.1.10 2013-05-06 13:01:51 +02:00
Fabien Potencier
9f522de0d5 fixed CS 2013-05-06 12:48:41 +02:00
Marco Pivetta
0aeed90e9a Dependency check should be on ProxyManager directly - fixes #7945 2013-05-06 11:51:21 +02:00
Fabien Potencier
dfd605fc1b merged branch Ocramius/feature/proxy-manager-bridge (PR #7890)
This PR was squashed before being merged into the master branch (closes #7890).

Discussion
----------

ProxyManager Bridge

As of @beberlei's suggestion, I re-implemented #7527 as a new bridge to avoid possible hidden dependencies.

Everything is like #7527 except that the new namespace (and possibly package/subtree split) `Symfony\Bridge\ProxyManager` is introduced

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #6140 (supersedes) #5012 #6102 (maybe) #7527 (supersedes)
| License       | MIT (attached code) - BSD-3-Clause (transitive dependency)
| Doc PR        | Please pester me to death so I do it

This PR introduces lazy services along the lines of zendframework/zf2#4146

It introduces an **OPTIONAL** dependency to [ProxyManager](https://github.com/Ocramius/ProxyManager) and transitively to [`"zendframework/zend-code": "2.*"`](https://github.com/zendframework/zf2/tree/master/library/Zend/Code).

## Lazy services: why? A comprehensive example

For those who don't know what this is about, here's an example.

Assuming you have a service class like following:

```php
class MySuperSlowClass
{
    public function __construct()
    {
        // inject large object graph or do heavy computation
        sleep(10);
    }

    public function doFoo()
    {
        echo 'Foo!';
    }
}
```

The DIC will hang for 10 seconds when calling:

```php
$container->get('my_super_slow_class');
```

With this PR, this can be avoided, and the following call will return a proxy immediately.

```php
$container->getDefinitions('my_super_slow_class')->setLazy(true);
$service = $container->get('my_super_slow_class');
```

The 10 seconds wait time will be delayed until the object is actually used:

```php
$service->doFoo(); // wait 10 seconds, then 'Foo!'
```

A more extensive description of the functionality can be found [here](https://github.com/Ocramius/ProxyManager/blob/master/docs/lazy-loading-value-holder.md).

## When do we need it?

Lazy services can be used to optimize the dependency graph in cases like:

 * Webservice endpoints
 * Db connections
 * Objects that cause I/O in general
 * Large dependency graphs that are not always used

This could also help in reducing excessive service location usage as I've explained [here](http://ocramius.github.com/blog/zf2-and-symfony-service-proxies-with-doctrine-proxies/).

## Implementation quirks of this PR

There's a couple of quirks in the implementation:

 * `Symfony\Component\DependencyInjection\CompilerBuilder#createService` is now public because of the limitations of PHP 5.3
 * `Symfony\Component\DependencyInjection\Dumper\PhpDumper` now with extra mess!
 * The proxies are dumped at the end of compiled containers, therefore the container class is not PSR compliant anymore

Commits
-------

78e3710 ProxyManager Bridge
2013-05-06 08:38:39 +02:00
Marco Pivetta
78e3710de8 ProxyManager Bridge 2013-05-06 08:38:39 +02:00
Fabien Potencier
c8525862f5 merged branch Seldaek/optim (PR #7931)
This PR was merged into the master branch.

Discussion
----------

A few optimizations

Commits
-------

ea633f5 [HttpKernel] Avoid updating the context if the request did not change
997d549 [HttpFoundation] Avoid a few unnecessary str_replace() calls
f5e7f24 [HttpFoundation] Optimize ServerBag::getHeaders()
2013-05-06 08:18:48 +02:00
Abdellatif AitBoudad
aecc495ffd fixed DocBlock 2013-05-06 01:35:31 +02:00
Jordi Boggiano
ea633f5787 [HttpKernel] Avoid updating the context if the request did not change
Due to the BC $this->setRequest() call in the onKernelRequest method, the
request is set twice every time in Symfony, and RequestContext::fromRequest
takes 1ms to run here so if we can skip one call it is a win.
2013-05-05 10:01:52 +02:00
Fabien Potencier
457e6abf77 bumped Symfony version to 2.3.0-DEV-DEV 2013-05-01 18:29:33 +02:00
Fabien Potencier
462b05847e updated VERSION for 2.3.0-BETA1 2013-05-01 17:41:17 +02:00
Fabien Potencier
6982f4b452 Merge branch '2.2'
* 2.2:
  [Swiftmailer] bumped allowed versions
  remove validation related headers when needed
  use while loop for iterating
  [Filesystem] copy() is not working when open_basedir is set
2013-05-01 09:15:46 +02:00
Fabien Potencier
9f02b05997 Merge branch '2.1' into 2.2
* 2.1:
  remove validation related headers when needed
  use while loop for iterating
  [Filesystem] copy() is not working when open_basedir is set

Conflicts:
	src/Symfony/Component/HttpKernel/Profiler/FileProfilerStorage.php
2013-05-01 09:15:36 +02:00
Bilal Amarni
2b554d77fa remove validation related headers when needed 2013-05-01 06:14:15 +02:00
Henrik Bjørnskov
fbe039bfca use while loop for iterating
The other method limits the number of results without taking the
constraints into account.

Fixes GH-7883
2013-05-01 05:56:28 +02:00
Fabien Potencier
9d5f10ce6f merged branch Koc/fatal-errors-logging (PR #6474)
This PR was squashed before being merged into the master branch (closes #6474).

Discussion
----------

[BC Break][Debug] #2042 implementation of fatal error logging

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

Commits
-------

7671e5c [BC Break][Debug] #2042 implementation of fatal error logging
2013-04-30 19:18:45 +02:00
Konstantin.Myakshin
7671e5c85d [BC Break][Debug] #2042 implementation of fatal error logging 2013-04-30 19:18:44 +02:00
Fabien Potencier
258ca07545 [HttpKernel] moved symfony/debug to be a requirement (to maintain BC as the code was part of HttpKernel before) 2013-04-30 09:25:51 +02:00
Bilal Amarni
6f7e35ea95 fixed a test on windows 2013-04-26 14:08:31 +02:00
Fabien Potencier
5047227489 moved the kernel listener compiler pass to HttpKernel to make it reusable (refs #6643) 2013-04-25 16:01:08 +02:00
Fabien Potencier
7ceb6e5c99 merged branch fabpot/browserkit-client (PR #7835)
This PR was merged into the master branch.

Discussion
----------

fixed Client implementation to return the right Response (closes #4475)

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

This PR addresses #4475 by trying to minimize the BC break impact.

Commits
-------

31cefc6 made some small tweaks
84ca34b alternate fix where we had accessor for the BrowerKit request/response instances
1005fd1 fixed Client implementation to return the right Response (closes #4475)
2013-04-25 08:32:27 +02:00
Fabien Potencier
31cefc642b made some small tweaks 2013-04-25 08:21:47 +02:00
Fabien Potencier
84ca34b45e alternate fix where we had accessor for the BrowerKit request/response instances 2013-04-24 22:00:56 +02:00
Fabien Potencier
1005fd1f79 fixed Client implementation to return the right Response (closes #4475) 2013-04-24 20:50:59 +02:00
Fabien Potencier
08d5d7c89b [HttpKernel] fixed failing tests 2013-04-23 11:21:35 +02:00
Henrik Bjørnskov
a1e5c6d359 Use REQUEST_TIME_FLOAT if available.
This will give a more correct initialization time when using the
DataCollectors without a KernelInterface implementation such as Silex.
2013-04-23 11:20:20 +02:00
Fabien Potencier
7ef73b14c6 [HttpKernel] added logging when an inline fragment cannot be rendered and ignore_errors is on 2013-04-22 15:39:53 +02:00
Pascal Borreli
0a12fd619e Fixed typos 2013-04-21 13:23:54 +00:00
Pascal Borreli
7cfa66159e Fixed PHPDocs 2013-04-21 12:26:17 +00:00
Fabien Potencier
da5022ccce [HttpKernel] added some comments to explain the rationale behind the previous merge change 2013-04-21 10:38:16 +02:00
Fabien Potencier
5ad5a5ca48 merged branch bamarni/http-kernel-lazy-classmap (PR #7322)
This PR was merged into the master branch.

Discussion
----------

[HttpKernel] made the classmap lazy-loaded

| Q             | A
| ------------- | ---
| Bug fix?      | [no]
| New feature?  | [yes]
| BC breaks?    | [no]
| Deprecations? | [no]
| Tests pass?   | [yes]
| License       | MIT

see https://github.com/symfony/symfony-standard/pull/437#issuecomment-14667140

Instead of managing this from HttpCache, I suggest to handle it at Kernel's level, what do you think?

Commits
-------

2aefe21 [HttpKernel] made the classmap lazy-loaded
2013-04-21 10:36:53 +02:00
Fabien Potencier
e03e2cd0fa [HttpKernel] optimized previous merge 2013-04-21 09:48:28 +02:00
Fabien Potencier
2f3b33a630 merged branch guilhermeblanco/client_ip_fix (PR #7559)
This PR was squashed before being merged into the master branch (closes #7559).

Discussion
----------

[HttpFoundation] [HttpKernel] Internal sub-requests should have X-Forwarded-For header providing real client IP

This is a better alternative to fix issue highlighted in #7554 and #7557.

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #7554, #7557
| License       | MIT

When dealing with inline fragment renderer, it emulates an internal request by overriding the REMOTE_ADDR on Request. This is true, since conceptually request came from local server.
The problem that this introduces is that overriding the server value, it turns into an impossible state to retrieve the real client ip, only returning the local server IP (which is hardcoded to 127.0.0.1).

This patch takes the same approach as a Varnish call (it behaves the exact same way, reusing all code built for handling client ip handling on sub-requests), populating the X-Forwarded-For header and also making getClientIp smarter by removing possible local IP addresses from being considered as the client IP address.

Commits
-------

773e109 [HttpFoundation] [HttpKernel] Internal sub-requests should have X-Forwarded-For header providing real client IP
2013-04-21 09:39:54 +02:00
Guilherme Blanco
773e109ebf [HttpFoundation] [HttpKernel] Internal sub-requests should have X-Forwarded-For header providing real client IP 2013-04-21 09:39:17 +02:00