【问题标题】:create a new class object on the fly using a foreach loop and the DirectoryIterator functions使用 foreach 循环和 DirectoryIterator 函数动态创建一个新的类对象
【发布时间】:2012-01-16 14:12:19
【问题描述】:

我有一个将 XML 文档解析为数组的类。

我有 2 个要解析的 XML 文档,并希望使用 foreach 循环和 DirectoryIterator 函数动态创建一个新的类对象。

到目前为止,这是我的尝试:

$settingsIterator = new DirectoryIterator(SETTINGS_PATH);

foreach ($settingsIterator as $fileInfo) {

    if ($fileInfo->isFile()) {

        $xmlFileObjName = strtolower(str_replace(".xml", "", $fileInfo->getFilename()));
        ${$xmlFileObjName} = new XML();
        ${$xmlFileObjName}->loadXML(SETTINGS_PATH . $fileInfo->getFilename());
    }
}

但这当然行不通。有没有办法完成这样的事情?

我的最终目标是让我的脚本在执行时遍历我的设置文件夹并从目录中的每个 xml 文件创建新的 XML 对象。

【问题讨论】:

  • 是否有特殊原因必须将新对象保存在与文件同名的变量中?如果是,您正在寻找变量变量: $$xmlFileObjName = new ....
  • 是的,因为我不知道该变量将被调用。我决定给它一个被解析的 xml 文件的名称。因此,如果我有一个 language.xml 文件,那么它看起来像 $language = new XML(); 并且我确实已经尝试在此处发布之前做一个 $$
  • $xmlFile = new XML() 有什么问题; $xmlFile->loadXML ... ?看起来你无缘无故地把事情复杂化了:)
  • 当然,但这是一个我想通过的自动化过程。所以我可以将尽可能多的 XML 文件添加到我的目录中,并可以随时访问它

标签: php


【解决方案1】:

如果您以后必须访问这些 XML 对象,最好将它们存储在关联数组中:

$xmlObjects = array();
$xmlObjects[$xmlFileObjName] = new XML();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    • 1970-01-01
    • 2016-05-24
    • 1970-01-01
    • 2015-06-29
    • 1970-01-01
    • 2020-09-28
    相关资源
    最近更新 更多