« flashメソッドのレイアウトを可変にする方法デバック情報を日本語で表示する方法 »

xmlを扱う時の注意点

xmlを扱う時の注意点

パーマリンク 2008/09/25 16:25:19 著者: cakephp メール
カテゴリ: ビュー, コントローラー

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(右クリックでURLのコピーをしてください)

モデレーション待ちのフィードバック

この投稿にはモデレーション待ちのフィードバックが 1 件あります....

コメントを残す


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

頂いたURLは表示されます。
(改行が自動で <br /> になります)
(Name, email & website)
(ユーザに、メッセージ・フォームを通じた連絡を許可します (あなたのメール・アドレスは表示されません))
2018年8月
 << <   > >>
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

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 最初の入門書

検索

XMLフィード

16ブログ     powered by b2evolution free blog software