Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F4073613
Registry.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
Registry.php
View Options
<?php
declare
(
strict_types
=
1
);
/*
* This file is part of the Monolog package.
*
* (c) Jordi Boggiano <j.boggiano@seld.be>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace
Monolog
;
use
InvalidArgumentException
;
/**
* Monolog log registry
*
* Allows to get `Logger` instances in the global scope
* via static method calls on this class.
*
* <code>
* $application = new Monolog\Logger('application');
* $api = new Monolog\Logger('api');
*
* Monolog\Registry::addLogger($application);
* Monolog\Registry::addLogger($api);
*
* function testLogger()
* {
* Monolog\Registry::api()->error('Sent to $api Logger instance');
* Monolog\Registry::application()->error('Sent to $application Logger instance');
* }
* </code>
*
* @author Tomas Tatarko <tomas@tatarko.sk>
*/
class
Registry
{
/**
* List of all loggers in the registry (by named indexes)
*
* @var Logger[]
*/
private
static
$loggers
=
[];
/**
* Adds new logging channel to the registry
*
* @param Logger $logger Instance of the logging channel
* @param string|null $name Name of the logging channel ($logger->getName() by default)
* @param bool $overwrite Overwrite instance in the registry if the given name already exists?
* @throws \InvalidArgumentException If $overwrite set to false and named Logger instance already exists
* @return void
*/
public
static
function
addLogger
(
Logger
$logger
,
?
string
$name
=
null
,
bool
$overwrite
=
false
)
{
$name
=
$name
?:
$logger
->
getName
();
if
(
isset
(
self
::
$loggers
[
$name
])
&&
!
$overwrite
)
{
throw
new
InvalidArgumentException
(
'Logger with the given name already exists'
);
}
self
::
$loggers
[
$name
]
=
$logger
;
}
/**
* Checks if such logging channel exists by name or instance
*
* @param string|Logger $logger Name or logger instance
*/
public
static
function
hasLogger
(
$logger
):
bool
{
if
(
$logger
instanceof
Logger
)
{
$index
=
array_search
(
$logger
,
self
::
$loggers
,
true
);
return
false
!==
$index
;
}
return
isset
(
self
::
$loggers
[
$logger
]);
}
/**
* Removes instance from registry by name or instance
*
* @param string|Logger $logger Name or logger instance
*/
public
static
function
removeLogger
(
$logger
):
void
{
if
(
$logger
instanceof
Logger
)
{
if
(
false
!==
(
$idx
=
array_search
(
$logger
,
self
::
$loggers
,
true
)))
{
unset
(
self
::
$loggers
[
$idx
]);
}
}
else
{
unset
(
self
::
$loggers
[
$logger
]);
}
}
/**
* Clears the registry
*/
public
static
function
clear
():
void
{
self
::
$loggers
=
[];
}
/**
* Gets Logger instance from the registry
*
* @param string $name Name of the requested Logger instance
* @throws \InvalidArgumentException If named Logger instance is not in the registry
*/
public
static
function
getInstance
(
$name
):
Logger
{
if
(!
isset
(
self
::
$loggers
[
$name
]))
{
throw
new
InvalidArgumentException
(
sprintf
(
'Requested "%s" logger instance is not in the registry'
,
$name
));
}
return
self
::
$loggers
[
$name
];
}
/**
* Gets Logger instance from the registry via static method call
*
* @param string $name Name of the requested Logger instance
* @param mixed[] $arguments Arguments passed to static method call
* @throws \InvalidArgumentException If named Logger instance is not in the registry
* @return Logger Requested instance of Logger
*/
public
static
function
__callStatic
(
$name
,
$arguments
)
{
return
self
::
getInstance
(
$name
);
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Aug 17 2026, 11:47 (11 w, 2 h ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
c5/04/90408bd2f0d0212baeaa122e07ff
Default Alt Text
Registry.php (3 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment