Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F1432757
PhpSettingsSource.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
PhpSettingsSource.php
View Options
<?php
namespace
MediaWiki\Settings\Source
;
use
MediaWiki\Settings\SettingsBuilderException
;
use
Stringable
;
use
Wikimedia\AtEase\AtEase
;
/**
* Settings loaded from a PHP file path as an array structure.
*
* @since 1.38
*/
class
PhpSettingsSource
implements
Stringable
,
SettingsSource
,
SettingsIncludeLocator
{
/**
* Path to the PHP file.
* @var string
*/
private
$path
;
/**
* @param string $path
*/
public
function
__construct
(
string
$path
)
{
$this
->
path
=
$path
;
}
/**
* Loads an array structure from a PHP file and return
* for using with merge strategies to apply on configs.
*
* @throws SettingsBuilderException
* @return array
*/
public
function
load
():
array
{
// NOTE: try include first, for performance reasons. If all goes well, it will
// use the opcode cache, and will not touch the file system at all.
// So we should only go and look at the file system if the include fails.
$source
=
AtEase
::
quietCall
(
static
function
(
$path
)
{
return
include
$path
;
},
$this
->
path
);
if
(
$source
===
false
)
{
if
(
!
file_exists
(
$this
->
path
)
)
{
throw
new
SettingsBuilderException
(
"'File: {path}' does not exist"
,
[
'path'
=>
$this
->
path
]
);
}
if
(
!
is_readable
(
$this
->
path
)
)
{
throw
new
SettingsBuilderException
(
"File '{path}' is not readable"
,
[
'path'
=>
$this
->
path
]
);
}
if
(
is_dir
(
$this
->
path
)
)
{
throw
new
SettingsBuilderException
(
"'{path}' is a directory, not a file"
,
[
'path'
=>
$this
->
path
]
);
}
}
if
(
!
is_array
(
$source
)
)
{
throw
new
SettingsBuilderException
(
"File '{path}' did not return an array"
,
[
'path'
=>
$this
->
path
]
);
}
return
$source
;
}
/**
* Returns this file source as a string.
*
* @return string
*/
public
function
__toString
():
string
{
return
$this
->
path
;
}
public
function
locateInclude
(
string
$location
):
string
{
return
SettingsFileUtils
::
resolveRelativeLocation
(
$location
,
dirname
(
$this
->
path
)
);
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, May 16, 22:17 (1 d, 4 h)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
d6/b7/951af62eb905271950ca81c4fd86
Default Alt Text
PhpSettingsSource.php (2 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment