Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 29f81b0

Browse filesBrowse files
committed
feature #30541 [BrowserKit] Rename Client to Browser (fabpot)
This PR was merged into the 4.3-dev branch. Discussion ---------- [BrowserKit] Rename Client to Browser | Q | A | ------------- | --- | Branch? | master | Bug fix? | no | New feature? | yes | BC breaks? | no <!-- see https://symfony.com/bc --> | Deprecations? | yes | Tests pass? | yes <!-- please add some, will be required by reviewers --> | Fixed tickets | n/a | License | MIT | Doc PR | n/a `Client` is very generic and used in 3 places: BrowserKit, HttpKernel, and FramewrokBundle. Each Client extends another one. So, to make things clearer, I'd like to rename Client to Browser like this: Symfony\Component\BrowerKit\Client -> AbstractBrowser Symfony\Component\HttpKernel\Client -> HttpKernelBrowser Symfony\Bundle\FrameworkBundle\Client -> KernelBrowser The next PR will introduce an `HttpBrowser` based on the new HttpClient component :) Commits ------- dbe4f86 renamed Client to Browser
2 parents a31c877 + dbe4f86 commit 29f81b0
Copy full SHA for 29f81b0

20 files changed

+1201
-1131
lines changed

‎UPGRADE-4.3.md

Copy file name to clipboardExpand all lines: UPGRADE-4.3.md
+6Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ UPGRADE FROM 4.2 to 4.3
44
BrowserKit
55
----------
66

7+
* Renamed `Client` to `AbstractBrowser`
78
* Marked `Response` final.
89
* Deprecated `Response::buildHeader()`
910
* Deprecated `Response::getStatus()`, use `Response::getStatusCode()` instead
@@ -51,6 +52,11 @@ HttpFoundation
5152
* The `FileinfoMimeTypeGuesser` class has been deprecated,
5253
use `Symfony\Component\Mime\FileinfoMimeTypeGuesser` instead.
5354

55+
HttpKernel
56+
----------
57+
58+
* renamed `Client` to `HttpKernelBrowser`
59+
5460
Messenger
5561
---------
5662

‎UPGRADE-5.0.md

Copy file name to clipboardExpand all lines: UPGRADE-5.0.md
+2Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ UPGRADE FROM 4.x to 5.0
44
BrowserKit
55
----------
66

7+
* Removed `Client`, use `AbstractBrowser` instead
78
* Removed the possibility to extend `Response` by making it final.
89
* Removed `Response::buildHeader()`
910
* Removed `Response::getStatus()`, use `Response::getStatusCode()` instead
@@ -199,6 +200,7 @@ HttpFoundation
199200
HttpKernel
200201
----------
201202

203+
* Removed `Client`, use `HttpKernelBrowser` instead
202204
* The `Kernel::getRootDir()` and the `kernel.root_dir` parameter have been removed
203205
* The `KernelInterface::getName()` and the `kernel.name` parameter have been removed
204206
* Removed the first and second constructor argument of `ConfigDataCollector`

‎src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ CHANGELOG
44
4.3.0
55
-----
66

7+
* renamed `Client` to `KernelBrowser`
78
* Not passing the project directory to the constructor of the `AssetsInstallCommand` is deprecated. This argument will
89
be mandatory in 5.0.
910
* Deprecated the "Psr\SimpleCache\CacheInterface" / "cache.app.simple" service, use "Symfony\Contracts\Cache\CacheInterface" / "cache.app" instead

‎src/Symfony/Bundle/FrameworkBundle/Client.php

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/Client.php
+2-190Lines changed: 2 additions & 190 deletions
Original file line numberDiff line numberDiff line change
@@ -11,196 +11,8 @@
1111

1212
namespace Symfony\Bundle\FrameworkBundle;
1313

14-
use Symfony\Component\BrowserKit\CookieJar;
15-
use Symfony\Component\BrowserKit\History;
16-
use Symfony\Component\DependencyInjection\ContainerInterface;
17-
use Symfony\Component\HttpFoundation\Request;
18-
use Symfony\Component\HttpFoundation\Response;
19-
use Symfony\Component\HttpKernel\Client as BaseClient;
20-
use Symfony\Component\HttpKernel\KernelInterface;
21-
use Symfony\Component\HttpKernel\Profiler\Profile as HttpProfile;
14+
@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', Client::class, KernelBrowser::class), E_USER_DEPRECATED);
2215

23-
/**
24-
* Client simulates a browser and makes requests to a Kernel object.
25-
*
26-
* @author Fabien Potencier <fabien@symfony.com>
27-
*/
28-
class Client extends BaseClient
16+
class Client extends KernelBrowser
2917
{
30-
private $hasPerformedRequest = false;
31-
private $profiler = false;
32-
private $reboot = true;
33-
34-
/**
35-
* {@inheritdoc}
36-
*/
37-
public function __construct(KernelInterface $kernel, array $server = [], History $history = null, CookieJar $cookieJar = null)
38-
{
39-
parent::__construct($kernel, $server, $history, $cookieJar);
40-
}
41-
42-
/**
43-
* Returns the container.
44-
*
45-
* @return ContainerInterface|null Returns null when the Kernel has been shutdown or not started yet
46-
*/
47-
public function getContainer()
48-
{
49-
return $this->kernel->getContainer();
50-
}
51-
52-
/**
53-
* Returns the kernel.
54-
*
55-
* @return KernelInterface
56-
*/
57-
public function getKernel()
58-
{
59-
return $this->kernel;
60-
}
61-
62-
/**
63-
* Gets the profile associated with the current Response.
64-
*
65-
* @return HttpProfile|false A Profile instance
66-
*/
67-
public function getProfile()
68-
{
69-
if (!$this->kernel->getContainer()->has('profiler')) {
70-
return false;
71-
}
72-
73-
return $this->kernel->getContainer()->get('profiler')->loadProfileFromResponse($this->response);
74-
}
75-
76-
/**
77-
* Enables the profiler for the very next request.
78-
*
79-
* If the profiler is not enabled, the call to this method does nothing.
80-
*/
81-
public function enableProfiler()
82-
{
83-
if ($this->kernel->getContainer()->has('profiler')) {
84-
$this->profiler = true;
85-
}
86-
}
87-
88-
/**
89-
* Disables kernel reboot between requests.
90-
*
91-
* By default, the Client reboots the Kernel for each request. This method
92-
* allows to keep the same kernel across requests.
93-
*/
94-
public function disableReboot()
95-
{
96-
$this->reboot = false;
97-
}
98-
99-
/**
100-
* Enables kernel reboot between requests.
101-
*/
102-
public function enableReboot()
103-
{
104-
$this->reboot = true;
105-
}
106-
107-
/**
108-
* {@inheritdoc}
109-
*
110-
* @param Request $request A Request instance
111-
*
112-
* @return Response A Response instance
113-
*/
114-
protected function doRequest($request)
115-
{
116-
// avoid shutting down the Kernel if no request has been performed yet
117-
// WebTestCase::createClient() boots the Kernel but do not handle a request
118-
if ($this->hasPerformedRequest && $this->reboot) {
119-
$this->kernel->shutdown();
120-
} else {
121-
$this->hasPerformedRequest = true;
122-
}
123-
124-
if ($this->profiler) {
125-
$this->profiler = false;
126-
127-
$this->kernel->boot();
128-
$this->kernel->getContainer()->get('profiler')->enable();
129-
}
130-
131-
return parent::doRequest($request);
132-
}
133-
134-
/**
135-
* {@inheritdoc}
136-
*
137-
* @param Request $request A Request instance
138-
*
139-
* @return Response A Response instance
140-
*/
141-
protected function doRequestInProcess($request)
142-
{
143-
$response = parent::doRequestInProcess($request);
144-
145-
$this->profiler = false;
146-
147-
return $response;
148-
}
149-
150-
/**
151-
* Returns the script to execute when the request must be insulated.
152-
*
153-
* It assumes that the autoloader is named 'autoload.php' and that it is
154-
* stored in the same directory as the kernel (this is the case for the
155-
* Symfony Standard Edition). If this is not your case, create your own
156-
* client and override this method.
157-
*
158-
* @param Request $request A Request instance
159-
*
160-
* @return string The script content
161-
*/
162-
protected function getScript($request)
163-
{
164-
$kernel = var_export(serialize($this->kernel), true);
165-
$request = var_export(serialize($request), true);
166-
$errorReporting = error_reporting();
167-
168-
$requires = '';
169-
foreach (get_declared_classes() as $class) {
170-
if (0 === strpos($class, 'ComposerAutoloaderInit')) {
171-
$r = new \ReflectionClass($class);
172-
$file = \dirname(\dirname($r->getFileName())).'/autoload.php';
173-
if (file_exists($file)) {
174-
$requires .= 'require_once '.var_export($file, true).";\n";
175-
}
176-
}
177-
}
178-
179-
if (!$requires) {
180-
throw new \RuntimeException('Composer autoloader not found.');
181-
}
182-
183-
$requires .= 'require_once '.var_export((new \ReflectionObject($this->kernel))->getFileName(), true).";\n";
184-
185-
$profilerCode = '';
186-
if ($this->profiler) {
187-
$profilerCode = '$kernel->getContainer()->get(\'profiler\')->enable();';
188-
}
189-
190-
$code = <<<EOF
191-
<?php
192-
193-
error_reporting($errorReporting);
194-
195-
$requires
196-
197-
\$kernel = unserialize($kernel);
198-
\$kernel->boot();
199-
$profilerCode
200-
201-
\$request = unserialize($request);
202-
EOF;
203-
204-
return $code.$this->getHandleScript();
205-
}
20618
}

‎src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
+2-2Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
use Symfony\Bundle\FrameworkBundle\Routing\AnnotatedRouteControllerLoader;
2323
use Symfony\Bundle\FrameworkBundle\Routing\RedirectableUrlMatcher;
2424
use Symfony\Bundle\FullStack;
25-
use Symfony\Component\BrowserKit\Client;
25+
use Symfony\Component\BrowserKit\AbstractBrowser;
2626
use Symfony\Component\Cache\Adapter\AbstractAdapter;
2727
use Symfony\Component\Cache\Adapter\AdapterInterface;
2828
use Symfony\Component\Cache\Adapter\ArrayAdapter;
@@ -207,7 +207,7 @@ public function load(array $configs, ContainerBuilder $container)
207207
if (!empty($config['test'])) {
208208
$loader->load('test.xml');
209209

210-
if (!class_exists(Client::class)) {
210+
if (!class_exists(AbstractBrowser::class)) {
211211
$container->removeDefinition('test.client');
212212
}
213213
}

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.