如何加载静态配置信息

时间:2010-04-08 17:01:05

标签: php javascript

在我的代码中,我将JavaScript用于UI和PHP用于后端。我还使用PHP来存储应用程序设置,有时我的UI代码需要访问这些信息。我的配置文件看起来像这样(config.php):

$resolution_x = 1920;
$resolution_y = 1080;
etc...

当我需要从JavaScript访问任何这些设置时,我只需使用

<?php echo ... ?>

直接替换该值,但它并没有让我觉得非常强大。

我不知道这样做有危险吗?有没有更好的方法呢?

谢谢,

3 个答案:

答案 0 :(得分:3)

这是你在找什么?

<script type="text/javascript">
    var resolution_x = <?php echo $resultion_x; ?>;
</script>

我认为这是最强大的方式,除非您想通过JavaScript自行找出解决方案。

你可以使它更高级:

<强>的config.php

<?php
    $congig = array(
        'resolution_x' => 1024,
        'resolution_y' => 768
        );
?>

<强>的index.php

<?php
    include('config.php');
?>
<script type="text/javascript">
    var config = <?php echo json_encode($config); ?>;
    alert(config.resolution_x);
</script>

答案 1 :(得分:1)

也许这就是您已经在做的事情,但您可以{j}将echo配置值转换为javascript中的变量。 IE:var Resolution_X = <?php echo $resolution_x; ?>;

答案 2 :(得分:1)

如果你需要添加很多选项,逐个回复变量会变得乏味。已经有一个更好的解决方案建议使用数组和包含,但是也有可能在后端创建一个具有将配置作为数组获取的方法的对象。

然后,您可以通过回显在PHP / view-file中使用PHP调用该方法的结果来获取JS中的配置,或者通过使用来自JS的额外HTTP请求调用该方法,这将导致额外的开销,但是,如果需要,还会引入延迟加载配置,如果大多数JavaScript不需要配置,这可能是有益的:

PHP

class Configuration
{
    public static function getAll()
    {
        return file_get_contents('config.php');
    }
}

class ConfigController
{
    public function getConfigAction()
    {
        $config = Configuration::getAll();
        return json_encode($config);
    }
}

JS

function getConfig() {
    /* 
     * Send an HTTP request to the ConfigController's getConfigAction in your
     * favorite manner here.
     */
}

var config = getConfig(configUri);