TwigForm

Template
in package

Analyzer class for Twig templates

Table of Contents

Properties

$for_attributes  : array<string|int, mixed>
$blockPrefix  : string
$defaults  : array<string|int, mixed>
$fetchDictionaryNamesRegex1  : string
$fetchDictionaryNamesRegex2  : string
$fetchDictionaryNamesRegex3  : string
$fetchDictionaryNamesRegex4  : string
$fors  : array<string|int, mixed>
$fullTemplate  : string
$ignoreSet  : bool
$include_tpl  : string
$loader  : array<string|int, mixed>
$localTemplate  : string
$twig  : Environment
$twigReservedVars  : array<string|int, mixed>
$variables  : array<string|int, mixed>

Methods

__construct()  : mixed
create the Twig instance for our current template
checkDefaultValue()  : bool
check if given variable has a default value
checkIgnoringSetVariables()  : bool
check if ignoring set variables is activ
defaultValue()  : mixed
fetch default value of variable
getBlocks()  : array<string|int, mixed>
function to get a list of all block names within this Object
getVariables()  : array<string|int, mixed>
function to get names of all defined variables
ignoreSetVariables()  : void
function to ignore set variables
checkForDictionaryCall()  : bool
check if a variable is used as dictionary within the given template by `{{ var[ xxx ] }}` syntax
extractBlocks()  : array<string|int, mixed>
function to analyse the template and extract blocks to separate templates
extractSubTemplate()  : string
function to extract a sub template – like blocks and for loops
fetchDictionaryNames()  : void
fetch dictionary names from template
flattenVariables()  : array<string|int, mixed>
create representation of variable names
getBlockEnds()  : array<string|int, mixed>
function to fetch all Twig Block endings
getBlockStarts()  : array<string|int, mixed>
function to fetch all Twig Block startings
getForEnds()  : array<string|int, mixed>
function to fetch all Twig For loop endings
getForStarts()  : array<string|int, mixed>
function to fetch all Twig For loop startings
treeFromFlattened()  : array<string|int, mixed>
function to build up tree structure of array from path
visitGetAttrExpression()  : array<string|int, mixed>
Visit Object|Array
walkThrough()  : array<string|int, mixed>
helper function to walk throuh the Twig template
addPreAndPostToMarks()  : void
add pre and post content to marks
analyse()  : array<string|int, mixed>
function that analyzes all defined templates for variables
analyseForVariables()  : void
function to finally get and map the variable names from for loops
analyzeTemplate()  : array<string|int, mixed>
function to start analyzing the template
appendForVariables()  : void
function that is used by `getVariables` function to append variable trees from fors
basicVarFetch()  : array<string|int, mixed>
basic variable fetch
checkDefaults()  : void
check for default values of variables
deepFetchVars()  : void
deeply fetch variables from template(s)
findNestedFors()  : void
find nested fors and their children fors
getNestedFors()  : all
get nested for loops from full template
orderMarks()  : array<string|int, mixed>
function to sort and group found marks
removeSetVarsIfSet()  : void
if option is activated remove variables that are set from within the template

Properties

$for_attributes

protected static array<string|int, mixed> $for_attributes = ['key' => [2], 'element' => [3], 'from' => [6], 'to' => [7], 'array' => [8], 'filter' => [10]]

key-group-mapping for "for" loop regex – see function getForStarts

$blockPrefix

private static string $blockPrefix = 'block.inc_'

prefix for block names

$defaults

private array<string|int, mixed> $defaults

list of default values

$fetchDictionaryNamesRegex1

private static string $fetchDictionaryNamesRegex1 = REGEX_DELIMITER . '\\{\\{\\s*'

part one of RegEx

$fetchDictionaryNamesRegex2

private static string $fetchDictionaryNamesRegex2 = '\\.([^\\s]+)(\\s*\\[.+\\])?\\s*\\}\\}' . REGEX_DELIMITER . 'im'

last part of RegEx

$fetchDictionaryNamesRegex3

private static string $fetchDictionaryNamesRegex3 = REGEX_DELIMITER . '\\{\\{\\s*([^\\.]+\\.)?'

part one of RegEx

$fetchDictionaryNamesRegex4

private static string $fetchDictionaryNamesRegex4 = '\\s*\\[\\s*([^\\s]+)\\s*\\]\\s*\\}\\}' . REGEX_DELIMITER . 'im'

last part of RegEx

$fors

private array<string|int, mixed> $fors

list of fors with children

$fullTemplate

private string $fullTemplate

full template without extracted sub strings (blocks)

$ignoreSet

private bool $ignoreSet = false

status if set variables should be ignored

$include_tpl

private static string $include_tpl = '*||%s||*'

default format string for template include

$loader

private array<string|int, mixed> $loader

list of templates by names

$localTemplate

private string $localTemplate = 'localTemplate'

name of local main template

$twig

private Environment $twig

Twig Environment

$twigReservedVars

private static array<string|int, mixed> $twigReservedVars = ['loop.*', '_key']

list of Twig reseverd variables

$variables

private array<string|int, mixed> $variables

tree of variables

Methods

__construct()

create the Twig instance for our current template

public __construct(string $template_string) : mixed
Parameters
$template_string : string

template string to be translated

checkDefaultValue()

check if given variable has a default value

public checkDefaultValue(string $var_name) : bool
Parameters
$var_name : string

variable name

Tags
throws
Exception

if variable var_name not existent

Return values
bool —

true if variable has a default value, false if not

checkIgnoringSetVariables()

check if ignoring set variables is activ

public checkIgnoringSetVariables() : bool
Return values
bool

defaultValue()

fetch default value of variable

public defaultValue(string $var_name[, bool $lookup = true ]) : mixed
Parameters
$var_name : string

name of variable

$lookup : bool = true

defaults to true – false if only directly defined default values should be returned

Tags
throws
Exception

if variable var_name not existent

Return values
mixed —

default value of variable defined within the template

getBlocks()

function to get a list of all block names within this Object

public getBlocks() : array<string|int, mixed>
Return values
array<string|int, mixed> —

list of block names

getVariables()

function to get names of all defined variables

public getVariables() : array<string|int, mixed>
Return values
array<string|int, mixed> —

list of variables

ignoreSetVariables()

function to ignore set variables

public ignoreSetVariables() : void

checkForDictionaryCall()

check if a variable is used as dictionary within the given template by `{{ var[ xxx ] }}` syntax

protected static checkForDictionaryCall(string $var, string $tpl) : bool
Parameters
$var : string

variable name to fetch subs from

$tpl : string

template string to work with

Return values
bool —

value if variable is used as dictionary

extractBlocks()

function to analyse the template and extract blocks to separate templates

protected static extractBlocks(string &$template) : array<string|int, mixed>
Parameters
$template : string

the template to be analyzed and the blocks should be striped out of

Return values
array<string|int, mixed> —

the list of sub-templates

extractSubTemplate()

function to extract a sub template – like blocks and for loops

protected static extractSubTemplate(string $key, array<string|int, mixed> &$all_marks, array<string|int, mixed> &$all_offsets, array<string|int, mixed> &$templates[, array<string|int, mixed>|null $pre = null ][, string $include_tpl = null ][, mixed $name_key = null ][, array<string|int, mixed> &$persisted_keys = [] ][, array<string|int, mixed> $persist_start_keys = [] ][, array<string|int, mixed> $persist_end_keys = [] ]) : string
Parameters
$key : string

current offset to start with

$all_marks : array<string|int, mixed>

list of all existing block marks (starts and ends)

$all_offsets : array<string|int, mixed>

list of all existing offsets

$templates : array<string|int, mixed>

list of templates defined

$pre : array<string|int, mixed>|null = null

null by default, string if something should be prepended to inner content of sub template

$include_tpl : string = null

format string of how to replace the template within template

$name_key : mixed = null
$persisted_keys : array<string|int, mixed> = []

the result-array of persisted keys from marks, identified by same identifier as sub template

$persist_start_keys : array<string|int, mixed> = []

keys of start marks to be persisted into result

$persist_end_keys : array<string|int, mixed> = []

keys of end marks to be persisted into result

Return values
string —

outer template containing replace string for inner template

fetchDictionaryNames()

fetch dictionary names from template

protected static fetchDictionaryNames(string $var, string $tpl, array<string|int, mixed> &$subs) : void
Parameters
$var : string

variable name to fetch subs from

$tpl : string

template string to work with

$subs : array<string|int, mixed>

sub keys of variable $var

flattenVariables()

create representation of variable names

protected static flattenVariables(mixed $variables, array<string|int, mixed> $tpls[, string $glue = '.' ]) : array<string|int, mixed>
Parameters
$variables : mixed

variable array to work with

$tpls : array<string|int, mixed>

list of templates used – should be $this->loader in most calls

$glue : string = '.'

glue for flat path representation

Return values
array<string|int, mixed> —

dot representation of variables

getBlockEnds()

function to fetch all Twig Block endings

protected static getBlockEnds(string $template) : array<string|int, mixed>
Parameters
$template : string

the template string

Return values
array<string|int, mixed> —

see \macwinnie\RegexFunctions\getRegexOccurences

getBlockStarts()

function to fetch all Twig Block startings

protected static getBlockStarts(string $template) : array<string|int, mixed>
Parameters
$template : string

the template string

Return values
array<string|int, mixed> —

see \macwinnie\RegexFunctions\getRegexOccurences – with name attribute

getForEnds()

function to fetch all Twig For loop endings

protected static getForEnds(string $template) : array<string|int, mixed>
Parameters
$template : string

the template string

Return values
array<string|int, mixed> —

see \macwinnie\RegexFunctions\getRegexOccurences

getForStarts()

function to fetch all Twig For loop startings

protected static getForStarts(string $template) : array<string|int, mixed>

recognized are these cases:

  • {% for element in array %}
  • {% for key, element in array %}
  • {% for (key, )element in array | filter %}
  • {% for element in from..to %}
Parameters
$template : string

the template string

Tags
todo

correct handling of filters with from..to along documentation of Twig

Return values
array<string|int, mixed> —

see \macwinnie\RegexFunctions\getRegexOccurences – with different attributes

treeFromFlattened()

function to build up tree structure of array from path

protected static treeFromFlattened(string $path[, string $separator = '.' ]) : array<string|int, mixed>
Parameters
$path : string

path to build representation from

$separator : string = '.'

separator within path representation

Return values
array<string|int, mixed> —

tree array

visitGetAttrExpression()

Visit Object|Array

protected visitGetAttrExpression(Node $ast[, string|null $subKey = null ][, array<string|int, mixed> $for = [] ]) : array<string|int, mixed>
Parameters
$ast : Node
$subKey : string|null = null

sub object|array key

$for : array<string|int, mixed> = []
Return values
array<string|int, mixed>

walkThrough()

helper function to walk throuh the Twig template

protected walkThrough(Node $ast[, array<string|int, mixed> $for = [] ]) : array<string|int, mixed>
Parameters
$ast : Node

Ast object from template

$for : array<string|int, mixed> = []

for array

Return values
array<string|int, mixed> —

list of variables

addPreAndPostToMarks()

add pre and post content to marks

private static addPreAndPostToMarks(array<string|int, mixed> $all_offsets, array<string|int, mixed> &$all_marks, string $template) : void
Parameters
$all_offsets : array<string|int, mixed>

list of offsets – the currently viewed mark

$all_marks : array<string|int, mixed>

all marks by their offsets

$template : string

template string to work on

analyse()

function that analyzes all defined templates for variables

private analyse(string $template_name) : array<string|int, mixed>
Parameters
$template_name : string

name of template to analyze

Return values
array<string|int, mixed> —

list of variable names

analyseForVariables()

function to finally get and map the variable names from for loops

private static analyseForVariables(array<string|int, mixed> &$nested, array<string|int, mixed> $tpls) : void
Parameters
$nested : array<string|int, mixed>

list of fors to work on

$tpls : array<string|int, mixed>

list of templates used – should be $this->loader in most calls

analyzeTemplate()

function to start analyzing the template

private analyzeTemplate(string $template_string) : array<string|int, mixed>
Parameters
$template_string : string

template to be analyzed

Return values
array<string|int, mixed> —

list of template and subtemplates / blocks

appendForVariables()

function that is used by `getVariables` function to append variable trees from fors

private appendForVariables([array<string|int, mixed> &$vars = [] ]) : void
Parameters
$vars : array<string|int, mixed> = []

existing list of given variables

basicVarFetch()

basic variable fetch

private basicVarFetch() : array<string|int, mixed>
Return values
array<string|int, mixed> —

list of main variable names

checkDefaults()

check for default values of variables

private checkDefaults() : void

deepFetchVars()

deeply fetch variables from template(s)

private deepFetchVars(array<string|int, mixed> &$vars) : void
Parameters
$vars : array<string|int, mixed>

array of variables

findNestedFors()

find nested fors and their children fors

private static findNestedFors(string $tpl, array<string|int, mixed> &$fors, array<string|int, mixed> &$nested, mixed $for_persisted) : void
Parameters
$tpl : string

current search template

$fors : array<string|int, mixed>

fors to be reduced / spread

$nested : array<string|int, mixed>

result array

$for_persisted : mixed

getNestedFors()

get nested for loops from full template

private getNestedFors() : all
Return values
all —

for loops of the main template

orderMarks()

function to sort and group found marks

private static orderMarks(array<string|int, mixed> $start_marks, array<string|int, mixed> $end_marks) : array<string|int, mixed>
Parameters
$start_marks : array<string|int, mixed>

result of getRegexOccurences

$end_marks : array<string|int, mixed>

result of getRegexOccurences

Return values
array<string|int, mixed> —

two arrays as array:

  • first: a list of all offsets
  • second: all marks

removeSetVarsIfSet()

if option is activated remove variables that are set from within the template

private removeSetVarsIfSet(array<string|int, mixed> &$vars) : void
Parameters
$vars : array<string|int, mixed>

list of main variable names


        
On this page

Search results