Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
getCallable example
public
function
compile
(
Compiler
$compiler
)
: void
{
$name
=
$this
->
getNode
(
'filter'
)
->
getAttribute
(
'value'
)
;
$filter
=
$compiler
->
getEnvironment
(
)
->
getFilter
(
$name
)
;
$this
->
setAttribute
(
'name',
$name
)
;
$this
->
setAttribute
(
'type', 'filter'
)
;
$this
->
setAttribute
(
'needs_environment',
$filter
->
needsEnvironment
(
)
)
;
$this
->
setAttribute
(
'needs_context',
$filter
->
needsContext
(
)
)
;
$this
->
setAttribute
(
'arguments',
$filter
->
getArguments
(
)
)
;
$this
->
setAttribute
(
'callable',
$filter
->
getCallable
(
)
)
;
$this
->
setAttribute
(
'is_variadic',
$filter
->
isVariadic
(
)
)
;
$this
->
compileCallable
(
$compiler
)
;
}
}
parent::
__construct
(
$nodes
,
[
'name' =>
$name
]
,
$lineno
)
;
}
public
function
compile
(
Compiler
$compiler
)
: void
{
$name
=
$this
->
getAttribute
(
'name'
)
;
$test
=
$compiler
->
getEnvironment
(
)
->
getTest
(
$name
)
;
$this
->
setAttribute
(
'name',
$name
)
;
$this
->
setAttribute
(
'type', 'test'
)
;
$this
->
setAttribute
(
'arguments',
$test
->
getArguments
(
)
)
;
$this
->
setAttribute
(
'callable',
$test
->
getCallable
(
)
)
;
$this
->
setAttribute
(
'is_variadic',
$test
->
isVariadic
(
)
)
;
$this
->
compileCallable
(
$compiler
)
;
}
}
private
function
getMetadata
(
string
$type
, mixed
$entity
)
: mixed
{
if
(
'globals' ===
$type
)
{
return
$entity
;
}
if
(
'tests' ===
$type
)
{
return
null;
}
if
(
'functions' ===
$type
|| 'filters' ===
$type
)
{
$cb
=
$entity
->
getCallable
(
)
;
if
(
null ===
$cb
)
{
return
null;
}
if
(
\
is_array
(
$cb
)
)
{
if
(
!
method_exists
(
$cb
[
0
]
,
$cb
[
1
]
)
)
{
return
null;
}
$refl
=
new
\
ReflectionMethod
(
$cb
[
0
]
,
$cb
[
1
]
)
;
}
elseif
(
\
is_object
(
$cb
)
&&
method_exists
(
$cb
, '__invoke'
)
)
{
$refl
=
new
\
ReflectionMethod
(
$cb
, '__invoke'
)
;
}
elseif
(
\
function_exists
(
$cb
)
)
{
public
function
compile
(
Compiler
$compiler
)
{
$name
=
$this
->
getAttribute
(
'name'
)
;
$function
=
$compiler
->
getEnvironment
(
)
->
getFunction
(
$name
)
;
$this
->
setAttribute
(
'name',
$name
)
;
$this
->
setAttribute
(
'type', 'function'
)
;
$this
->
setAttribute
(
'needs_environment',
$function
->
needsEnvironment
(
)
)
;
$this
->
setAttribute
(
'needs_context',
$function
->
needsContext
(
)
)
;
$this
->
setAttribute
(
'arguments',
$function
->
getArguments
(
)
)
;
$callable
=
$function
->
getCallable
(
)
;
if
(
'constant' ===
$name
&&
$this
->
getAttribute
(
'is_defined_test'
)
)
{
$callable
= 'twig_constant_is_defined';
}
$this
->
setAttribute
(
'callable',
$callable
)
;
$this
->
setAttribute
(
'is_variadic',
$function
->
isVariadic
(
)
)
;
$this
->
compileCallable
(
$compiler
)
;
}
}