繁体   English   中英

只定义一次PHP常量

[英]Define PHP constant only once

我正在使用php.ini(在nginx上)存储PHP的数据库访问凭据,目的是从.php文件中获取此数据。

我想一次(仅)使用这些值设置全局常量,并使所有脚本均可访问它们。

我当前正在执行以下操作,该脚本是数据库接口脚本的require_once()。 它可以工作,但是在下一个请求或每当页面调用dbinterface脚本时,都必须再次定义常量,这可能是由于范围问题(据我所知)。

除了使用APC之外,还有其他方法可以只定义一次吗?

<?php
    if( !configLoaded() )
        loadConfig();


    function loadConfig()
    {
        $vars = array("A","B","C");

        foreach( $vars as $v )  
           define( $v, get_cfg_var( "ubaza.cfg.$v" ) );
    }


    function configLoaded() //returns false as soon as the caller script exits
    {
        return defined("A") && defined("B") && defined("C");
    }
?>

您还可以在htaccess中设置一个变量,并在PHP中获取它

SetEnv YOURVAR value

并在PHP中获取它:

print $_SERVER["YOURVAR"];

但是,由于要使用php.ini中的值作为常量-不确定是否可以在php.ini中的htaccess中设置它们

每次运行脚本时都必须“重新”定义常量,因为完成脚本后,垃圾回收会对其进行清理。

如果需要确保每个脚本仅定义一次常量,则说明操作正确-当前方法完全可以接受。

但是,如果你想一次定义的常量,从此再也不用担心他们, 永远 -看看hidef。

它允许您将常量放入.ini文件中,因此在执行任何脚本之前已经定义了它们。 巧合的是,它也是使用常量的最快方法,尽管它需要更多的RAM。

在运行其他任何内容之前使用auto_prepend_file运行脚本怎么样?

http://ie1.php.net/manual/zh/ini.core.php#ini.auto-prepend-file

这样,您可以编写一次脚本,然后在设置脚本时将在运行时开始定​​义所有常量。

暂无
暂无

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

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