【问题标题】:PHP: Can't access imported ini valuesPHP:无法访问导入的 ini 值
【发布时间】:2017-02-09 16:04:00
【问题描述】:

我确信这是一个简单的问题,但我是 PHP 新手,无法弄清楚。我正在尝试解析 .ini 文件,该文件可以正常工作,但我无法访问这些值。

我的网站结构如下:

project/
    index.php
    inc/
        init.php
        classes/
            frontend.php
    msg/
        messages.ini

消息文件在init.php 中解析为$messages = parse_ini_file("msg/messages.ini");,然后包含在index.php 中,如下所示:

<?php
require_once('inc/init.php');

//printing the array here works!

$html = new frontend();

如果我从index.php 打印消息数组,一切正常。

然而,当index.php 构建new frontend(); 时,$messages 数组在那里不可用。 frontend 本身已加载到 init.php 中,并且在没有 ini 文件的情况下也可以正常工作。

因此,我假设存在导入或变量范围问题,但我无法弄清楚。有人能指出我正确的方向吗?

【问题讨论】:

标签: php ini


【解决方案1】:

代替:

$html = new frontend();

... 执行以下操作:

$html = new frontend($messages);

无论如何,PHP variable scope 相当简单:变量对于函数/方法来说要么是全局的,要么是局部的。

【讨论】:

  • 我想过将数组作为参数传递,但如果它包含在 index.php 中,它不应该至少与前端具有相同的范围吗?
  • 范围没有那么复杂。没有每个块或每个文件的范围。
  • 谢谢,我现在可以使用了。这也有帮助:stackoverflow.com/questions/16959576/…
【解决方案2】:

尝试在frontend() 中将$messages 声明为全局。

【讨论】:

  • 不要使用global。这是糟糕的编码风格
  • 为什么会是不好的编码风格?
猜你喜欢
  • 1970-01-01
  • 2015-09-16
  • 2014-07-19
  • 2016-04-21
  • 2013-01-07
  • 1970-01-01
  • 2013-12-15
  • 1970-01-01
  • 2011-03-12
相关资源
最近更新 更多