mirror of
https://github.com/friendica/friendica
synced 2025-01-19 16:59:48 +00:00
Merge branch 'develop' into refactor-logger
This commit is contained in:
commit
b40db06ef3
17 changed files with 237 additions and 226 deletions
|
@ -44,15 +44,12 @@ if (php_sapi_name() !== 'cli') {
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
use Dice\Dice;
|
chdir(dirname(__DIR__));
|
||||||
|
|
||||||
chdir(dirname(__FILE__, 2));
|
require dirname(__DIR__) . '/vendor/autoload.php';
|
||||||
|
|
||||||
require dirname(__FILE__, 2) . '/vendor/autoload.php';
|
$container = \Friendica\Core\DiceContainer::fromBasePath(dirname(__DIR__));
|
||||||
|
|
||||||
$dice = (new Dice())->addRules(require(dirname(__FILE__, 2) . '/static/dependencies.config.php'));
|
|
||||||
|
|
||||||
$container = \Friendica\Core\Container::fromDice($dice);
|
|
||||||
$app = \Friendica\App::fromContainer($container);
|
$app = \Friendica\App::fromContainer($container);
|
||||||
|
|
||||||
$app->processEjabberd();
|
$app->processEjabberd();
|
||||||
|
|
|
@ -13,11 +13,10 @@ if (php_sapi_name() !== 'cli') {
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
use Dice\Dice;
|
|
||||||
|
|
||||||
require dirname(__DIR__) . '/vendor/autoload.php';
|
require dirname(__DIR__) . '/vendor/autoload.php';
|
||||||
|
|
||||||
$dice = (new Dice())->addRules(require(dirname(__DIR__) . '/static/dependencies.config.php'));
|
$container = \Friendica\Core\DiceContainer::fromBasePath(dirname(__DIR__));
|
||||||
|
|
||||||
$container = \Friendica\Core\Container::fromDice($dice);
|
$app = \Friendica\App::fromContainer($container);
|
||||||
\Friendica\Core\Console::create($container, $_SERVER['argv'] ?? [])->execute();
|
|
||||||
|
$app->processConsole($_SERVER['argv'] ?? []);
|
||||||
|
|
|
@ -19,17 +19,16 @@ if (php_sapi_name() !== 'cli') {
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
use Dice\Dice;
|
|
||||||
|
|
||||||
// Ensure that daemon.php is executed from the base path of the installation
|
// Ensure that daemon.php is executed from the base path of the installation
|
||||||
chdir(dirname(__DIR__));
|
chdir(dirname(__DIR__));
|
||||||
|
|
||||||
require dirname(__DIR__) . '/vendor/autoload.php';
|
require dirname(__DIR__) . '/vendor/autoload.php';
|
||||||
|
|
||||||
$dice = (new Dice())->addRules(require(dirname(__DIR__) . '/static/dependencies.config.php'));
|
|
||||||
|
|
||||||
$argv = $_SERVER['argv'] ?? [];
|
$argv = $_SERVER['argv'] ?? [];
|
||||||
array_splice($argv, 1, 0, "daemon");
|
array_splice($argv, 1, 0, "daemon");
|
||||||
|
|
||||||
$container = \Friendica\Core\Container::fromDice($dice);
|
$container = \Friendica\Core\DiceContainer::fromBasePath(dirname(__DIR__));
|
||||||
\Friendica\Core\Console::create($container, $argv)->execute();
|
|
||||||
|
$app = \Friendica\App::fromContainer($container);
|
||||||
|
|
||||||
|
$app->processConsole($argv);
|
||||||
|
|
|
@ -9,8 +9,6 @@
|
||||||
* @deprecated 2025.02 use bin/console.php jetstream instead
|
* @deprecated 2025.02 use bin/console.php jetstream instead
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use Dice\Dice;
|
|
||||||
|
|
||||||
if (php_sapi_name() !== 'cli') {
|
if (php_sapi_name() !== 'cli') {
|
||||||
header($_SERVER["SERVER_PROTOCOL"] . ' 403 Forbidden');
|
header($_SERVER["SERVER_PROTOCOL"] . ' 403 Forbidden');
|
||||||
exit();
|
exit();
|
||||||
|
@ -21,10 +19,11 @@ chdir(dirname(__DIR__));
|
||||||
|
|
||||||
require dirname(__DIR__) . '/vendor/autoload.php';
|
require dirname(__DIR__) . '/vendor/autoload.php';
|
||||||
|
|
||||||
$dice = (new Dice())->addRules(require(dirname(__DIR__) . '/static/dependencies.config.php'));
|
|
||||||
|
|
||||||
$argv = $_SERVER['argv'] ?? [];
|
$argv = $_SERVER['argv'] ?? [];
|
||||||
array_splice($argv, 1, 0, "jetstream");
|
array_splice($argv, 1, 0, "jetstream");
|
||||||
|
|
||||||
$container = \Friendica\Core\Container::fromDice($dice);
|
$container = \Friendica\Core\DiceContainer::fromBasePath(dirname(__DIR__));
|
||||||
\Friendica\Core\Console::create($container, $argv)->execute();
|
|
||||||
|
$app = \Friendica\App::fromContainer($container);
|
||||||
|
|
||||||
|
$app->processConsole($argv);
|
||||||
|
|
|
@ -16,17 +16,16 @@ if (php_sapi_name() !== 'cli') {
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
use Dice\Dice;
|
|
||||||
|
|
||||||
// Ensure that worker.php is executed from the base path of the installation
|
// Ensure that worker.php is executed from the base path of the installation
|
||||||
chdir(dirname(__DIR__));
|
chdir(dirname(__DIR__));
|
||||||
|
|
||||||
require dirname(__DIR__) . '/vendor/autoload.php';
|
require dirname(__DIR__) . '/vendor/autoload.php';
|
||||||
|
|
||||||
$dice = (new Dice())->addRules(require(dirname(__DIR__) . '/static/dependencies.config.php'));
|
|
||||||
|
|
||||||
$argv = $_SERVER['argv'] ?? [];
|
$argv = $_SERVER['argv'] ?? [];
|
||||||
array_splice($argv, 1, 0, "worker");
|
array_splice($argv, 1, 0, "worker");
|
||||||
|
|
||||||
$container = \Friendica\Core\Container::fromDice($dice);
|
$container = \Friendica\Core\DiceContainer::fromBasePath(dirname(__DIR__));
|
||||||
\Friendica\Core\Console::create($container, $argv)->execute();
|
|
||||||
|
$app = \Friendica\App::fromContainer($container);
|
||||||
|
|
||||||
|
$app->processConsole($argv);
|
||||||
|
|
|
@ -5,8 +5,6 @@
|
||||||
//
|
//
|
||||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
|
||||||
use Dice\Dice;
|
|
||||||
|
|
||||||
$start_time = microtime(true);
|
$start_time = microtime(true);
|
||||||
|
|
||||||
if (!file_exists(__DIR__ . '/vendor/autoload.php')) {
|
if (!file_exists(__DIR__ . '/vendor/autoload.php')) {
|
||||||
|
@ -17,9 +15,8 @@ require __DIR__ . '/vendor/autoload.php';
|
||||||
|
|
||||||
$request = \GuzzleHttp\Psr7\ServerRequest::fromGlobals();
|
$request = \GuzzleHttp\Psr7\ServerRequest::fromGlobals();
|
||||||
|
|
||||||
$dice = (new Dice())->addRules(require(__DIR__ . '/static/dependencies.config.php'));
|
$container = \Friendica\Core\DiceContainer::fromBasePath(__DIR__);
|
||||||
|
|
||||||
$container = \Friendica\Core\Container::fromDice($dice);
|
|
||||||
$app = \Friendica\App::fromContainer($container);
|
$app = \Friendica\App::fromContainer($container);
|
||||||
|
|
||||||
$app->processRequest($request, $start_time);
|
$app->processRequest($request, $start_time);
|
||||||
|
|
80
src/App.php
80
src/App.php
|
@ -17,6 +17,7 @@ use Friendica\App\Router;
|
||||||
use Friendica\Capabilities\ICanCreateResponses;
|
use Friendica\Capabilities\ICanCreateResponses;
|
||||||
use Friendica\Capabilities\ICanHandleRequests;
|
use Friendica\Capabilities\ICanHandleRequests;
|
||||||
use Friendica\Content\Nav;
|
use Friendica\Content\Nav;
|
||||||
|
use Friendica\Core\Addon\Capability\ICanLoadAddons;
|
||||||
use Friendica\Core\Config\Factory\Config;
|
use Friendica\Core\Config\Factory\Config;
|
||||||
use Friendica\Core\Container;
|
use Friendica\Core\Container;
|
||||||
use Friendica\Core\Logger\LoggerManager;
|
use Friendica\Core\Logger\LoggerManager;
|
||||||
|
@ -27,8 +28,10 @@ use Friendica\Database\Definition\ViewDefinition;
|
||||||
use Friendica\Module\Maintenance;
|
use Friendica\Module\Maintenance;
|
||||||
use Friendica\Security\Authentication;
|
use Friendica\Security\Authentication;
|
||||||
use Friendica\Core\Config\Capability\IManageConfigValues;
|
use Friendica\Core\Config\Capability\IManageConfigValues;
|
||||||
|
use Friendica\Core\DiceContainer;
|
||||||
use Friendica\Core\L10n;
|
use Friendica\Core\L10n;
|
||||||
use Friendica\Core\Logger\Capability\LogChannel;
|
use Friendica\Core\Logger\Capability\LogChannel;
|
||||||
|
use Friendica\Core\Logger\Handler\ErrorHandler;
|
||||||
use Friendica\Core\PConfig\Capability\IManagePersonalConfigValues;
|
use Friendica\Core\PConfig\Capability\IManagePersonalConfigValues;
|
||||||
use Friendica\Core\System;
|
use Friendica\Core\System;
|
||||||
use Friendica\Core\Update;
|
use Friendica\Core\Update;
|
||||||
|
@ -135,7 +138,13 @@ class App
|
||||||
],
|
],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$this->container->setup(LogChannel::APP, false);
|
$this->setupContainerForAddons();
|
||||||
|
|
||||||
|
$this->setupContainerForLogger(LogChannel::APP);
|
||||||
|
|
||||||
|
$this->setupLegacyServiceLocator();
|
||||||
|
|
||||||
|
$this->registerErrorHandler();
|
||||||
|
|
||||||
/** @var LoggerManager */
|
/** @var LoggerManager */
|
||||||
$loggerManager = $this->container->create(LoggerManager::class);
|
$loggerManager = $this->container->create(LoggerManager::class);
|
||||||
|
@ -173,9 +182,30 @@ class App
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function processConsole(array $argv): void
|
||||||
|
{
|
||||||
|
$this->setupContainerForAddons();
|
||||||
|
|
||||||
|
$this->setupContainerForLogger($this->determineLogChannel($argv));
|
||||||
|
|
||||||
|
$this->setupLegacyServiceLocator();
|
||||||
|
|
||||||
|
$this->registerErrorHandler();
|
||||||
|
|
||||||
|
$this->registerTemplateEngine();
|
||||||
|
|
||||||
|
(\Friendica\Core\Console::create($this->container, $argv))->execute();
|
||||||
|
}
|
||||||
|
|
||||||
public function processEjabberd(): void
|
public function processEjabberd(): void
|
||||||
{
|
{
|
||||||
$this->container->setup(LogChannel::AUTH_JABBERED, false);
|
$this->setupContainerForAddons();
|
||||||
|
|
||||||
|
$this->setupContainerForLogger(LogChannel::AUTH_JABBERED);
|
||||||
|
|
||||||
|
$this->setupLegacyServiceLocator();
|
||||||
|
|
||||||
|
$this->registerErrorHandler();
|
||||||
|
|
||||||
/** @var BasePath */
|
/** @var BasePath */
|
||||||
$basePath = $this->container->create(BasePath::class);
|
$basePath = $this->container->create(BasePath::class);
|
||||||
|
@ -192,6 +222,52 @@ class App
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function setupContainerForAddons(): void
|
||||||
|
{
|
||||||
|
/** @var ICanLoadAddons $addonLoader */
|
||||||
|
$addonLoader = $this->container->create(ICanLoadAddons::class);
|
||||||
|
|
||||||
|
foreach ($addonLoader->getActiveAddonConfig('dependencies') as $name => $rule) {
|
||||||
|
$this->container->addRule($name, $rule);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function determineLogChannel(array $argv): string
|
||||||
|
{
|
||||||
|
$command = strtolower($argv[1]) ?? '';
|
||||||
|
|
||||||
|
if ($command === 'daemon' || $command === 'jetstream') {
|
||||||
|
return LogChannel::DAEMON;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($command === 'worker') {
|
||||||
|
return LogChannel::WORKER;
|
||||||
|
}
|
||||||
|
|
||||||
|
// @TODO Add support for jetstream
|
||||||
|
|
||||||
|
return LogChannel::CONSOLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function setupContainerForLogger(string $logChannel): void
|
||||||
|
{
|
||||||
|
$this->container->addRule(LoggerInterface::class, [
|
||||||
|
'constructParams' => [$logChannel],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function setupLegacyServiceLocator(): void
|
||||||
|
{
|
||||||
|
if ($this->container instanceof DiceContainer) {
|
||||||
|
DI::init($this->container->getDice());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function registerErrorHandler(): void
|
||||||
|
{
|
||||||
|
ErrorHandler::register($this->container->create(LoggerInterface::class));
|
||||||
|
}
|
||||||
|
|
||||||
private function registerTemplateEngine(): void
|
private function registerTemplateEngine(): void
|
||||||
{
|
{
|
||||||
Renderer::registerTemplateEngine('Friendica\Render\FriendicaSmartyEngine');
|
Renderer::registerTemplateEngine('Friendica\Render\FriendicaSmartyEngine');
|
||||||
|
|
|
@ -32,7 +32,7 @@ abstract class AbstractConsole extends Console
|
||||||
*/
|
*/
|
||||||
protected function checkDeprecated(string $command): void
|
protected function checkDeprecated(string $command): void
|
||||||
{
|
{
|
||||||
if (substr($this->executable, -strlen(CoreConsole::getDefaultExecutable())) === CoreConsole::getDefaultExecutable()) {
|
if (substr($this->executable, -strlen(CoreConsole::getDefaultExecutable())) !== CoreConsole::getDefaultExecutable()) {
|
||||||
$this->out(sprintf("'%s' is deprecated and will removed. Please use 'bin/console.php %s' instead", $this->executable, $command));
|
$this->out(sprintf("'%s' is deprecated and will removed. Please use 'bin/console.php %s' instead", $this->executable, $command));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,6 @@ namespace Friendica\Core;
|
||||||
|
|
||||||
use Friendica;
|
use Friendica;
|
||||||
use Friendica\App;
|
use Friendica\App;
|
||||||
use Friendica\Core\Logger\Capability\LogChannel;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description of Console
|
* Description of Console
|
||||||
|
@ -187,12 +186,6 @@ HELP;
|
||||||
|
|
||||||
$className = $this->subConsoles[$command];
|
$className = $this->subConsoles[$command];
|
||||||
|
|
||||||
if (is_subclass_of($className, Friendica\Console\AbstractConsole::class)) {
|
|
||||||
$this->container->setup($className::LOG_CHANNEL);
|
|
||||||
} else {
|
|
||||||
$this->container->setup(LogChannel::CONSOLE);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @var Console $subconsole */
|
/** @var Console $subconsole */
|
||||||
$subconsole = $this->container->create($className, [$subargs]);
|
$subconsole = $this->container->create($className, [$subargs]);
|
||||||
|
|
||||||
|
|
|
@ -9,57 +9,11 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace Friendica\Core;
|
namespace Friendica\Core;
|
||||||
|
|
||||||
use Dice\Dice;
|
|
||||||
use Friendica\Core\Addon\Capability\ICanLoadAddons;
|
|
||||||
use Friendica\Core\Logger\Capability\LogChannel;
|
|
||||||
use Friendica\Core\Logger\Handler\ErrorHandler;
|
|
||||||
use Friendica\DI;
|
|
||||||
use Psr\Log\LoggerInterface;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Wrapper for the Dice class to make some basic setups
|
* Dependency Injection Container
|
||||||
*/
|
*/
|
||||||
class Container
|
interface Container
|
||||||
{
|
{
|
||||||
private Dice $container;
|
|
||||||
|
|
||||||
protected function __construct(Dice $container)
|
|
||||||
{
|
|
||||||
$this->container = $container;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates an instance with Dice
|
|
||||||
*
|
|
||||||
* @param Dice $container
|
|
||||||
*
|
|
||||||
* @return self
|
|
||||||
*/
|
|
||||||
public static function fromDice(Dice $container): self
|
|
||||||
{
|
|
||||||
return new self($container);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Initialize the container with the given parameters
|
|
||||||
*
|
|
||||||
* @param string $logChannel The Log Channel of this call
|
|
||||||
* @param bool $withTemplateEngine true, if the template engine should be set too
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function setup(string $logChannel = LogChannel::DEFAULT, bool $withTemplateEngine = true)
|
|
||||||
{
|
|
||||||
$this->setupContainerForAddons();
|
|
||||||
$this->setupContainerForLogger($logChannel);
|
|
||||||
$this->setupLegacyServiceLocator();
|
|
||||||
$this->registerErrorHandler();
|
|
||||||
|
|
||||||
if ($withTemplateEngine) {
|
|
||||||
$this->registerTemplateEngine();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a fully constructed object based on $name using $args and $share as constructor arguments if supplied
|
* Returns a fully constructed object based on $name using $args and $share as constructor arguments if supplied
|
||||||
* @param string $name name The name of the class to instantiate
|
* @param string $name name The name of the class to instantiate
|
||||||
|
@ -69,10 +23,7 @@ class Container
|
||||||
*
|
*
|
||||||
* @see Dice::create()
|
* @see Dice::create()
|
||||||
*/
|
*/
|
||||||
public function create(string $name, array $args = [], array $share = []): object
|
public function create(string $name, array $args = [], array $share = []): object;
|
||||||
{
|
|
||||||
return $this->container->create($name, $args, $share);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a rule $rule to the class $name
|
* Add a rule $rule to the class $name
|
||||||
|
@ -81,38 +32,5 @@ class Container
|
||||||
*
|
*
|
||||||
* @see Dice::addRule()
|
* @see Dice::addRule()
|
||||||
*/
|
*/
|
||||||
public function addRule(string $name, array $rule): void
|
public function addRule(string $name, array $rule): void;
|
||||||
{
|
|
||||||
$this->container = $this->container->addRule($name, $rule);
|
|
||||||
}
|
|
||||||
|
|
||||||
private function setupContainerForAddons(): void
|
|
||||||
{
|
|
||||||
/** @var ICanLoadAddons $addonLoader */
|
|
||||||
$addonLoader = $this->container->create(ICanLoadAddons::class);
|
|
||||||
|
|
||||||
$this->container = $this->container->addRules($addonLoader->getActiveAddonConfig('dependencies'));
|
|
||||||
}
|
|
||||||
|
|
||||||
private function setupContainerForLogger(string $logChannel): void
|
|
||||||
{
|
|
||||||
$this->container = $this->container->addRule(LoggerInterface::class, [
|
|
||||||
'constructParams' => [$logChannel],
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
private function setupLegacyServiceLocator(): void
|
|
||||||
{
|
|
||||||
DI::init($this->container);
|
|
||||||
}
|
|
||||||
|
|
||||||
private function registerErrorHandler(): void
|
|
||||||
{
|
|
||||||
ErrorHandler::register($this->container->create(LoggerInterface::class));
|
|
||||||
}
|
|
||||||
|
|
||||||
private function registerTemplateEngine(): void
|
|
||||||
{
|
|
||||||
Renderer::registerTemplateEngine('Friendica\Render\FriendicaSmartyEngine');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
74
src/Core/DiceContainer.php
Normal file
74
src/Core/DiceContainer.php
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// Copyright (C) 2010-2024, the Friendica project
|
||||||
|
// SPDX-FileCopyrightText: 2010-2024 the Friendica project
|
||||||
|
//
|
||||||
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Friendica\Core;
|
||||||
|
|
||||||
|
use Dice\Dice;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wrapper for the Dice class to make some basic setups
|
||||||
|
*/
|
||||||
|
final class DiceContainer implements Container
|
||||||
|
{
|
||||||
|
public static function fromBasePath(string $basePath): self
|
||||||
|
{
|
||||||
|
$path = $basePath . '/static/dependencies.config.php';
|
||||||
|
|
||||||
|
$dice = (new Dice())->addRules(require($path));
|
||||||
|
|
||||||
|
return new self($dice);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Dice $container;
|
||||||
|
|
||||||
|
private function __construct(Dice $container)
|
||||||
|
{
|
||||||
|
$this->container = $container;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a fully constructed object based on $name using $args and $share as constructor arguments if supplied
|
||||||
|
* @param string $name name The name of the class to instantiate
|
||||||
|
* @param array $args An array with any additional arguments to be passed into the constructor upon instantiation
|
||||||
|
* @param array $share a list of defined in shareInstances for objects higher up the object graph, should only be used internally
|
||||||
|
* @return object A fully constructed object based on the specified input arguments
|
||||||
|
*
|
||||||
|
* @see Dice::create()
|
||||||
|
*/
|
||||||
|
public function create(string $name, array $args = [], array $share = []): object
|
||||||
|
{
|
||||||
|
return $this->container->create($name, $args, $share);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a rule $rule to the class $name
|
||||||
|
* @param string $name The name of the class to add the rule for
|
||||||
|
* @param array $rule The container can be fully configured using rules provided by associative arrays. See {@link https://r.je/dice.html#example3} for a description of the rules.
|
||||||
|
*
|
||||||
|
* @see Dice::addRule()
|
||||||
|
*/
|
||||||
|
public function addRule(string $name, array $rule): void
|
||||||
|
{
|
||||||
|
$this->container = $this->container->addRule($name, $rule);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Only used to inject Dice into DI class
|
||||||
|
*
|
||||||
|
* @see \Friendica\DI
|
||||||
|
*
|
||||||
|
* @internal
|
||||||
|
*
|
||||||
|
* @deprecated
|
||||||
|
*/
|
||||||
|
public function getDice(): Dice
|
||||||
|
{
|
||||||
|
return $this->container;
|
||||||
|
}
|
||||||
|
}
|
|
@ -10,7 +10,6 @@ namespace Friendica\Core;
|
||||||
use Friendica\DI;
|
use Friendica\DI;
|
||||||
use Friendica\Core\Logger\Type\WorkerLogger;
|
use Friendica\Core\Logger\Type\WorkerLogger;
|
||||||
use Psr\Log\LoggerInterface;
|
use Psr\Log\LoggerInterface;
|
||||||
use Psr\Log\LogLevel;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Logger functions
|
* Logger functions
|
||||||
|
@ -191,21 +190,4 @@ class Logger
|
||||||
{
|
{
|
||||||
self::getInstance()->debug($message, $context);
|
self::getInstance()->debug($message, $context);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* An alternative logger for development.
|
|
||||||
*
|
|
||||||
* Works largely as log() but allows developers
|
|
||||||
* to isolate particular elements they are targeting
|
|
||||||
* personally without background noise
|
|
||||||
*
|
|
||||||
* @param string $message Message to log
|
|
||||||
* @param string $level Logging level
|
|
||||||
* @return void
|
|
||||||
* @throws \Exception
|
|
||||||
*/
|
|
||||||
public static function devLog(string $message, string $level = LogLevel::DEBUG)
|
|
||||||
{
|
|
||||||
DI::devLogger()->log($level, $message);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
12
src/DI.php
12
src/DI.php
|
@ -305,8 +305,8 @@ abstract class DI
|
||||||
public static function flushLogger()
|
public static function flushLogger()
|
||||||
{
|
{
|
||||||
$flushDice = self::$dice
|
$flushDice = self::$dice
|
||||||
->addRule(LoggerInterface::class, self::$dice->getRule(LoggerInterface::class))
|
->addRule(LoggerInterface::class, self::$dice->getRule(LoggerInterface::class));
|
||||||
->addRule('$devLogger', self::$dice->getRule('$devLogger'));
|
|
||||||
static::init($flushDice);
|
static::init($flushDice);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -323,14 +323,6 @@ abstract class DI
|
||||||
return self::$dice->create(LoggerInterface::class);
|
return self::$dice->create(LoggerInterface::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return LoggerInterface
|
|
||||||
*/
|
|
||||||
public static function devLogger()
|
|
||||||
{
|
|
||||||
return self::$dice->create('$devLogger');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return \Friendica\Core\Logger\Type\WorkerLogger
|
* @return \Friendica\Core\Logger\Type\WorkerLogger
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -187,12 +187,6 @@ return (function(string $basepath, array $getVars, array $serverVars, array $coo
|
||||||
\Friendica\Core\Logger\Capability\IHaveCallIntrospections::IGNORE_CLASS_LIST,
|
\Friendica\Core\Logger\Capability\IHaveCallIntrospections::IGNORE_CLASS_LIST,
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
'$devLogger' => [
|
|
||||||
'instanceOf' => \Friendica\Core\Logger\Factory\StreamLogger::class,
|
|
||||||
'call' => [
|
|
||||||
['createDev', [], Dice::CHAIN_CALL],
|
|
||||||
],
|
|
||||||
],
|
|
||||||
\Friendica\Core\Cache\Capability\ICanCache::class => [
|
\Friendica\Core\Cache\Capability\ICanCache::class => [
|
||||||
'instanceOf' => \Friendica\Core\Cache\Factory\Cache::class,
|
'instanceOf' => \Friendica\Core\Cache\Factory\Cache::class,
|
||||||
'call' => [
|
'call' => [
|
||||||
|
|
|
@ -1,48 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
// Copyright (C) 2010-2024, the Friendica project
|
|
||||||
// SPDX-FileCopyrightText: 2010-2024 the Friendica project
|
|
||||||
//
|
|
||||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Core;
|
|
||||||
|
|
||||||
use Dice\Dice;
|
|
||||||
use Friendica\Core\Container;
|
|
||||||
use PHPUnit\Framework\TestCase;
|
|
||||||
use Psr\Log\LoggerInterface;
|
|
||||||
use Psr\Log\NullLogger;
|
|
||||||
|
|
||||||
class ContainerTest extends TestCase
|
|
||||||
{
|
|
||||||
public function testFromDiceReturnsContainer(): void
|
|
||||||
{
|
|
||||||
$dice = $this->createMock(Dice::class);
|
|
||||||
$dice->expects($this->never())->method('create');
|
|
||||||
|
|
||||||
$container = Container::fromDice($dice);
|
|
||||||
|
|
||||||
$this->assertInstanceOf(Container::class, $container);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testCreateFromContainer(): void
|
|
||||||
{
|
|
||||||
$dice = $this->createMock(Dice::class);
|
|
||||||
$dice->expects($this->once())->method('create')->with(LoggerInterface::class)->willReturn(new NullLogger());
|
|
||||||
|
|
||||||
$container = Container::fromDice($dice);
|
|
||||||
|
|
||||||
$this->assertInstanceOf(NullLogger::class, $container->create(LoggerInterface::class));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testAddRuleFromContainer(): void
|
|
||||||
{
|
|
||||||
$dice = $this->createMock(Dice::class);
|
|
||||||
$dice->expects($this->once())->method('addRule')->with(LoggerInterface::class, ['constructParams' => ['console']])->willReturn($dice);
|
|
||||||
|
|
||||||
$container = Container::fromDice($dice);
|
|
||||||
$container->addRule(LoggerInterface::class, ['constructParams' => ['console']]);
|
|
||||||
}
|
|
||||||
}
|
|
52
tests/Unit/Core/DiceContainerTest.php
Normal file
52
tests/Unit/Core/DiceContainerTest.php
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// Copyright (C) 2010-2024, the Friendica project
|
||||||
|
// SPDX-FileCopyrightText: 2010-2024 the Friendica project
|
||||||
|
//
|
||||||
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Friendica\Test\Unit\Core;
|
||||||
|
|
||||||
|
use Friendica\Core\Container;
|
||||||
|
use Friendica\Core\DiceContainer;
|
||||||
|
use org\bovigo\vfs\vfsStream;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
use Psr\Log\LoggerInterface;
|
||||||
|
use Psr\Log\NullLogger;
|
||||||
|
|
||||||
|
class DiceContainerTest extends TestCase
|
||||||
|
{
|
||||||
|
public function testFromBasePathReturnsContainer(): void
|
||||||
|
{
|
||||||
|
$root = vfsStream::setup('friendica', null, [
|
||||||
|
'static' => [
|
||||||
|
'dependencies.config.php' => '<?php return [];',
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
|
||||||
|
$container = DiceContainer::fromBasePath($root->url());
|
||||||
|
|
||||||
|
$this->assertInstanceOf(Container::class, $container);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testCreateReturnsObject(): void
|
||||||
|
{
|
||||||
|
$root = vfsStream::setup('friendica', null, [
|
||||||
|
'static' => [
|
||||||
|
'dependencies.config.php' => <<< PHP
|
||||||
|
<?php return [
|
||||||
|
\Psr\Log\LoggerInterface::class => [
|
||||||
|
'instanceOf' => \Psr\Log\NullLogger::class,
|
||||||
|
],
|
||||||
|
];
|
||||||
|
PHP,
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
|
||||||
|
$container = DiceContainer::fromBasePath($root->url());
|
||||||
|
|
||||||
|
$this->assertInstanceOf(NullLogger::class, $container->create(LoggerInterface::class));
|
||||||
|
}
|
||||||
|
}
|
|
@ -21,7 +21,7 @@ use Psr\Log\LoggerInterface;
|
||||||
|
|
||||||
class DependencyCheckTest extends FixtureTestCase
|
class DependencyCheckTest extends FixtureTestCase
|
||||||
{
|
{
|
||||||
protected function setUp() : void
|
protected function setUp(): void
|
||||||
{
|
{
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
|
|
||||||
|
@ -118,18 +118,6 @@ class DependencyCheckTest extends FixtureTestCase
|
||||||
self::assertInstanceOf(LoggerInterface::class, $logger);
|
self::assertInstanceOf(LoggerInterface::class, $logger);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testDevLogger()
|
|
||||||
{
|
|
||||||
/** @var IManageConfigValues $config */
|
|
||||||
$config = $this->dice->create(IManageConfigValues::class);
|
|
||||||
$config->set('system', 'dlogfile', $this->root->url() . '/friendica.log');
|
|
||||||
|
|
||||||
/** @var LoggerInterface $logger */
|
|
||||||
$logger = $this->dice->create('$devLogger', ['dev']);
|
|
||||||
|
|
||||||
self::assertInstanceOf(LoggerInterface::class, $logger);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testCache()
|
public function testCache()
|
||||||
{
|
{
|
||||||
/** @var ICanCache $cache */
|
/** @var ICanCache $cache */
|
||||||
|
|
Loading…
Add table
Reference in a new issue