Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F1432356
TraitUseAdaptation.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
TraitUseAdaptation.php
View Options
<?php
declare
(
strict_types
=
1
);
namespace
PhpParser\Builder
;
use
PhpParser\Builder
;
use
PhpParser\BuilderHelpers
;
use
PhpParser\Node
;
use
PhpParser\Node\Stmt
;
class
TraitUseAdaptation
implements
Builder
{
const
TYPE_UNDEFINED
=
0
;
const
TYPE_ALIAS
=
1
;
const
TYPE_PRECEDENCE
=
2
;
/** @var int Type of building adaptation */
protected
$type
;
protected
$trait
;
protected
$method
;
protected
$modifier
=
null
;
protected
$alias
=
null
;
protected
$insteadof
=
[];
/**
* Creates a trait use adaptation builder.
*
* @param Node\Name|string|null $trait Name of adaptated trait
* @param Node\Identifier|string $method Name of adaptated method
*/
public
function
__construct
(
$trait
,
$method
)
{
$this
->
type
=
self
::
TYPE_UNDEFINED
;
$this
->
trait
=
is_null
(
$trait
)?
null
:
BuilderHelpers
::
normalizeName
(
$trait
);
$this
->
method
=
BuilderHelpers
::
normalizeIdentifier
(
$method
);
}
/**
* Sets alias of method.
*
* @param Node\Identifier|string $alias Alias for adaptated method
*
* @return $this The builder instance (for fluid interface)
*/
public
function
as
(
$alias
)
{
if
(
$this
->
type
===
self
::
TYPE_UNDEFINED
)
{
$this
->
type
=
self
::
TYPE_ALIAS
;
}
if
(
$this
->
type
!==
self
::
TYPE_ALIAS
)
{
throw
new
\LogicException
(
'Cannot set alias for not alias adaptation buider'
);
}
$this
->
alias
=
$alias
;
return
$this
;
}
/**
* Sets adaptated method public.
*
* @return $this The builder instance (for fluid interface)
*/
public
function
makePublic
()
{
$this
->
setModifier
(
Stmt\Class_
::
MODIFIER_PUBLIC
);
return
$this
;
}
/**
* Sets adaptated method protected.
*
* @return $this The builder instance (for fluid interface)
*/
public
function
makeProtected
()
{
$this
->
setModifier
(
Stmt\Class_
::
MODIFIER_PROTECTED
);
return
$this
;
}
/**
* Sets adaptated method private.
*
* @return $this The builder instance (for fluid interface)
*/
public
function
makePrivate
()
{
$this
->
setModifier
(
Stmt\Class_
::
MODIFIER_PRIVATE
);
return
$this
;
}
/**
* Adds overwritten traits.
*
* @param Node\Name|string ...$traits Traits for overwrite
*
* @return $this The builder instance (for fluid interface)
*/
public
function
insteadof
(...
$traits
)
{
if
(
$this
->
type
===
self
::
TYPE_UNDEFINED
)
{
if
(
is_null
(
$this
->
trait
))
{
throw
new
\LogicException
(
'Precedence adaptation must have trait'
);
}
$this
->
type
=
self
::
TYPE_PRECEDENCE
;
}
if
(
$this
->
type
!==
self
::
TYPE_PRECEDENCE
)
{
throw
new
\LogicException
(
'Cannot add overwritten traits for not precedence adaptation buider'
);
}
foreach
(
$traits
as
$trait
)
{
$this
->
insteadof
[]
=
BuilderHelpers
::
normalizeName
(
$trait
);
}
return
$this
;
}
protected
function
setModifier
(
int
$modifier
)
{
if
(
$this
->
type
===
self
::
TYPE_UNDEFINED
)
{
$this
->
type
=
self
::
TYPE_ALIAS
;
}
if
(
$this
->
type
!==
self
::
TYPE_ALIAS
)
{
throw
new
\LogicException
(
'Cannot set access modifier for not alias adaptation buider'
);
}
if
(
is_null
(
$this
->
modifier
))
{
$this
->
modifier
=
$modifier
;
}
else
{
throw
new
\LogicException
(
'Multiple access type modifiers are not allowed'
);
}
}
/**
* Returns the built node.
*
* @return Node The built node
*/
public
function
getNode
()
:
Node
{
switch
(
$this
->
type
)
{
case
self
::
TYPE_ALIAS
:
return
new
Stmt\TraitUseAdaptation\Alias
(
$this
->
trait
,
$this
->
method
,
$this
->
modifier
,
$this
->
alias
);
case
self
::
TYPE_PRECEDENCE
:
return
new
Stmt\TraitUseAdaptation\Precedence
(
$this
->
trait
,
$this
->
method
,
$this
->
insteadof
);
default
:
throw
new
\LogicException
(
'Type of adaptation is not defined'
);
}
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, May 16, 21:40 (1 d, 5 h)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
00/31/5546acd07a445b65d64daf3254af
Default Alt Text
TraitUseAdaptation.php (4 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment