xmlを扱う時の注意点

Permalink2008/09/25 16:25:19
カテゴリ: ビュー, コントローラー

CakePHP1.2 RC2

xml データを扱う場合、Controller で下記のようにすると、配列に格納してくれるので、その後の処理がとてもやり易くなります。

uses('Xml');
$file = '/path/to/sample.xml';
$xml = new Xml($file);
$xml_array = Set::reverse($xml); 


ここで注意が必要なことがあります。
xml のデータで名前が小文字で始まるものは、値が存在する場合は、そのまま小文字で渡されてくるのですが、値が空の場合は、先頭の文字が大文字に変更されて渡されます。

どうしてこのような現象が起こるかというと、cake/libs/set.php 内の Set::reverse() の処理において、

$key = Inflector::camelize($child->name);

という処理があり、更に cake/libs/inflector.php の function camelize() を見てみると、

function camelize($lowerCaseAndUnderscoredWord) {
    $replace = str_replace(" ", "", ucwords(str_replace("_", " ", $lowerCaseAndUnderscoredWord)));
    return $replace;
}

という処理がされており、この中の ucwords がアルファベットの先頭が小文字の場合、大文字に変更してくれています。

このままでは、View で受け取る際に 先頭が大文字でくるのか、小文字でくるのかがわからないので不便です。

ですので、対処方法の一つとして、Controller の配列を受け取る際に強制的に Inflector::camelize() を呼び出して、形式を固定してしまえば、View 側でデータがあるなしに関わらず決まった形式で記載することができます。


関連記事


    この記事へのトラックバック アドレス

    コメント, トラックバック:

    この投稿への コメント/トラックバック はまだありません...

    コメントを残す:

    頂いたメールアドレスはこのサイト上には表示されません
    頂いたURLは表示されます。

    許可される XHTML タグ: <p, ul, ol, li, dl, dt, dd, address, blockquote, ins, del, span, bdo, br, em, strong, dfn, code, samp, kdb, var, cite, abbr, acronym, q, sub, sup, tt, i, b, big, small>
    (改行が自動で <br /> になります)
    (名前、メールアドレス、URLを記憶する Cookie を発行します)
    (ユーザがメッセージ・フォームを通してあなたに連絡することを許可します (あなたのメール・アドレスは表示されません))

    プロフィール
    岐阜県中津川市加子母在住のあつ@株式会社一六社(いちろくしゃ)スタッフ

    あつへのメッセージはSkypeを使ってテキストメッセージでどうぞ
    あつ

    CakePHPに関する情報をまとめていきます。

    開発スピードがアップできればうれしいです。

    >>連絡はこちらへどうぞ

    CakePHPを中心とした勉強会を無料で開催していますので、これからCakePHPを始めるという方でもぜひお越しください。
    >>詳しくはこちらへ(高蔵寺SE勉強会)


    CakePHP関連のブックマーク


    CakePHP最新版
    CakePHP 1.2.3.8166


    CakePHPの書籍

    CakePHPによる実践Webアプリケーション開発

    CakePHP1.2で作成する人にオススメ。
    とても参考になります。

    まるごとPHP!(vol.2)

    安藤さんの解説が載っています。
    AmazonのPagination部分は参考になります。

    CakePHPによるWebアプリケーション開発

    まだ読んだことありません

    CakePHPポケットリファレンス
    CakePHPポケットリファレンス
    CakePHP1.2 でやるなら、これがあると何かと便利♪

    CakePHP徹底入門
    CakePHP徹底入門
    CakePHP1.2 を今から始めるならここから

    Fast CakePHP
    Fast CakePHP
    シンプルでわかりやすい CakePHP の入門書

    CakePHPガイドブック
    CakePHPガイドブック
    CakePHP1.1 ではとても参考にした CakePHP 最初の入門書

    アーカイブ

     RSS2.0

    powered by
    b2evolution
    ブログ一六社

    Geo Visitors Map