mirror of
https://git.friendi.ca/friendica/friendica.git
synced 2025-06-07 11:54:31 +02:00
Merge pull request #14616 from Art4/refactor-dice-rules
Refactor DICE rules
This commit is contained in:
commit
e3067095f4
5 changed files with 333 additions and 349 deletions
|
@ -1,10 +1,11 @@
|
|||
<?php
|
||||
|
||||
/* Copyright (C) 2010-2024, the Friendica project
|
||||
* SPDX-FileCopyrightText: 2010-2024 the Friendica project
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*
|
||||
// Copyright (C) 2010-2024, the Friendica project
|
||||
// SPDX-FileCopyrightText: 2010-2024 the Friendica project
|
||||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
/**
|
||||
* The configuration defines "complex" dependencies inside Friendica
|
||||
* So this classes shouldn't be simple or their dependencies are already defined here.
|
||||
*
|
||||
|
@ -19,309 +20,280 @@
|
|||
*
|
||||
* - $a = new ClassA($creationPassedVariable);
|
||||
*
|
||||
* @link https://r.je/dice
|
||||
*/
|
||||
|
||||
use Dice\Dice;
|
||||
use Friendica\App;
|
||||
use Friendica\AppHelper;
|
||||
use Friendica\AppLegacy;
|
||||
use Friendica\Core\Cache;
|
||||
use Friendica\Core\Config;
|
||||
use Friendica\Core\Hooks\Capability\ICanCreateInstances;
|
||||
use Friendica\Core\Hooks\Capability\ICanRegisterStrategies;
|
||||
use Friendica\Core\Hooks\Model\DiceInstanceManager;
|
||||
use Friendica\Core\PConfig;
|
||||
use Friendica\Core\L10n;
|
||||
use Friendica\Core\Lock;
|
||||
use Friendica\Core\Session\Capability\IHandleSessions;
|
||||
use Friendica\Core\Session\Capability\IHandleUserSessions;
|
||||
use Friendica\Core\Storage\Repository\StorageManager;
|
||||
use Friendica\Database\Database;
|
||||
use Friendica\Database\Definition\DbaDefinition;
|
||||
use Friendica\Database\Definition\ViewDefinition;
|
||||
use Friendica\Factory;
|
||||
use Friendica\Core\Storage\Capability\ICanWriteToStorage;
|
||||
use Friendica\Model\User\Cookie;
|
||||
use Friendica\Model\Log\ParsedLogIterator;
|
||||
use Friendica\Network;
|
||||
use Friendica\Util;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
return [
|
||||
'*' => [
|
||||
// marks all class result as shared for other creations, so there's just
|
||||
// one instance for the whole execution
|
||||
'shared' => true,
|
||||
],
|
||||
\Friendica\Core\Addon\Capability\ICanLoadAddons::class => [
|
||||
'instanceOf' => \Friendica\Core\Addon\Model\AddonLoader::class,
|
||||
'constructParams' => [
|
||||
[Dice::INSTANCE => '$basepath'],
|
||||
[Dice::INSTANCE => Dice::SELF],
|
||||
/**
|
||||
* @param string $basepath The base path of the Friendica installation without trailing slash
|
||||
*/
|
||||
return (function(string $basepath, array $getVars, array $serverVars, array $cookieVars): array {
|
||||
return [
|
||||
'*' => [
|
||||
// marks all class result as shared for other creations, so there's just
|
||||
// one instance for the whole execution
|
||||
'shared' => true,
|
||||
],
|
||||
],
|
||||
'$basepath' => [
|
||||
'instanceOf' => Util\BasePath::class,
|
||||
'call' => [
|
||||
['getPath', [], Dice::CHAIN_CALL],
|
||||
\Friendica\Core\Addon\Capability\ICanLoadAddons::class => [
|
||||
'instanceOf' => \Friendica\Core\Addon\Model\AddonLoader::class,
|
||||
'constructParams' => [
|
||||
$basepath,
|
||||
[Dice::INSTANCE => Dice::SELF],
|
||||
],
|
||||
],
|
||||
'constructParams' => [
|
||||
dirname(__FILE__, 2),
|
||||
$_SERVER
|
||||
]
|
||||
],
|
||||
Util\BasePath::class => [
|
||||
'constructParams' => [
|
||||
dirname(__FILE__, 2),
|
||||
$_SERVER
|
||||
]
|
||||
],
|
||||
DiceInstanceManager::class => [
|
||||
'constructParams' => [
|
||||
[Dice::INSTANCE => Dice::SELF],
|
||||
]
|
||||
],
|
||||
\Friendica\Core\Hooks\Util\StrategiesFileManager::class => [
|
||||
'constructParams' => [
|
||||
[Dice::INSTANCE => '$basepath'],
|
||||
\Friendica\Util\BasePath::class => [
|
||||
'constructParams' => [
|
||||
$basepath,
|
||||
$serverVars,
|
||||
]
|
||||
],
|
||||
'call' => [
|
||||
['loadConfig'],
|
||||
\Friendica\Core\Hooks\Model\DiceInstanceManager::class => [
|
||||
'constructParams' => [
|
||||
[Dice::INSTANCE => Dice::SELF],
|
||||
]
|
||||
],
|
||||
],
|
||||
ICanRegisterStrategies::class => [
|
||||
'instanceOf' => DiceInstanceManager::class,
|
||||
'constructParams' => [
|
||||
[Dice::INSTANCE => Dice::SELF],
|
||||
\Friendica\Core\Hooks\Util\StrategiesFileManager::class => [
|
||||
'constructParams' => [
|
||||
$basepath,
|
||||
],
|
||||
'call' => [
|
||||
['loadConfig'],
|
||||
],
|
||||
],
|
||||
],
|
||||
AppHelper::class => [
|
||||
'instanceOf' => AppLegacy::class,
|
||||
],
|
||||
ICanCreateInstances::class => [
|
||||
'instanceOf' => DiceInstanceManager::class,
|
||||
'constructParams' => [
|
||||
[Dice::INSTANCE => Dice::SELF],
|
||||
\Friendica\Core\Hooks\Capability\ICanRegisterStrategies::class => [
|
||||
'instanceOf' => \Friendica\Core\Hooks\Model\DiceInstanceManager::class,
|
||||
'constructParams' => [
|
||||
[Dice::INSTANCE => Dice::SELF],
|
||||
],
|
||||
],
|
||||
],
|
||||
Config\Util\ConfigFileManager::class => [
|
||||
'instanceOf' => Config\Factory\Config::class,
|
||||
'call' => [
|
||||
['createConfigFileManager', [
|
||||
[Dice::INSTANCE => '$basepath'],
|
||||
$_SERVER,
|
||||
], Dice::CHAIN_CALL],
|
||||
\Friendica\AppHelper::class => [
|
||||
'instanceOf' => \Friendica\AppLegacy::class,
|
||||
],
|
||||
],
|
||||
Config\ValueObject\Cache::class => [
|
||||
'instanceOf' => Config\Factory\Config::class,
|
||||
'call' => [
|
||||
['createCache', [], Dice::CHAIN_CALL],
|
||||
\Friendica\Core\Hooks\Capability\ICanCreateInstances::class => [
|
||||
'instanceOf' => \Friendica\Core\Hooks\Model\DiceInstanceManager::class,
|
||||
'constructParams' => [
|
||||
[Dice::INSTANCE => Dice::SELF],
|
||||
],
|
||||
],
|
||||
],
|
||||
App\Mode::class => [
|
||||
'call' => [
|
||||
['determineRunMode', [true, $_SERVER], Dice::CHAIN_CALL],
|
||||
['determine', [
|
||||
[Dice::INSTANCE => '$basepath']
|
||||
], Dice::CHAIN_CALL],
|
||||
\Friendica\Core\Config\Util\ConfigFileManager::class => [
|
||||
'instanceOf' => \Friendica\Core\Config\Factory\Config::class,
|
||||
'call' => [
|
||||
['createConfigFileManager', [
|
||||
$basepath,
|
||||
$serverVars,
|
||||
], Dice::CHAIN_CALL],
|
||||
],
|
||||
],
|
||||
],
|
||||
Config\Capability\IManageConfigValues::class => [
|
||||
'instanceOf' => Config\Model\DatabaseConfig::class,
|
||||
'constructParams' => [
|
||||
$_SERVER,
|
||||
\Friendica\Core\Config\ValueObject\Cache::class => [
|
||||
'instanceOf' => \Friendica\Core\Config\Factory\Config::class,
|
||||
'call' => [
|
||||
['createCache', [], Dice::CHAIN_CALL],
|
||||
],
|
||||
],
|
||||
],
|
||||
PConfig\Capability\IManagePersonalConfigValues::class => [
|
||||
'instanceOf' => PConfig\Factory\PConfig::class,
|
||||
'call' => [
|
||||
['create', [], Dice::CHAIN_CALL],
|
||||
]
|
||||
],
|
||||
DbaDefinition::class => [
|
||||
'constructParams' => [
|
||||
[Dice::INSTANCE => '$basepath'],
|
||||
\Friendica\App\Mode::class => [
|
||||
'call' => [
|
||||
['determineRunMode', [true, $serverVars], Dice::CHAIN_CALL],
|
||||
['determine', [
|
||||
$basepath,
|
||||
], Dice::CHAIN_CALL],
|
||||
],
|
||||
],
|
||||
'call' => [
|
||||
['load', [false], Dice::CHAIN_CALL],
|
||||
\Friendica\Core\Config\Capability\IManageConfigValues::class => [
|
||||
'instanceOf' => \Friendica\Core\Config\Model\DatabaseConfig::class,
|
||||
'constructParams' => [
|
||||
$serverVars,
|
||||
],
|
||||
],
|
||||
],
|
||||
ViewDefinition::class => [
|
||||
'constructParams' => [
|
||||
[Dice::INSTANCE => '$basepath'],
|
||||
\Friendica\Core\PConfig\Capability\IManagePersonalConfigValues::class => [
|
||||
'instanceOf' => \Friendica\Core\PConfig\Factory\PConfig::class,
|
||||
'call' => [
|
||||
['create', [], Dice::CHAIN_CALL],
|
||||
]
|
||||
],
|
||||
'call' => [
|
||||
['load', [false], Dice::CHAIN_CALL],
|
||||
\Friendica\Database\Definition\DbaDefinition::class => [
|
||||
'constructParams' => [
|
||||
$basepath,
|
||||
],
|
||||
'call' => [
|
||||
['load', [false], Dice::CHAIN_CALL],
|
||||
],
|
||||
],
|
||||
],
|
||||
Database::class => [
|
||||
'constructParams' => [
|
||||
[Dice::INSTANCE => Config\Model\ReadOnlyFileConfig::class],
|
||||
\Friendica\Database\Definition\ViewDefinition::class => [
|
||||
'constructParams' => [
|
||||
$basepath,
|
||||
],
|
||||
'call' => [
|
||||
['load', [false], Dice::CHAIN_CALL],
|
||||
],
|
||||
],
|
||||
],
|
||||
/**
|
||||
* Creates the App\BaseURL
|
||||
*
|
||||
* Same as:
|
||||
* $baseURL = new App\BaseURL($configuration, $_SERVER);
|
||||
*/
|
||||
App\BaseURL::class => [
|
||||
'constructParams' => [
|
||||
$_SERVER,
|
||||
\Friendica\Database\Database::class => [
|
||||
'constructParams' => [
|
||||
[Dice::INSTANCE => \Friendica\Core\Config\Model\ReadOnlyFileConfig::class],
|
||||
],
|
||||
],
|
||||
],
|
||||
'$hostname' => [
|
||||
'instanceOf' => App\BaseURL::class,
|
||||
'constructParams' => [
|
||||
$_SERVER,
|
||||
\Friendica\App\BaseURL::class => [
|
||||
'constructParams' => [
|
||||
$serverVars,
|
||||
],
|
||||
],
|
||||
'call' => [
|
||||
['getHost', [], Dice::CHAIN_CALL],
|
||||
'$hostname' => [
|
||||
'instanceOf' => \Friendica\App\BaseURL::class,
|
||||
'constructParams' => [
|
||||
$serverVars,
|
||||
],
|
||||
'call' => [
|
||||
['getHost', [], Dice::CHAIN_CALL],
|
||||
],
|
||||
],
|
||||
],
|
||||
Cache\Type\AbstractCache::class => [
|
||||
'constructParams' => [
|
||||
[Dice::INSTANCE => '$hostname'],
|
||||
\Friendica\Core\Cache\Type\AbstractCache::class => [
|
||||
'constructParams' => [
|
||||
[Dice::INSTANCE => '$hostname'],
|
||||
],
|
||||
],
|
||||
],
|
||||
App\Page::class => [
|
||||
'constructParams' => [
|
||||
[Dice::INSTANCE => '$basepath'],
|
||||
\Friendica\App\Page::class => [
|
||||
'constructParams' => [
|
||||
$basepath,
|
||||
],
|
||||
],
|
||||
],
|
||||
\Psr\Log\LoggerInterface::class => [
|
||||
'instanceOf' => \Friendica\Core\Logger\Factory\Logger::class,
|
||||
'call' => [
|
||||
['create', [], Dice::CHAIN_CALL],
|
||||
\Psr\Log\LoggerInterface::class => [
|
||||
'instanceOf' => \Friendica\Core\Logger\Factory\Logger::class,
|
||||
'call' => [
|
||||
['create', [], Dice::CHAIN_CALL],
|
||||
],
|
||||
],
|
||||
],
|
||||
\Friendica\Core\Logger\Type\SyslogLogger::class => [
|
||||
'instanceOf' => \Friendica\Core\Logger\Factory\SyslogLogger::class,
|
||||
'call' => [
|
||||
['create', [], Dice::CHAIN_CALL],
|
||||
\Friendica\Core\Logger\Type\SyslogLogger::class => [
|
||||
'instanceOf' => \Friendica\Core\Logger\Factory\SyslogLogger::class,
|
||||
'call' => [
|
||||
['create', [], Dice::CHAIN_CALL],
|
||||
],
|
||||
],
|
||||
],
|
||||
\Friendica\Core\Logger\Type\StreamLogger::class => [
|
||||
'instanceOf' => \Friendica\Core\Logger\Factory\StreamLogger::class,
|
||||
'call' => [
|
||||
['create', [], Dice::CHAIN_CALL],
|
||||
\Friendica\Core\Logger\Type\StreamLogger::class => [
|
||||
'instanceOf' => \Friendica\Core\Logger\Factory\StreamLogger::class,
|
||||
'call' => [
|
||||
['create', [], Dice::CHAIN_CALL],
|
||||
],
|
||||
],
|
||||
],
|
||||
\Friendica\Core\Logger\Capability\IHaveCallIntrospections::class => [
|
||||
'instanceOf' => \Friendica\Core\Logger\Util\Introspection::class,
|
||||
'constructParams' => [
|
||||
\Friendica\Core\Logger\Capability\IHaveCallIntrospections::IGNORE_CLASS_LIST,
|
||||
\Friendica\Core\Logger\Capability\IHaveCallIntrospections::class => [
|
||||
'instanceOf' => \Friendica\Core\Logger\Util\Introspection::class,
|
||||
'constructParams' => [
|
||||
\Friendica\Core\Logger\Capability\IHaveCallIntrospections::IGNORE_CLASS_LIST,
|
||||
],
|
||||
],
|
||||
],
|
||||
'$devLogger' => [
|
||||
'instanceOf' => \Friendica\Core\Logger\Factory\StreamLogger::class,
|
||||
'call' => [
|
||||
['createDev', [], Dice::CHAIN_CALL],
|
||||
'$devLogger' => [
|
||||
'instanceOf' => \Friendica\Core\Logger\Factory\StreamLogger::class,
|
||||
'call' => [
|
||||
['createDev', [], Dice::CHAIN_CALL],
|
||||
],
|
||||
],
|
||||
],
|
||||
Cache\Capability\ICanCache::class => [
|
||||
'instanceOf' => Cache\Factory\Cache::class,
|
||||
'call' => [
|
||||
['createLocal', [], Dice::CHAIN_CALL],
|
||||
\Friendica\Core\Cache\Capability\ICanCache::class => [
|
||||
'instanceOf' => \Friendica\Core\Cache\Factory\Cache::class,
|
||||
'call' => [
|
||||
['createLocal', [], Dice::CHAIN_CALL],
|
||||
],
|
||||
],
|
||||
],
|
||||
Cache\Capability\ICanCacheInMemory::class => [
|
||||
'instanceOf' => Cache\Factory\Cache::class,
|
||||
'call' => [
|
||||
['createLocal', [], Dice::CHAIN_CALL],
|
||||
\Friendica\Core\Cache\Capability\ICanCacheInMemory::class => [
|
||||
'instanceOf' => \Friendica\Core\Cache\Factory\Cache::class,
|
||||
'call' => [
|
||||
['createLocal', [], Dice::CHAIN_CALL],
|
||||
],
|
||||
],
|
||||
],
|
||||
Lock\Capability\ICanLock::class => [
|
||||
'instanceOf' => Lock\Factory\Lock::class,
|
||||
'call' => [
|
||||
['create', [], Dice::CHAIN_CALL],
|
||||
\Friendica\Core\Lock\Capability\ICanLock::class => [
|
||||
'instanceOf' => \Friendica\Core\Lock\Factory\Lock::class,
|
||||
'call' => [
|
||||
['create', [], Dice::CHAIN_CALL],
|
||||
],
|
||||
],
|
||||
],
|
||||
App\Arguments::class => [
|
||||
'instanceOf' => App\Arguments::class,
|
||||
'call' => [
|
||||
['determine', [$_SERVER, $_GET], Dice::CHAIN_CALL],
|
||||
\Friendica\App\Arguments::class => [
|
||||
'instanceOf' => \Friendica\App\Arguments::class,
|
||||
'call' => [
|
||||
['determine', [$serverVars, $getVars], Dice::CHAIN_CALL],
|
||||
],
|
||||
],
|
||||
],
|
||||
\Friendica\Core\System::class => [
|
||||
'constructParams' => [
|
||||
[Dice::INSTANCE => '$basepath'],
|
||||
\Friendica\Core\System::class => [
|
||||
'constructParams' => [
|
||||
$basepath,
|
||||
],
|
||||
],
|
||||
],
|
||||
App\Router::class => [
|
||||
'constructParams' => [
|
||||
$_SERVER,
|
||||
__DIR__ . '/routes.config.php',
|
||||
[Dice::INSTANCE => Dice::SELF],
|
||||
null
|
||||
\Friendica\App\Router::class => [
|
||||
'constructParams' => [
|
||||
$serverVars,
|
||||
__DIR__ . '/routes.config.php',
|
||||
[Dice::INSTANCE => Dice::SELF],
|
||||
null
|
||||
],
|
||||
],
|
||||
],
|
||||
L10n::class => [
|
||||
'constructParams' => [
|
||||
$_SERVER, $_GET
|
||||
\Friendica\Core\L10n::class => [
|
||||
'constructParams' => [
|
||||
$serverVars, $getVars
|
||||
],
|
||||
],
|
||||
],
|
||||
IHandleSessions::class => [
|
||||
'instanceOf' => \Friendica\Core\Session\Factory\Session::class,
|
||||
'call' => [
|
||||
['create', [$_SERVER], Dice::CHAIN_CALL],
|
||||
['start', [], Dice::CHAIN_CALL],
|
||||
\Friendica\Core\Session\Capability\IHandleSessions::class => [
|
||||
'instanceOf' => \Friendica\Core\Session\Factory\Session::class,
|
||||
'call' => [
|
||||
['create', [$serverVars], Dice::CHAIN_CALL],
|
||||
['start', [], Dice::CHAIN_CALL],
|
||||
],
|
||||
],
|
||||
],
|
||||
IHandleUserSessions::class => [
|
||||
'instanceOf' => \Friendica\Core\Session\Model\UserSession::class,
|
||||
],
|
||||
Cookie::class => [
|
||||
'constructParams' => [
|
||||
$_COOKIE
|
||||
\Friendica\Core\Session\Capability\IHandleUserSessions::class => [
|
||||
'instanceOf' => \Friendica\Core\Session\Model\UserSession::class,
|
||||
],
|
||||
],
|
||||
ICanWriteToStorage::class => [
|
||||
'instanceOf' => StorageManager::class,
|
||||
'call' => [
|
||||
['getBackend', [], Dice::CHAIN_CALL],
|
||||
\Friendica\Model\User\Cookie::class => [
|
||||
'constructParams' => [
|
||||
$cookieVars,
|
||||
],
|
||||
],
|
||||
],
|
||||
\Friendica\Core\KeyValueStorage\Capability\IManageKeyValuePairs::class => [
|
||||
'instanceOf' => \Friendica\Core\KeyValueStorage\Factory\KeyValueStorage::class,
|
||||
'call' => [
|
||||
['create', [], Dice::CHAIN_CALL],
|
||||
\Friendica\Core\Storage\Capability\ICanWriteToStorage::class => [
|
||||
'instanceOf' => \Friendica\Core\Storage\Repository\StorageManager::class,
|
||||
'call' => [
|
||||
['getBackend', [], Dice::CHAIN_CALL],
|
||||
],
|
||||
],
|
||||
],
|
||||
Network\HTTPClient\Capability\ICanSendHttpRequests::class => [
|
||||
'instanceOf' => Network\HTTPClient\Factory\HttpClient::class,
|
||||
'call' => [
|
||||
['createClient', [], Dice::CHAIN_CALL],
|
||||
\Friendica\Core\KeyValueStorage\Capability\IManageKeyValuePairs::class => [
|
||||
'instanceOf' => \Friendica\Core\KeyValueStorage\Factory\KeyValueStorage::class,
|
||||
'call' => [
|
||||
['create', [], Dice::CHAIN_CALL],
|
||||
],
|
||||
],
|
||||
],
|
||||
ParsedLogIterator::class => [
|
||||
'constructParams' => [
|
||||
[Dice::INSTANCE => Util\ReversedFileReader::class],
|
||||
]
|
||||
],
|
||||
\Friendica\Core\Worker\Repository\Process::class => [
|
||||
'constructParams' => [
|
||||
$_SERVER
|
||||
\Friendica\Network\HTTPClient\Capability\ICanSendHttpRequests::class => [
|
||||
'instanceOf' => \Friendica\Network\HTTPClient\Factory\HttpClient::class,
|
||||
'call' => [
|
||||
['createClient', [], Dice::CHAIN_CALL],
|
||||
],
|
||||
],
|
||||
],
|
||||
App\Request::class => [
|
||||
'constructParams' => [
|
||||
$_SERVER
|
||||
\Friendica\Model\Log\ParsedLogIterator::class => [
|
||||
'constructParams' => [
|
||||
[Dice::INSTANCE => \Friendica\Util\ReversedFileReader::class],
|
||||
]
|
||||
],
|
||||
],
|
||||
\Psr\Clock\ClockInterface::class => [
|
||||
'instanceOf' => Util\Clock\SystemClock::class
|
||||
],
|
||||
\Friendica\Module\Special\HTTPException::class => [
|
||||
'constructParams' => [
|
||||
$_SERVER
|
||||
\Friendica\Core\Worker\Repository\Process::class => [
|
||||
'constructParams' => [
|
||||
$serverVars
|
||||
],
|
||||
],
|
||||
],
|
||||
\Friendica\Module\Api\ApiResponse::class => [
|
||||
'constructParams' => [
|
||||
$_SERVER,
|
||||
$_GET['callback'] ?? '',
|
||||
\Friendica\App\Request::class => [
|
||||
'constructParams' => [
|
||||
$serverVars
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
\Psr\Clock\ClockInterface::class => [
|
||||
'instanceOf' => \Friendica\Util\Clock\SystemClock::class
|
||||
],
|
||||
\Friendica\Module\Special\HTTPException::class => [
|
||||
'constructParams' => [
|
||||
$serverVars
|
||||
],
|
||||
],
|
||||
\Friendica\Module\Api\ApiResponse::class => [
|
||||
'constructParams' => [
|
||||
$serverVars,
|
||||
$getVars['callback'] ?? '',
|
||||
],
|
||||
],
|
||||
];
|
||||
})(
|
||||
dirname(__FILE__, 2),
|
||||
$_GET,
|
||||
$_SERVER,
|
||||
$_COOKIE
|
||||
);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue