flexibuild / php-safe
Yii2模板引擎。Php-Safe编译器生成的PHP代码与源代码类似,但带有安全的echo。
Requires
- yiisoft/yii2: 2.0.*
This package is not auto-updated.
Last update: 2024-09-14 16:00:33 UTC
README
Yii2模板引擎。Php-Safe编译器生成的PHP代码与源代码类似,具有以下特性
<?= 'smth' ?>
,<?php echo 'smth' ?>
转换为类似<?php echo \yii\helpers\Html::encode('smth') ?>
的代码(安全转换);<?php print 'raw' ?>
转换为类似<?php print 'raw' ?>
的代码(不安全的转换)。
用法
要使用此扩展,请将以下代码添加到您的应用程序配置中
return [ //.... 'components' => [ //.... 'view' => [ 'renderers' => [ 'sphp' => [ 'class' => 'flexibuild\phpsafe\ViewRenderer', //the directory or path alias pointing to where Php-Safe engine compiled files will be stored. //'compiledPath' => '@runtime/flexibuild/PhpSafe/compiled', //'fileMode' => null, //'mkDirMode' => 0777, //the name of Yii application cache component for caching rendered files. //'cacheComponent' => 'cache', //'compilerConfig' => [ // see flexibuild\phpsafe\Compiler for more info //], ], ], ], //.... ], //.... ];
然后您可以使用扩展名 .sphp
创建视图文件并编写简单的PHP代码。您的视图文件中的所有 echo
结构(例如 <?=
,<?php echo...
)都将转换为安全的echo。如果您需要输出原始HTML,可以使用 print
语法。
注意
-
Php-Safe引擎使用
token_get_all()
方法来解析代码。它非常快。 -
Php-Safe引擎不会解析函数、类、接口 & 特性结构。这也意味着php-safe引擎不会在匿名函数体中工作。
-
Php-Safe引擎将仅解析您的
.sphp
视图文件中的代码。它对您的其他代码一无所知。 -
如果您的PHP配置为使用短标签和/或asp标签,php-safe也会解析这些标签。
-
您可以将您的IDE配置为将
.sphp
文件解析为.php
文件,以提高便利性。 -
默认情况下,php-safe引擎将仅在第一次渲染时编译视图。
-
请注意:类似
<?= print('smth') ?>
的代码将转换为类似<?php echo \yii\helpers\Html::encode(print('smth')) ?>
的代码。执行此代码后,将输出原始的 'smth' 并回显安全的 '1',因为PHP引擎将回显print函数的结果(它始终返回1)。
安装
安装此扩展的最佳方式是通过 composer。
或者运行
php composer.phar require --prefer-dist "flexibuild/php-safe *"
或者将以下内容添加到您的composer.json的require部分。
"flexibuild/php-safe": "*"
Gii生成器
此扩展允许您配置您的gii模块以使用标准yii生成器与phpsafe文件。例如,您可以在您的主-local文件中添加它
$config['modules']['gii'] = [ 'class' => 'yii\gii\Module', 'generators' => [ 'controller' => 'flexibuild\phpsafe\gii\generators\controller\Generator', 'crud' => 'flexibuild\phpsafe\gii\generators\crud\Generator', 'form' => 'flexibuild\phpsafe\gii\generators\form\Generator', 'module' => 'flexibuild\phpsafe\gii\generators\module\Generator', ], ];
控制台命令
此扩展允许您执行以下控制台命令
-
yii phpsafe/flush-all
清除所有由phpsafe引擎编译的文件。 -
yii phpsafe/compile-all
将所有phpsafe文件编译为PHP文件。
要使用控制台命令,您必须配置控制台,使其具有类似于网络配置中的渲染器。您必须在控制台控制器映射配置中添加phpsafe控制台控制器
return [ //.... 'controllerMap' => [ //.... 'phpsafe' => 'flexibuild\phpsafe\console\PhpsafeController', //.... ], //.... 'components' => [ //.... 'view' => [ 'renderers' => [ 'sphp' => [ 'class' => 'flexibuild\phpsafe\ViewRenderer', // ... and other parameters exactly as in the web configuration ], ], ], //.... ], //.... ];
注意
- 扩展为yii简单基本应用程序具有默认配置。对于yii-advanced应用程序,您必须配置目录,以便控制台可以“看到”它。
- 为了更好的调试,我们建议您在您的网络应用程序中使用 \flexibuild\phpsafe\web\ErrorHandler,或者在自己的错误处理器中添加 'use \flexibuild\phpsafe\web\ErrorHandlerTrait;'。