php
3年ぶりの更新というわけで、まさしく3年寝太郎状態なわけですが。今日は今巷を賑わせているJSON SQL Injectionについてです。 DeNA Engineers' Blog [ Technology of DeNA ] JSON SQL Injection、PHPならJSONなしでもできるよ | 徳丸浩の日記 徳丸さんの記…
MDB2を使って複数のDB接続したいなんてことあるよね。ところがどっこい、実際にコードを書いてみると恐ろしいことが起きた。それは二つ目のDB接続をすると一つ目のDB接続が二つ目のDB接続に乗っ取られてしまうという! query('SELECT COUNT(*) FROM hoge_tbl…
ハマッタのでメモ。 1)); print_r($a); これをPHP5.2とPHP5.3で実行すると以下のようになる # PHP5.2 ArrayObject Object ( [test] => 1 ) # PHP5.3 ArrayObject Object ( [storage:ArrayObject:private] => Array ( [test] => 1 ) )PHP5.3の場合、なにやら…
Smartyのテンプレートでは配列や連想配列を定義できない。そんな風に考えていた時期が俺にもありました。さてググってみるとプラグインを利用する方法を発見しました。 Smartyで配列を定義するプラグイン - Lism.in * blog - nekoya (id:studio-m) Smarty の…
PHPのDateTimeクラスは標準装備なのでお手軽で便利なのだけど、若干使い勝手が悪い。なのでDateTimeを継承してちょっとした拡張をしとくと便利かと。 format('Y'); } function month () { return $this->format('n'); } function day () { return $this->for…
先日の記事だけを見ると、Perlを使ったこと無い人からすれば何がどう便利なのか良く分からないと思うのでここらでPath_Classの解説。まずPath_Classの大きな特徴として、引数で与えたパスが、実際にファイルとして存在してなくても良いというところがあげら…
え?あぁ。Perlerなら皆さんご存知のPath::Classですが、それのPHP版です。欲しかったので作りました。以下使い方例。
100); } // foo()['aaa']; // Parse error ao(foo())->aaa; というのを思いついた。あ、そうだ、あけましておめでとうございます。
ひょんなことからhtmltemplate.incというHTMLテンプレートエンジンを触ることになった。どんな感じのテンプレートなのかは http://hokori.net/2008/03/01/thmltemplate_for_php/ http://d.hatena.ne.jp/atyks/20090830/1251641112 あたりで詳しく書かれてい…
配列のように振舞えるArrayObjectなんだけど、あくまでもオブジェクトなので結局のところ配列を期待する標準関数との相性が悪すぎて微妙。is_arrayは偽になっちゃうし、array_shiftはうまく動かないし。array_flipとかarray_uniqueとかには一応渡せるけど戻…
PHPにおいて、ある配列が連想配列として使われているのかどうかを判別したい場合どうすればいいのか。色々調べてたらこんな記事を発見しました。
PHP5やり始めたばっかでまだ右も左もわからずに右往左往してます。色々調べてたら、PHP5になってSPL(Standard PHP Library)ってのが導入されたということを知った。へー。そのSPLの中にArrayObjectという物がありまして、オブジェクトを配列っぽく扱えるよう…
最近ようやくPHP5をちょこちょこと触ってるわけなんですが、折角メソッドチェーンサポートされたのに何故かnewと同時にできない罠。これなんか動いても良さそうなのになぁ。直感的だし。 bar(); 嘆いてもしょうがない。動かないものは動かないので、ちょこち…
Smartyってオブジェクトのメソッドチェーンサポートしてないんだね。 -- foo.tpl -- { $foo->setdata(88)->setdata('a','b')->getdata() }Fatal error: Smarty error: [in foo.tpl line 2]: syntax error: unrecognized tag: $foo->setdata(88)->setdata('a'…
閉じタグってのは「?>」のことね。未だに閉じタグ使ってるコードを見ると一瞬ドキッとするんだよね。(自分の昔のコードも含むw)いや、ちゃんとわかってて確実に使いこなしてるならいいんだけどたまに -- ここがファイルの先頭 -- -- ここがファイルの後尾 …
MySQLで等しくないを表す比較演算子 - Unknown::Programmingさて昨日の記事で「!=」使えお!言ったのは訂正させていただきます。やっぱ時代は「<>」だよね。 ・・・所変わって今日はPHPの話でもしようかな。とある環境でPEAR::DBを使っておるのですがこんな…
ぼく「えっ」 PHP「"0x0A" == "10"はTRUEになりますが」 ぼく「いえFALSEです」 PHP「えっ」 ぼく「えっ」 PHP「まだ比較したことがないということでしょうか」 ぼく「えっ」 PHP「えっ」 ぼく「変化するってことですか」 PHP「なにがですか」 ぼく「型が」 …
==の代わりにstrcmp関数で比較すると、float型とarray型を扱う場合に==を使うのとは別の問題が発生することを示しました。そんな型が来るならstrcmp使わないよ、という意見もあるとは思いますが、来る型がわかっているなら===を使えばいいと思うんですよね。…
今の気持ちをはてなハイクであらわしてみました。先に言うとなんかもう色々ごめんなさい。 PHP5.3 - はてなハイク 勘弁して下さい(つд⊂)エーン
以前PerlのString::RandomモジュールをPHPに移植した(PHP版String::Random - Unknown::Programming)のですが、そもそもPerlを使わない人にとっては何をするモジュールか分かりにくい(名前で大体わかるかもですが)ということもあり、ちょっと簡単に使い方とか…
タイトルは釣りです。実際のタイトルは「Perlのオブジェクト指向がムズカシイだって?んなバカな。だったらPHPで再現してやんよ!」でございます。ヘイヘイヘイ。そこの君。Perlのオブジェクト指向が難しいだなんていったい誰が言ったんだい?Perlのオブジェ…
http://d.hatena.ne.jp/tokuhirom/20080305/1204677112 404 Blog Not Found:「同じコード」の同じって何さ - TAPのススメ弾さんの記事見て思い出した。以前、id:tokuhiromさんに教えてもらったTAPの話ですが、折角なので導入しよーかと。PHP版HTML_FillInFor…
バージョン0.04に更新しました。リスト系のチェックが通らないという結構致命的なバグでした。id:kuchimuraさん、ありがとうございました。CodeRepos↓ http://coderepos.org/share/browser/lang/php/DataValidator_Simpletar↓ DataValidator_Simple
バージョン0.02に更新しました。どうもBETWEENが正常に動いてなかったようです。カッコが付いてるとダメみたい、シラナカッタ。というかテストコードがいるよね。 ちょっと時間作ってちゃんとテストコード書きます・・・。CodeRepos↓ http://coderepos.org/s…
バージョンアップしました。コメント欄で指摘された通り、警告が出ていたというなんともお恥ずかしい限りです。id:taraburoさんありがとうございました。テストコードにerror_reporting( E_ALL )を仕込むようにしました。CodeRepos↓ http://coderepos.org/sh…
PHP版のHTML_FillInFormを大幅にバージョンアップしました。今回はちゃんとテストコードを書いてみたんですが、漏れやバグありまくりで焦ったorzやっぱりちゃんとテストコード書かないとダメダメですね・・・。ってことで以下箇条書きで更新一覧を。 ソース…
さてさて先日ご紹介した、ランダムな文字列を生成するString::Random - Unknown::ProgrammingのPHP版です。作っちゃいました。実はというと当然のことながらもう作っている方がいます。http://hatotech.org/kumatch/archives/2004/12/03/php_string_rand.htm…