Ken*_*ins 25 php scope global-variables
是否有可能在PHP中require的任意文件,而从目前的范围泄露任何变量到所需文件的变量命名空间或污染全局变量的范围是什么?
我想用PHP文件进行轻量级模板化,并且如果有可能加载模板文件而没有任何变量在其范围内而且是预期的模板文件,那就是为了纯度而感到疑惑.
我已经设置了一个我希望通过解决方案的测试.应该要求RequiredFile.php并让它返回Success, no leaking variables..
RequiredFile.php:
<?php
print array() === get_defined_vars()
? "Success, no leaking variables."
: "Failed, leaked variables: ".implode(", ",array_keys(get_defined_vars()));
?>
Run Code Online (Sandbox Code Playgroud)
我得到的最接近的是使用一个闭包,但它仍然会返回Failed, leaked variables: _file.
$scope = function( $_file, array $scope_variables ) {
extract( $scope_variables ); unset( $scope_variables );
//No way to prevent $_file from leaking since it's used in the require call
require( $_file );
};
$scope( "RequiredFile.php", array() );
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
lis*_*nko 22
看这个:
$scope = function() {
// It's very simple :)
extract( func_get_arg(1) );
require func_get_arg(0);
};
$scope( "RequiredFile.php", array() );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2686 次 |
| 最近记录: |