需要任意 PHP 文件,而不会将变量泄漏到作用域中
2022-08-30 16:11:51
在 PHP 中,是否可以在不将任何变量从当前作用域泄漏到所需文件的变量命名空间或污染全局变量作用域的情况下访问任意文件?require
我想用PHP文件做轻量级的模板,并且为了纯度的缘故,我想知道是否可以加载一个模板文件,除了预期的变量之外,它的作用域中没有任何变量。
我已经设置了一个测试,我希望解决方案通过。它应该可以要求并让它返回。RequiredFile.php
Success, no leaking variables.
必需文件.php:
<?php
print array() === get_defined_vars()
? "Success, no leaking variables."
: "Failed, leaked variables: ".implode(", ",array_keys(get_defined_vars()));
?>
我得到的最接近的是使用闭包,但它仍然返回。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() );
有什么想法吗?