2012-01-16 6 views
0

XMLドキュメントを解析して配列にするクラスがあります。foreachループとDirectoryIterator関数を使用してオンザフライで新しいクラスオブジェクトを作成します。

私は2つのXML文書を解析したいと思いますし、foreachループとDirectoryIterator関数を使用して、新しいクラスオブジェクトをオンザフライで作成したいと思います。

は、これまでのところ、これは私のattempです:

$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オブジェクトを作成することです。

+1

は、新しいオブジェクトが同じ名前の変数に保持されなければならないという特別な理由がありますファイル?はいの場合は、変数変数を探しています:$$ xmlFileObjName = new .... –

+0

ええ、私は変数が呼び出されるかわからないので。私はこれまで解析されているxmlファイルの名前を与えることにしました。ですから、もしlanguage.xmlファイルがあれば '$ language = new XML();'のようになりますので、ここに投稿する前に既に '$$'をしようとしました。 – Eli

+0

何が問題なの?$ xmlFile = new XML(); $ xmlFile-> loadXML ...?あなたが何の理由もなく複雑にしているように見えます:) –

答えて

1

後でこれらのXMLオブジェクトにアクセスする必要がある場合は、より良いアイデアを連想配列でstroe彼らにある:

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

作品、感謝のヒント! – Eli

関連する問題