Version: 3.3-dev (previously 3.2-dev)
Bug Description
When generating container, instead of service getter, static class call is used, resulting from this code
$builder->addDefinition($this->prefix('requestFactory'))
->setFactory(Nette\Http\RequestFactory::class)
->addSetup('setProxy', [$config->proxy]);
$request = $builder->addDefinition($this->prefix('request'))
->setFactory('@Nette\Http\RequestFactory::fromGlobals');
Steps To Reproduce
<?php
use Nette\Bridges\HttpDI\HttpExtension;
use Nette\DI\Compiler;
use Nette\Http\Request;
include __DIR__ . '/vendor/autoload.php';
$compiler = new Compiler();
$compiler->addExtension('http', new HttpExtension());
$code = $compiler->setClassName($class = 'Container')->compile();
file_put_contents(__DIR__ . '/code.php', "<?php\n\n$code");
require __DIR__ . '/code.php';
new $class()->getByType(Request::class);
and it generates container like this:
public function createServiceHttp__request(): Nette\Http\Request
{
return Nette\Http\RequestFactory::fromGlobals();
}
public function createServiceHttp__requestFactory(): Nette\Http\RequestFactory
{
$service = new Nette\Http\RequestFactory;
$service->setProxy([]);
return $service;
}
Expected Behavior
public function createServiceHttp__request(): Nette\Http\Request
{
- return Nette\Http\RequestFactory::fromGlobals();
+ return $this->getService('http.requestFactory')->fromGlobals();
}
public function createServiceHttp__requestFactory(): Nette\Http\RequestFactory
{
$service = new Nette\Http\RequestFactory;
$service->setProxy([]);
return $service;
}
Possible Solution
I'm not sure, I found some commits that affect code generation, 07921b8, 5b7fe4e
In latest stable and maybe even master version it works fine, it looks like 3.2 branch has this bug.
Version: 3.3-dev (previously 3.2-dev)
Bug Description
When generating container, instead of service getter, static class call is used, resulting from this code
Steps To Reproduce
and it generates container like this:
Expected Behavior
public function createServiceHttp__request(): Nette\Http\Request { - return Nette\Http\RequestFactory::fromGlobals(); + return $this->getService('http.requestFactory')->fromGlobals(); } public function createServiceHttp__requestFactory(): Nette\Http\RequestFactory { $service = new Nette\Http\RequestFactory; $service->setProxy([]); return $service; }Possible Solution
I'm not sure, I found some commits that affect code generation, 07921b8, 5b7fe4e
In latest stable and maybe even master version it works fine, it looks like 3.2 branch has this bug.