繁体   English   中英

在PHP中定义自定义超全局数组

[英]Defining custom superglobal array in PHP

如何在PHP中定义超全局数组?

我知道没有办法做到这一点。 但是我认为那里可能有一些“大脑”,知道它的解决方法。 具体来说,我想在每个具有相同数据的.php文件上都有一个数组。 我也想这样访问它:

echo $_HANS["foo"];

要么

if( isset($_HANS["foo"]) && !empty( $_HANS["foo"] ) ) // DO

对我来说重要的是,我不想有一个静态类,在这里我必须像这样访问我的成员:

myClass::myVariable;

到现在为止,我已经有了类似的东西,但是我想它并不是很有效:

define( 'HANS', serialize( array( 'FooKey' => 'FooData' ) ));

要访问它,我必须反序列化它。 将数据存储在变量中,然后可以与索引运算符一起使用。

$_HANS = array();
foreach(unserialize(HANS) as $Key => $Data)
{
    $_HANS[$Key] = $Data;
}
echo $_HANS["FooKey"];

必须有一种方法可以跳过每个文件中的整个foreach-stuff。

编辑======================================

好的,所以到现在为止,我有了这个小解决方法,它应该比包含整个新文件要有效的多。 但是我仍然在寻找更好的解决方案:)

我只是将此代码放在全局函数中:

function getData()
{
    $_DATA = array();
    foreach( unserialize(HANS) as $Key => $Data )
    {
        $_DATA[$Key] = $Data;
    }
    return $_DATA;
}

我要做的所有事情就是将这行代码放入每个.php文件中:

$_HANS = getData();

有关php.ini的问题是与提供“虚拟主机”的公司的兼容性。 它们通常为您提供Apache,PHP,MySQL和Perl的预定义安装(通常: LAMP ),并且不允许您编辑php.ini文件。

您可以在脚本的开头声明$myArray (可以使用一个前置文件),然后在之后的任何位置使用$GLOBALS['myArray']访问它。

您可以在php.ini中使用auto_prepend_fileauto_append_file配置指令,在其中可以定义任何全局变量的编组和解组。 您仍然需要做序列化技巧,但是您可以在一个地方完成它,而不必记住要包括处理程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM