flexibuild/php-safe

此包的最新版本(0.2.0)没有可用的许可信息。

Yii2模板引擎。Php-Safe编译器生成的PHP代码与源代码类似,但带有安全的echo。

安装: 294

依赖者: 0

建议者: 0

安全: 0

星标: 1

关注者: 2

分支: 0

开放问题: 0

类型:yii2-extension

0.2.0 2015-06-19 10:32 UTC

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;'。