friendica-github/static/dependencies.config.php

307 lines
8.2 KiB
PHP
Raw Normal View History

<?php
2024-08-24 14:38:14 +02:00
2024-12-23 14:28:01 +00:00
// 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.
*
* This kind of dependencies are NOT required to be defined here:
* - $a = new ClassA(new ClassB());
* - $a = new ClassA();
* - $a = new ClassA(Configuration $configuration);
*
* This kind of dependencies SHOULD be defined here:
* - $a = new ClassA();
* $b = $a->create();
*
* - $a = new ClassA($creationPassedVariable);
*
2024-12-23 14:28:01 +00:00
* @link https://r.je/dice
*/
use Dice\Dice;
use Friendica\Util;
2024-12-23 14:22:52 +00:00
/**
* @param string $basepath The base path of the Friendica installation without trailing slash
*/
2024-12-23 14:23:58 +00:00
return (function(string $basepath, array $getVars, array $serverVars, array $cookieVars): array {
2024-12-23 13:34:10 +00:00
return [
2019-08-12 18:13:58 +02:00
'*' => [
// marks all class result as shared for other creations, so there's just
// one instance for the whole execution
'shared' => true,
],
2023-07-23 03:21:41 +02:00
\Friendica\Core\Addon\Capability\ICanLoadAddons::class => [
'instanceOf' => \Friendica\Core\Addon\Model\AddonLoader::class,
'constructParams' => [
2024-12-22 16:29:47 +00:00
$basepath,
[Dice::INSTANCE => Dice::SELF],
],
],
Util\BasePath::class => [
'constructParams' => [
$basepath,
2024-12-23 14:12:37 +00:00
$serverVars,
]
],
\Friendica\Core\Hooks\Model\DiceInstanceManager::class => [
'constructParams' => [
[Dice::INSTANCE => Dice::SELF],
]
],
\Friendica\Core\Hooks\Util\StrategiesFileManager::class => [
'constructParams' => [
2024-12-22 16:29:47 +00:00
$basepath,
],
'call' => [
['loadConfig'],
],
],
2024-12-23 14:11:40 +00:00
\Friendica\Core\Hooks\Capability\ICanRegisterStrategies::class => [
'instanceOf' => \Friendica\Core\Hooks\Model\DiceInstanceManager::class,
'constructParams' => [
[Dice::INSTANCE => Dice::SELF],
],
],
2024-12-23 14:03:32 +00:00
\Friendica\AppHelper::class => [
'instanceOf' => \Friendica\AppLegacy::class,
2024-11-17 20:11:43 +00:00
],
2024-12-23 14:11:40 +00:00
\Friendica\Core\Hooks\Capability\ICanCreateInstances::class => [
'instanceOf' => \Friendica\Core\Hooks\Model\DiceInstanceManager::class,
'constructParams' => [
[Dice::INSTANCE => Dice::SELF],
],
],
2024-12-23 14:06:04 +00:00
\Friendica\Core\Config\Util\ConfigFileManager::class => [
'instanceOf' => \Friendica\Core\Config\Factory\Config::class,
'call' => [
['createConfigFileManager', [
2024-12-22 16:29:47 +00:00
$basepath,
2024-12-23 14:12:37 +00:00
$serverVars,
], Dice::CHAIN_CALL],
],
],
2024-12-23 14:06:04 +00:00
\Friendica\Core\Config\ValueObject\Cache::class => [
'instanceOf' => \Friendica\Core\Config\Factory\Config::class,
'call' => [
['createCache', [], Dice::CHAIN_CALL],
],
],
2024-12-23 14:03:32 +00:00
\Friendica\App\Mode::class => [
2019-08-12 18:13:58 +02:00
'call' => [
2024-12-23 14:12:37 +00:00
['determineRunMode', [true, $serverVars], Dice::CHAIN_CALL],
['determine', [
2024-12-22 16:29:47 +00:00
$basepath,
], Dice::CHAIN_CALL],
],
],
2024-12-23 14:06:04 +00:00
\Friendica\Core\Config\Capability\IManageConfigValues::class => [
'instanceOf' => \Friendica\Core\Config\Model\DatabaseConfig::class,
2022-12-28 02:07:38 +01:00
'constructParams' => [
2024-12-23 14:12:37 +00:00
$serverVars,
2022-12-28 02:07:38 +01:00
],
],
2024-12-23 14:03:32 +00:00
\Friendica\Core\PConfig\Capability\IManagePersonalConfigValues::class => [
'instanceOf' => \Friendica\Core\PConfig\Factory\PConfig::class,
2019-08-12 18:13:58 +02:00
'call' => [
['create', [], Dice::CHAIN_CALL],
]
],
2024-12-23 14:31:41 +00:00
\Friendica\Database\Definition\DbaDefinition::class => [
'constructParams' => [
2024-12-22 16:29:47 +00:00
$basepath,
],
'call' => [
['load', [false], Dice::CHAIN_CALL],
],
],
2024-12-23 14:31:41 +00:00
\Friendica\Database\Definition\ViewDefinition::class => [
'constructParams' => [
2024-12-22 16:29:47 +00:00
$basepath,
],
'call' => [
['load', [false], Dice::CHAIN_CALL],
],
],
2024-12-23 14:31:41 +00:00
\Friendica\Database\Database::class => [
'constructParams' => [
2024-12-23 14:06:04 +00:00
[Dice::INSTANCE => \Friendica\Core\Config\Model\ReadOnlyFileConfig::class],
],
],
/**
2024-12-23 14:03:32 +00:00
* Creates the \Friendica\App\BaseURL
*
* Same as:
2024-12-23 14:18:22 +00:00
* $baseURL = new \Friendica\App\BaseURL($configuration, $);
*/
2024-12-23 14:03:32 +00:00
\Friendica\App\BaseURL::class => [
'constructParams' => [
2024-12-23 14:12:37 +00:00
$serverVars,
],
],
2023-07-22 23:57:38 +02:00
'$hostname' => [
2024-12-23 14:03:32 +00:00
'instanceOf' => \Friendica\App\BaseURL::class,
2023-07-22 23:57:38 +02:00
'constructParams' => [
2024-12-23 14:12:37 +00:00
$serverVars,
2023-07-22 23:57:38 +02:00
],
'call' => [
['getHost', [], Dice::CHAIN_CALL],
],
],
2024-12-23 14:03:32 +00:00
\Friendica\Core\Cache\Type\AbstractCache::class => [
2023-07-22 23:57:38 +02:00
'constructParams' => [
[Dice::INSTANCE => '$hostname'],
],
],
2024-12-23 14:03:32 +00:00
\Friendica\App\Page::class => [
'constructParams' => [
2024-12-22 16:29:47 +00:00
$basepath,
],
],
\Psr\Log\LoggerInterface::class => [
2021-10-23 12:22:27 +02:00
'instanceOf' => \Friendica\Core\Logger\Factory\Logger::class,
'call' => [
['create', [], Dice::CHAIN_CALL],
2019-09-17 16:47:00 +02:00
],
],
\Friendica\Core\Logger\Type\SyslogLogger::class => [
'instanceOf' => \Friendica\Core\Logger\Factory\SyslogLogger::class,
'call' => [
2021-10-29 08:03:59 +02:00
['create', [], Dice::CHAIN_CALL],
],
],
\Friendica\Core\Logger\Type\StreamLogger::class => [
'instanceOf' => \Friendica\Core\Logger\Factory\StreamLogger::class,
'call' => [
['create', [], Dice::CHAIN_CALL],
2019-09-17 16:47:00 +02:00
],
],
2023-07-23 03:21:41 +02:00
\Friendica\Core\Logger\Capability\IHaveCallIntrospections::class => [
'instanceOf' => \Friendica\Core\Logger\Util\Introspection::class,
'constructParams' => [
2023-07-23 03:21:41 +02:00
\Friendica\Core\Logger\Capability\IHaveCallIntrospections::IGNORE_CLASS_LIST,
],
],
'$devLogger' => [
'instanceOf' => \Friendica\Core\Logger\Factory\StreamLogger::class,
'call' => [
['createDev', [], Dice::CHAIN_CALL],
],
],
2024-12-23 14:03:32 +00:00
\Friendica\Core\Cache\Capability\ICanCache::class => [
'instanceOf' => \Friendica\Core\Cache\Factory\Cache::class,
'call' => [
2021-12-13 19:40:38 +01:00
['createLocal', [], Dice::CHAIN_CALL],
],
],
2024-12-23 14:03:32 +00:00
\Friendica\Core\Cache\Capability\ICanCacheInMemory::class => [
'instanceOf' => \Friendica\Core\Cache\Factory\Cache::class,
'call' => [
2021-12-13 19:40:38 +01:00
['createLocal', [], Dice::CHAIN_CALL],
],
],
2024-12-23 14:30:14 +00:00
\Friendica\Core\Lock\Capability\ICanLock::class => [
'instanceOf' => \Friendica\Core\Lock\Factory\Lock::class,
'call' => [
['create', [], Dice::CHAIN_CALL],
],
],
2024-12-23 14:03:32 +00:00
\Friendica\App\Arguments::class => [
'instanceOf' => \Friendica\App\Arguments::class,
2019-08-12 18:13:58 +02:00
'call' => [
2024-12-23 14:18:22 +00:00
['determine', [$serverVars, $getVars], Dice::CHAIN_CALL],
2019-08-12 18:13:58 +02:00
],
],
2021-10-24 20:43:59 +02:00
\Friendica\Core\System::class => [
'constructParams' => [
2024-12-22 16:29:47 +00:00
$basepath,
],
],
2024-12-23 14:03:32 +00:00
\Friendica\App\Router::class => [
'constructParams' => [
2024-12-23 14:12:37 +00:00
$serverVars,
__DIR__ . '/routes.config.php',
[Dice::INSTANCE => Dice::SELF],
null
],
],
2024-12-23 14:30:14 +00:00
\Friendica\Core\L10n::class => [
'constructParams' => [
2024-12-23 14:18:22 +00:00
$serverVars, $getVars
],
],
2024-12-23 14:30:14 +00:00
\Friendica\Core\Session\Capability\IHandleSessions::class => [
2021-10-26 21:44:29 +02:00
'instanceOf' => \Friendica\Core\Session\Factory\Session::class,
'call' => [
2024-12-23 14:12:37 +00:00
['create', [$serverVars], Dice::CHAIN_CALL],
['start', [], Dice::CHAIN_CALL],
],
],
2024-12-23 14:30:14 +00:00
\Friendica\Core\Session\Capability\IHandleUserSessions::class => [
2022-10-18 22:20:04 +02:00
'instanceOf' => \Friendica\Core\Session\Model\UserSession::class,
],
2024-12-23 14:32:47 +00:00
\Friendica\Model\User\Cookie::class => [
'constructParams' => [
2024-12-23 14:23:58 +00:00
$cookieVars,
],
],
2024-12-23 14:31:41 +00:00
\Friendica\Core\Storage\Capability\ICanWriteToStorage::class => [
2024-12-23 14:30:14 +00:00
'instanceOf' => \Friendica\Core\Storage\Repository\StorageManager::class,
'call' => [
['getBackend', [], Dice::CHAIN_CALL],
],
],
2023-07-23 03:21:41 +02:00
\Friendica\Core\KeyValueStorage\Capability\IManageKeyValuePairs::class => [
2023-07-23 03:15:59 +02:00
'instanceOf' => \Friendica\Core\KeyValueStorage\Factory\KeyValueStorage::class,
'call' => [
['create', [], Dice::CHAIN_CALL],
],
],
2024-12-23 14:34:23 +00:00
\Friendica\Network\HTTPClient\Capability\ICanSendHttpRequests::class => [
'instanceOf' => \Friendica\Network\HTTPClient\Factory\HttpClient::class,
'call' => [
['createClient', [], Dice::CHAIN_CALL],
],
2021-06-05 22:36:45 +02:00
],
2024-12-23 14:32:47 +00:00
\Friendica\Model\Log\ParsedLogIterator::class => [
'constructParams' => [
[Dice::INSTANCE => Util\ReversedFileReader::class],
]
],
2021-11-06 20:21:01 +01:00
\Friendica\Core\Worker\Repository\Process::class => [
'constructParams' => [
2024-12-23 14:12:37 +00:00
$serverVars
2021-11-06 20:21:01 +01:00
],
],
2024-12-23 14:03:32 +00:00
\Friendica\App\Request::class => [
2022-06-23 22:42:35 +02:00
'constructParams' => [
2024-12-23 14:12:37 +00:00
$serverVars
2022-06-23 22:42:35 +02:00
],
],
\Psr\Clock\ClockInterface::class => [
'instanceOf' => Util\Clock\SystemClock::class
2022-12-26 21:17:32 +01:00
],
\Friendica\Module\Special\HTTPException::class => [
'constructParams' => [
2024-12-23 14:12:37 +00:00
$serverVars
2022-12-26 21:17:32 +01:00
],
],
\Friendica\Module\Api\ApiResponse::class => [
'constructParams' => [
2024-12-23 14:12:37 +00:00
$serverVars,
2024-12-23 14:18:22 +00:00
$getVars['callback'] ?? '',
],
],
2024-12-23 13:34:10 +00:00
];
2024-12-23 14:22:52 +00:00
})(
dirname(__FILE__, 2),
$_GET,
2024-12-23 14:23:58 +00:00
$_SERVER,
$_COOKIE
2024-12-23 14:22:52 +00:00
);