我有一个定制的网站,我在其中尝试创建与Wordpress的短代码类似的系统。我有一个PHP类,该类从TinyMCE中获取一串内容,然后检查这些“短代码”是否包含方括号,然后对内部参数进行处理。
该类查看一串内容,然后将其拆分为一个关联数组。如果阵列零件处于方格状态,则它将获取参数并运行一个函数。白色将输出附加回新的单个字符串中,并在页面上回显。
短代码遵循此模式,其中insert是将要运行的变量函数名称:
[insert="functionname",param1="",param2=""]
我的功能之一只是设计为允许在网站内容中包含自定义文件:
[insert="customfile",path="pathtofile"]
protected function customfile($params) {
if(isset($params['path'])) {
$mysqli = $GLOBALS['mysqli'];
ob_start();
$path = $params['path'];
include($_SERVER['DOCUMENT_ROOT'] . $path);
$output = ob_get_contents();
ob_get_clean();
return $output;
}
}
以上是我当前尝试包含文件的函数,最初我使用的是file_get_contents而不是include,但这导致php代码被写出而不是运行。
我现在遇到的问题是,如果我包含的php文件需要访问已经设置的变量,那么除非我将该变量定义为函数中的全局变量,否则它将无法执行此操作。例如mysqli连接。
我还有其他一些需要访问的变量,这些变量已在函数外部设置,但不想将所有变量都设置为全局变量,并且将来可能会增加列表。
是否有某种方式允许函数访问其作用域之外的每个变量?