Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F5966951
FactoryParameter.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
FactoryParameter.php
View Options
<?php
/*
Copyright (c) 2009 hamcrest.org
*/
class
FactoryParameter
{
/**
* @var FactoryMethod
*/
private
$method
;
/**
* @var ReflectionParameter
*/
private
$reflector
;
public
function
__construct
(
FactoryMethod
$method
,
ReflectionParameter
$reflector
)
{
$this
->
method
=
$method
;
$this
->
reflector
=
$reflector
;
}
/**
* Compute the declaration code.
*
* @return string
*/
public
function
getDeclaration
()
{
$code
=
$this
->
getTypeCode
()
.
$this
->
getInvocation
();
if
(
$this
->
reflector
->
isOptional
())
{
$default
=
$this
->
reflector
->
getDefaultValue
();
if
(
is_null
(
$default
))
{
$default
=
'null'
;
}
elseif
(
is_bool
(
$default
))
{
$default
=
$default
?
'true'
:
'false'
;
}
elseif
(
is_string
(
$default
))
{
$default
=
"'"
.
$default
.
"'"
;
}
elseif
(
is_numeric
(
$default
))
{
$default
=
strval
(
$default
);
}
elseif
(
is_array
(
$default
))
{
$default
=
'array()'
;
}
else
{
echo
'Warning: unknown default type for '
.
$this
->
getMethod
()->
getFullName
()
.
"
\n
"
;
var_dump
(
$default
);
$default
=
'null'
;
}
$code
.=
' = '
.
$default
;
}
return
$code
;
}
/**
* Compute the type code for the parameter.
*
* @return string
*/
private
function
getTypeCode
()
{
// Handle PHP 5 separately
if
(
PHP_VERSION_ID
<
70000
)
{
if
(
$this
->
reflector
->
isArray
())
{
return
'array'
;
}
$class
=
$this
->
reflector
->
getClass
();
return
$class
?
sprintf
(
'
\\
%s '
,
$class
->
getName
())
:
''
;
}
if
(!
$this
->
reflector
->
hasType
())
{
return
''
;
}
$type
=
$this
->
reflector
->
getType
();
$name
=
self
::
getQualifiedName
(
$type
);
// PHP 7.1+ supports nullable types via a leading question mark
return
(
PHP_VERSION_ID
>=
70100
&&
$type
->
allowsNull
())
?
sprintf
(
'?%s '
,
$name
)
:
sprintf
(
'%s '
,
$name
);
}
/**
* Compute qualified name for the given type.
*
* This function knows how to prefix class names with a leading slash and
* also how to handle PHP 8's union types.
*
* @param ReflectionType $type
*
* @return string
*/
private
static
function
getQualifiedName
(
ReflectionType
$type
)
{
// PHP 8 union types can be recursively processed
if
(
$type
instanceof
ReflectionUnionType
)
{
return
implode
(
'|'
,
array_map
(
function
(
ReflectionType
$type
)
{
// The "self::" call within a Closure is fine here because this
// code will only ever be executed on PHP 7.0+
return
self
::
getQualifiedName
(
$type
);
},
$type
->
getTypes
()));
}
// PHP 7.0 doesn't have named types, but 7.1+ does
$name
=
$type
instanceof
ReflectionNamedType
?
$type
->
getName
()
:
(
string
)
$type
;
return
$type
->
isBuiltin
()
?
$name
:
sprintf
(
'
\\
%s'
,
$name
);
}
/**
* Compute the invocation code.
*
* @return string
*/
public
function
getInvocation
()
{
return
sprintf
(
'$%s'
,
$this
->
reflector
->
getName
());
}
/**
* Compute the method name.
*
* @return string
*/
public
function
getMethod
()
{
return
$this
->
method
;
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, Oct 3, 12:02 (3 d, 14 h ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
3e/6c/3360e87ca84f43040d71327b9510
Default Alt Text
FactoryParameter.php (3 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment