FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
phpbench/lib/Development/ConfigDumper.php at program-executor · phpbench/phpbench · GitHub
Uh oh!
There was an error while loading.
Please reload this page
.
phpbench
/
phpbench
Public
Uh oh!
There was an error while loading.
Please reload this page
.
Notifications
You must be signed in to change notification settings
Fork
133
Star
2k
Code
Issues
28
Pull requests
10
Discussions
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Discussions
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
phpbench
/
lib
/
Development
/
ConfigDumper.php
Copy path
More file actions
More file actions
Latest commit
History
History
History
121 lines (102 loc) · 3.67 KB
Breadcrumbs
phpbench
/
lib
/
Development
/
ConfigDumper.php
Copy path
File metadata and controls
121 lines (102 loc) · 3.67 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
<?php
namespace
PhpBench
\
Development
;
use
PhpBench
\
DependencyInjection
\
ExtensionInterface
;
use
Symfony
\
Component
\
OptionsResolver
\
Debug
\
OptionsResolverIntrospector
;
use
Symfony
\
Component
\
OptionsResolver
\
Exception
\
NoConfigurationException
;
use
Symfony
\
Component
\
OptionsResolver
\
OptionsResolver
;
use
function
json_encode
;
use
function
mb_strlen
;
use
function
method_exists
;
use
function
str_repeat
;
class
ConfigDumper
{
public
const
TITLE
=
'
Configuration
'
;
/**
* @var class-string[]
*/
private
$
extensions
;
/**
* @param class-string[] $extensions
*/
public
function
__construct
(
array
$
extensions
)
{
$
this
->
extensions
=
$
extensions
;
}
public
function
dump
():
string
{
if
(!
method_exists
(OptionsResolver::class,
'
getInfo
'
)) {
return
'
Config reference generation requires Symfony Options Resolver ^5.0
'
;
}
$
sections
= [
self
::
TITLE
,
$
this
->
underline
(
self
::
TITLE
,
'
=
'
),
''
,
'
.. include:: configuration-prelude.rst
'
,
''
,
'
.. contents::
'
,
'
:depth: 2
'
,
'
:local:
'
,
''
,
];
foreach
(
$
this
->
extensions
as
$
extensionClass
) {
$
optionsResolver
=
new
OptionsResolver
();
$
extension
=
new
$
extensionClass
();
assert
(
$
extension
instanceof
ExtensionInterface);
$
extension
->
configure
(
$
optionsResolver
);
if
(!
$
optionsResolver
->
getDefinedOptions
()) {
continue
;
}
$
inspector
=
new
OptionsResolverIntrospector
(
$
optionsResolver
);
$
sections
[] =
$
this
->
generateSection
(
$
extensionClass
,
$
optionsResolver
,
$
inspector
);
}
return
implode
(
"\n"
,
$
sections
);
}
private
function
generateSection
(
string
$
extensionClass
,
OptionsResolver
$
optionsResolver
,
OptionsResolverIntrospector
$
inspector
):
string
{
$
shortName
=
substr
(
$
extensionClass
, (
int
)
strrpos
(
$
extensionClass
,
'\\'
) +
1
);
$
shortName
=
substr
(
$
shortName
,
0
, (
int
)
strrpos
(
$
shortName
,
'
Extension
'
));
$
section
= [
$
shortName
,
$
this
->
underline
(
$
shortName
,
'
-
'
),
''
,
sprintf
(
'
Extension class: ``%s``
'
,
$
extensionClass
),
''
];
foreach
(
$
optionsResolver
->
getDefinedOptions
()
as
$
option
) {
$
section
[] =
sprintf
(
'
.. _configuration_%s:
'
,
str_replace
(
'
.
'
,
'
_
'
,
$
option
));
$
section
[] =
''
;
$
section
[] =
$
option
;
$
section
[] =
$
this
->
underline
(
$
option
,
'
~
'
);
$
section
[] =
''
;
$
section
[] =
$
optionsResolver
->
getInfo
(
$
option
);
$
section
[] =
''
;
$
section
[] =
sprintf
(
'
Default: ``%s``
'
,
$
this
->
prettyPrint
(
$
inspector
->
getDefault
(
$
option
)));
$
section
[] =
''
;
$
section
[] =
sprintf
(
'
Types: ``%s``
'
,
$
this
->
prettyPrint
(
$
inspector
->
getAllowedTypes
(
$
option
)));
$
section
[] =
''
;
try
{
$
section
[] =
sprintf
(
'
Allowed values: ``%s``
'
,
$
this
->
prettyPrint
(
$
inspector
->
getAllowedValues
(
$
option
)));
$
section
[] =
''
;
}
catch
(
NoConfigurationException
$
e
) {
}
}
return
implode
(
"\n"
,
$
section
);
}
private
function
underline
(
string
$
string
,
string
$
char
):
string
{
return
str_repeat
(
$
char
,
mb_strlen
(
$
string
));
}
private
function
prettyPrint
(
$
value
):
string
{
if
(
is_bool
(
$
value
)) {
return
$
value
?
'
true
'
:
'
false
'
;
}
if
(
is_scalar
(
$
value
)) {
return
(
string
)
$
value
;
}
if
(
is_null
(
$
value
)) {
return
'
NULL
'
;
}
return
json_encode
(
$
value
);
}
}
Back
|
FazBrowse Home
|
New Git URL