Merge pull request #7427 from nupplaphil/bug/friendica-7426

Set shared instances in DICE
This commit is contained in:
Hypolite Petovan 2019-07-24 07:26:34 -04:00 committed by GitHub
commit 9ba7f4689a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 8 additions and 12 deletions

View file

@ -25,6 +25,11 @@ use Psr\Log\LoggerInterface;
* *
*/ */
return [ return [
'*' => [
// marks all class result as shared for other creations, so there's just
// one instance for the whole execution
'shared' => true,
],
'$basepath' => [ '$basepath' => [
'instanceOf' => Util\BasePath::class, 'instanceOf' => Util\BasePath::class,
'call' => [ 'call' => [
@ -36,7 +41,6 @@ return [
] ]
], ],
Util\BasePath::class => [ Util\BasePath::class => [
'shared' => true,
'constructParams' => [ 'constructParams' => [
dirname(__FILE__, 2), dirname(__FILE__, 2),
$_SERVER $_SERVER
@ -53,15 +57,11 @@ return [
'call' => [ 'call' => [
['createCache', [], Dice::CHAIN_CALL], ['createCache', [], Dice::CHAIN_CALL],
], ],
'shared' => true,
], ],
App\Mode::class => [ App\Mode::class => [
'call' => [ 'call' => [
['determine', [], Dice::CHAIN_CALL], ['determine', [], Dice::CHAIN_CALL],
], ],
// marks the result as shared for other creations, so there's just
// one instance for the whole execution
'shared' => true,
], ],
Config\Configuration::class => [ Config\Configuration::class => [
'shared' => true, 'shared' => true,
@ -71,14 +71,12 @@ return [
], ],
], ],
Config\PConfiguration::class => [ Config\PConfiguration::class => [
'shared' => true,
'instanceOf' => Factory\ConfigFactory::class, 'instanceOf' => Factory\ConfigFactory::class,
'call' => [ 'call' => [
['createPConfig', [], Dice::CHAIN_CALL], ['createPConfig', [], Dice::CHAIN_CALL],
] ]
], ],
Database::class => [ Database::class => [
'shared' => true,
'constructParams' => [ 'constructParams' => [
[DICE::INSTANCE => \Psr\Log\NullLogger::class], [DICE::INSTANCE => \Psr\Log\NullLogger::class],
$_SERVER, $_SERVER,
@ -91,7 +89,6 @@ return [
* $baseURL = new Util\BaseURL($configuration, $_SERVER); * $baseURL = new Util\BaseURL($configuration, $_SERVER);
*/ */
Util\BaseURL::class => [ Util\BaseURL::class => [
'shared' => true,
'constructParams' => [ 'constructParams' => [
$_SERVER, $_SERVER,
], ],
@ -109,17 +106,15 @@ return [
* and is automatically passed as an argument with the same name * and is automatically passed as an argument with the same name
*/ */
LoggerInterface::class => [ LoggerInterface::class => [
'shared' => true,
'instanceOf' => Factory\LoggerFactory::class, 'instanceOf' => Factory\LoggerFactory::class,
'call' => [ 'call' => [
['create', [], Dice::CHAIN_CALL], ['create', [], Dice::CHAIN_CALL],
], ],
], ],
'$devLogger' => [ '$devLogger' => [
'shared' => true,
'instanceOf' => Factory\LoggerFactory::class, 'instanceOf' => Factory\LoggerFactory::class,
'call' => [ 'call' => [
['createDev', [], Dice::CHAIN_CALL], ['createDev', [], Dice::CHAIN_CALL],
] ]
] ],
]; ];

View file

@ -83,6 +83,8 @@ class dependencyCheck extends TestCase
] ]
]); ]);
// create new DI-library because of shared instance rule (so the Profiler wouldn't get created twice)
$this->dice = new Dice(include __DIR__ . '/../../static/dependencies.config.php');
$profiler = $this->dice->create(Profiler::class, [$configCache]); $profiler = $this->dice->create(Profiler::class, [$configCache]);
$this->assertInstanceOf(Profiler::class, $profiler); $this->assertInstanceOf(Profiler::class, $profiler);

View file

@ -9,7 +9,6 @@ class SystemTest extends TestCase
{ {
private function assertGuid($guid, $length, $prefix = '') private function assertGuid($guid, $length, $prefix = '')
{ {
print $guid;
$length -= strlen($prefix); $length -= strlen($prefix);
$this->assertRegExp("/^" . $prefix . "[a-z0-9]{" . $length . "}?$/", $guid); $this->assertRegExp("/^" . $prefix . "[a-z0-9]{" . $length . "}?$/", $guid);
} }