SimpleXMLのオブジェクトを編集、削除するときハッシュしたい


あるXML要素のオブジェクトを編集、削除するとき、単純にそのポジションとなる配列の位置をフォームから処理する側へ渡せばいいわけだけれど、プログラミング上はやっぱり位置だけでは不安で、その編集あるいは削除対象のデータがフォームで表示しているのと同じものなのかを編集・削除の処理のところで確認したい。

そのオブジェクトにIDとなるユニークな文字列があるという前提にするわけにはいかない。かといって元のデータをそっくりそのまま別途に渡すものうっとおしい。

そこで、そのオブジェクトのデータを全てシリアライズした上でハッシュにかけた値を渡すようにする。このポジションとハッシュ値が渡った先で、もう一度そのポジションのオブジェクトを取得してハッシュし、これらのハッシュ同士が一致すればほぼ間違いなく当該のオブジェクトであるということでよいだろうという考え方。

しかし、PHPはオブジェクトから直接ハッシュはとれない。一旦、シリアライズする必要がある。しかし、シリアライズするにも、それはオブジェクトではだめで、少なくとも配列にしておく必要がある。そこでオブジェクトを配列に変換してくれる関数が欲しい。
あった↓
simplexml elementを一括配列化。 | croisforce
本当に助かる。

広告

PHP関数を埋め込んだ文字列の展開


たとえば、
$str = ‘tag:smallmake.com,{date(“Y-m-d”)},{uniqid()}’
とか
$str = ‘{date(“Y-m-d H:i:s”)}’
みたいに文字列の中に{}(中カッコ)で囲ったPHP関数を埋め込んで、これを展開するプログラムを考えてみました。

preg_replace_callback(‘/({.+?})/’,create_function(‘$proc’,’$func = substr($proc[0],1,strlen($proc[0])-2);eval(\’$res = \’ . $func . \’;\’);return $res;’),$str)

(どや顔(6_6))

CakePHP: Jquery.uploadのシンプルな利用


CakePHPフレームワークを使っています。editビューの中で、ごく簡単にajaxでファイルアップロードしたかったので、シンプルで手軽な Jquery.upload.jsを使って組み込んでみました。コードの中に少しJavaScriptも書き足さなくてはいけないので、あまりかっこよくはないのですが、CakePHP Media Pluginのように専用のテーブルを作るほどには大げさでなく、「CakePHP jQuery を使用した Ajax ファイルアップロード」はsubmitしてしまって少し困るということで、書いたものです。参考になれば幸いです。
続きを読む