Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yii2
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PSDI Army
yii2
Commits
b1a1458d
Commit
b1a1458d
authored
Dec 26, 2013
by
dev-meghraj
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fixes code style.
parent
eabcf1c7
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
168 additions
and
118 deletions
+168
-118
CHANGELOG.md
extensions/yii/twig/CHANGELOG.md
+1
-1
TwigSimpleFileLoader.php
extensions/yii/twig/TwigSimpleFileLoader.php
+65
-24
ViewRenderer.php
extensions/yii/twig/ViewRenderer.php
+76
-75
ViewRendererStaticClassProxy.php
extensions/yii/twig/ViewRendererStaticClassProxy.php
+26
-18
No files found.
extensions/yii/twig/CHANGELOG.md
View file @
b1a1458d
...
...
@@ -5,9 +5,9 @@ Yii Framework 2 twig extension Change Log
----------------------------
-
no changes in this release.
-
Add File based Twig loader for better caching and usability of twig's file based function
2.
0.0 alpha, December 1, 2013
-----------------------------
-
Initial release.
-
Add more features like in old and file based loader for twig files
extensions/yii/twig/TwigSimpleFileLoader.php
View file @
b1a1458d
<?php
/**
* Simple file system wrapper for twig to process twig files
*
* @link http://www.yiiframework.com/
* @copyright Copyright (c) 2008 Yii Software LLC
* @license http://www.yiiframework.com/license/
*/
namespace
yii\twig
;
/**
* Twig view file loader class
* Twig view file loader class
.
*
* @author dev-mraj <dev.meghraj@gmail.com>
* @version 1.0.0
*/
class
TwigSimpleFileLoader
implements
\Twig_LoaderInterface
{
/**
* Path to directory where all file exists
* @var string
*/
private
$dir
;
public
function
__construct
(
$dir
){
$this
->
dir
=
$dir
;
}
public
function
isFresh
(
$name
,
$time
){
return
filemtime
(
$this
->
getFilePath
(
$name
))
<=
$time
;
}
public
function
getSource
(
$name
){
return
file_get_contents
(
$this
->
getFilePath
(
$name
));
}
public
function
getCacheKey
(
$name
){
return
$this
->
getFilePath
(
$name
);
}
protected
function
getFilePath
(
$name
){
return
$this
->
dir
.
'/'
.
$name
;
}
/**
* @var string Path to directory
*/
private
$_dir
;
/*
* @param @dir string path to directory
*/
public
function
__construct
(
$dir
)
{
$this
->
_dir
=
$dir
;
}
/**
* Compare a file's freshness with previously stored timestamp
*
* @param $name string file name to check
* @param $time int timestamp to compare with
* @return bool true if file is still fresh and not changes, false otherwise
*/
public
function
isFresh
(
$name
,
$time
)
{
return
filemtime
(
$this
->
getFilePath
(
$name
))
<=
$time
;
}
/**
* get the source of given file name
*
* @param $name string file name
* @return string contents of given file name
*/
public
function
getSource
(
$name
)
{
return
file_get_contents
(
$this
->
getFilePath
(
$name
));
}
/**
* get a unique key that can represent this file uniquely among other files.
* @param $name
* @return string
*/
public
function
getCacheKey
(
$name
)
{
return
$this
->
getFilePath
(
$name
);
}
/**
* internally used to get absolute path of given file name
* @param $name string file name
* @return string absolute path of file
*/
protected
function
getFilePath
(
$name
){
return
$this
->
_dir
.
'/'
.
$name
;
}
}
\ No newline at end of file
extensions/yii/twig/ViewRenderer.php
View file @
b1a1458d
...
...
@@ -13,6 +13,7 @@ use Yii;
use
yii\base\View
;
use
yii\base\ViewRenderer
as
BaseViewRenderer
;
use
yii\helpers\Html
;
use
yii\twig\TwigSimpleFileLoader
;
/**
* TwigViewRenderer allows you to use Twig templates in views.
...
...
@@ -76,7 +77,7 @@ class ViewRenderer extends BaseViewRenderer
public
$lexerOptions
=
[];
/**
* @var \Twig_Environment
* @var \Twig_Environment
twig environment object that do all rendering twig templates
*/
public
$twig
;
...
...
@@ -85,40 +86,40 @@ class ViewRenderer extends BaseViewRenderer
$this
->
twig
=
new
\Twig_Environment
(
null
,
array_merge
([
'cache'
=>
Yii
::
getAlias
(
$this
->
cachePath
),
'auto_reload'
=>
true
,
'charset'
=>
Yii
::
$app
->
charset
,
'charset'
=>
Yii
::
$app
->
charset
,
],
$this
->
options
));
// Adding custom extensions
// Adding custom extensions
if
(
!
empty
(
$this
->
extensions
))
{
foreach
(
$this
->
extensions
as
$extension
)
{
$this
->
twig
->
addExtension
(
new
$extension
());
}
}
// Adding custom globals (objects or static classes)
if
(
!
empty
(
$this
->
globals
))
{
$this
->
addGlobals
(
$this
->
globals
);
}
// Adding custom functions
if
(
!
empty
(
$this
->
functions
))
{
$this
->
addFunctions
(
$this
->
functions
);
}
// Adding custom filters
if
(
!
empty
(
$this
->
filters
))
{
$this
->
addFilters
(
$this
->
filters
);
}
// Adding custom extensions
if
(
!
empty
(
$this
->
extensions
))
{
$this
->
addExtensions
(
$this
->
extensions
);
}
// Change lexer syntax
if
(
!
empty
(
$this
->
lexerOptions
))
{
$this
->
setLexerOptions
(
$this
->
lexerOptions
);
}
// Adding global 'void' function (usage: {{void(App.clientScript.registerScriptFile(...))}})
$this
->
twig
->
addFunction
(
'void'
,
new
\Twig_Function_Function
(
function
(
$argument
){
// Adding custom globals (objects or static classes)
if
(
!
empty
(
$this
->
globals
))
{
$this
->
addGlobals
(
$this
->
globals
);
}
// Adding custom functions
if
(
!
empty
(
$this
->
functions
))
{
$this
->
addFunctions
(
$this
->
functions
);
}
// Adding custom filters
if
(
!
empty
(
$this
->
filters
))
{
$this
->
addFilters
(
$this
->
filters
);
}
// Adding custom extensions
if
(
!
empty
(
$this
->
extensions
))
{
$this
->
addExtensions
(
$this
->
extensions
);
}
// Change lexer syntax
if
(
!
empty
(
$this
->
lexerOptions
))
{
$this
->
setLexerOptions
(
$this
->
lexerOptions
);
}
// Adding global 'void' function (usage: {{void(App.clientScript.registerScriptFile(...))}})
$this
->
twig
->
addFunction
(
'void'
,
new
\Twig_Function_Function
(
function
(
$argument
){
}));
...
...
@@ -145,31 +146,31 @@ class ViewRenderer extends BaseViewRenderer
public
function
render
(
$view
,
$file
,
$params
)
{
$this
->
twig
->
addGlobal
(
'this'
,
$view
);
$this
->
twig
->
setLoader
(
new
TwigSimpleFileLoader
(
dirname
(
$file
)));
$this
->
twig
->
setLoader
(
new
TwigSimpleFileLoader
(
dirname
(
$file
)));
return
$this
->
twig
->
render
(
pathinfo
(
$file
,
PATHINFO_BASENAME
),
$params
);
}
/**
* Adds global objects or static classes
* @param array $globals @see self::$globals
*/
/**
* Adds global objects or static classes
* @param array $globals @see self::$globals
*/
public
function
addGlobals
(
$globals
)
{
foreach
(
$globals
as
$name
=>
$value
)
{
if
(
!
is_object
(
$value
))
{
$value
=
new
ViewRendererStaticClassProxy
(
$value
);
}
$this
->
twig
->
addGlobal
(
$name
,
$value
);
}
foreach
(
$globals
as
$name
=>
$value
)
{
if
(
!
is_object
(
$value
))
{
$value
=
new
ViewRendererStaticClassProxy
(
$value
);
}
$this
->
twig
->
addGlobal
(
$name
,
$value
);
}
}
/**
* Adds custom functions
* @param array $functions @see self::$functions
*/
/**
* Adds custom functions
* @param array $functions @see self::$functions
*/
public
function
addFunctions
(
$functions
)
{
$this
->
_addCustom
(
'Function'
,
$functions
);
$this
->
_addCustom
(
'Function'
,
$functions
);
}
/**
...
...
@@ -178,7 +179,7 @@ class ViewRenderer extends BaseViewRenderer
*/
public
function
addFilters
(
$filters
)
{
$this
->
_addCustom
(
'Filter'
,
$filters
);
$this
->
_addCustom
(
'Filter'
,
$filters
);
}
/**
...
...
@@ -187,9 +188,9 @@ class ViewRenderer extends BaseViewRenderer
*/
public
function
addExtensions
(
$extensions
)
{
foreach
(
$extensions
as
$extName
)
{
$this
->
twig
->
addExtension
(
new
$extName
());
}
foreach
(
$extensions
as
$extName
)
{
$this
->
twig
->
addExtension
(
new
$extName
());
}
}
/**
...
...
@@ -198,8 +199,8 @@ class ViewRenderer extends BaseViewRenderer
*/
public
function
setLexerOptions
(
$options
)
{
$lexer
=
new
\Twig_Lexer
(
$this
->
twig
,
$options
);
$this
->
twig
->
setLexer
(
$lexer
);
$lexer
=
new
\Twig_Lexer
(
$this
->
twig
,
$options
);
$this
->
twig
->
setLexer
(
$lexer
);
}
/**
...
...
@@ -210,30 +211,30 @@ class ViewRenderer extends BaseViewRenderer
*/
private
function
_addCustom
(
$classType
,
$elements
)
{
$classFunction
=
'Twig_'
.
$classType
.
'_Function'
;
foreach
(
$elements
as
$name
=>
$func
)
{
$twigElement
=
null
;
switch
(
$func
)
{
// Just a name of function
case
is_string
(
$func
)
:
$twigElement
=
new
$classFunction
(
$func
);
break
;
// Name of function + options array
case
is_array
(
$func
)
&&
is_string
(
$func
[
0
])
&&
isset
(
$func
[
1
])
&&
is_array
(
$func
[
1
])
:
$twigElement
=
new
$classFunction
(
$func
[
0
],
$func
[
1
]);
break
;
}
if
(
$twigElement
!==
null
)
{
$this
->
twig
->
{
'add'
.
$classType
}(
$name
,
$twigElement
);
}
else
{
throw
new
\Exception
(
Yii
::
t
(
'yiiext'
,
'Incorrect options for "{classType}" [{name}]'
,
array
(
'{classType}'
=>
$classType
,
'{name}'
=>
$name
)));
}
}
}
$classFunction
=
'Twig_'
.
$classType
.
'_Function'
;
foreach
(
$elements
as
$name
=>
$func
)
{
$twigElement
=
null
;
switch
(
$func
)
{
// Just a name of function
case
is_string
(
$func
)
:
$twigElement
=
new
$classFunction
(
$func
);
break
;
// Name of function + options array
case
is_array
(
$func
)
&&
is_string
(
$func
[
0
])
&&
isset
(
$func
[
1
])
&&
is_array
(
$func
[
1
])
:
$twigElement
=
new
$classFunction
(
$func
[
0
],
$func
[
1
]);
break
;
}
if
(
$twigElement
!==
null
)
{
$this
->
twig
->
{
'add'
.
$classType
}(
$name
,
$twigElement
);
}
else
{
throw
new
\Exception
(
Yii
::
t
(
'yiiext'
,
'Incorrect options for "{classType}" [{name}]'
,
array
(
'{classType}'
=>
$classType
,
'{name}'
=>
$name
)));
}
}
}
}
extensions/yii/twig/ViewRendererStaticClassProxy.php
View file @
b1a1458d
<?php
/**
* Twig view renderer class file.
*
* @link http://www.yiiframework.com/
* @copyright Copyright © 2008 Yii Software LLC
* @license http://www.yiiframework.com/license/
*/
namespace
yii\twig
;
...
...
@@ -11,27 +18,27 @@ namespace yii\twig;
*/
class
ViewRendererStaticClassProxy
{
private
$_staticClassName
;
private
$_staticClassName
;
public
function
__construct
(
$staticClassName
)
{
$this
->
_staticClassName
=
$staticClassName
;
}
$this
->
_staticClassName
=
$staticClassName
;
}
public
function
__get
(
$property
)
{
$class
=
new
\ReflectionClass
(
$this
->
_staticClassName
);
return
$class
->
getStaticPropertyValue
(
$property
);
}
public
function
__get
(
$property
)
{
$class
=
new
\ReflectionClass
(
$this
->
_staticClassName
);
return
$class
->
getStaticPropertyValue
(
$property
);
}
public
function
__set
(
$property
,
$value
)
{
$class
=
new
\ReflectionClass
(
$this
->
_staticClassName
);
$class
->
setStaticPropertyValue
(
$property
,
$value
);
return
$value
;
}
public
function
__set
(
$property
,
$value
)
{
$class
=
new
\ReflectionClass
(
$this
->
_staticClassName
);
$class
->
setStaticPropertyValue
(
$property
,
$value
);
return
$value
;
}
public
function
__call
(
$method
,
$arguments
)
{
return
call_user_func_array
(
array
(
$this
->
_staticClassName
,
$method
),
$arguments
);
}
public
function
__call
(
$method
,
$arguments
)
{
return
call_user_func_array
(
array
(
$this
->
_staticClassName
,
$method
),
$arguments
);
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment