php

PHPのクエリパラメーターの扱い方について

php

3年ぶりの更新というわけで、まさしく3年寝太郎状態なわけですが。今日は今巷を賑わせているJSON SQL Injectionについてです。 DeNA Engineers' Blog [ Technology of DeNA ] JSON SQL Injection、PHPならJSONなしでもできるよ | 徳丸浩の日記 徳丸さんの記…

MDB2で複数のDB接続を行う場合の恐ろしい罠

php

MDB2を使って複数のDB接続したいなんてことあるよね。ところがどっこい、実際にコードを書いてみると恐ろしいことが起きた。それは二つ目のDB接続をすると一つ目のDB接続が二つ目のDB接続に乗っ取られてしまうという! query('SELECT COUNT(*) FROM hoge_tbl…

クラス内で定義した定数の一覧を得る方法

php

PHP5.2とPHP5.3でArrayObjectの挙動が違う話

php

ハマッタのでメモ。 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のテンプレートで配列や連想配列を定義する方法

php

Smartyのテンプレートでは配列や連想配列を定義できない。そんな風に考えていた時期が俺にもありました。さてググってみるとプラグインを利用する方法を発見しました。 Smartyで配列を定義するプラグイン - Lism.in * blog - nekoya (id:studio-m) Smarty の…

PHPでスクリプト実行ファイルのディレクトリを得る方法

php

PHPのDateTimeクラス

php

PHPのDateTimeクラスは標準装備なのでお手軽で便利なのだけど、若干使い勝手が悪い。なのでDateTimeを継承してちょっとした拡張をしとくと便利かと。 format('Y'); } function month () { return $this->format('n'); } function day () { return $this->for…

PHPでPath_Classを使ってらくらくディレクトリorファイル操作

php

先日の記事だけを見ると、Perlを使ったこと無い人からすれば何がどう便利なのか良く分からないと思うのでここらでPath_Classの解説。まずPath_Classの大きな特徴として、引数で与えたパスが、実際にファイルとして存在してなくても良いというところがあげら…

PHP版Path::Class

php

え?あぁ。Perlerなら皆さんご存知のPath::Classですが、それのPHP版です。欲しかったので作りました。以下使い方例。

ArrayObjectと多次元配列とisset

PHP

ArrayObjectを如何にして有効活用するか

PHP

100); } // foo()['aaa']; // Parse error ao(foo())->aaa; というのを思いついた。あ、そうだ、あけましておめでとうございます。

PHPのhtmltemplate.incでオブジェクトやらフィルターやら

php

ひょんなことからhtmltemplate.incというHTMLテンプレートエンジンを触ることになった。どんな感じのテンプレートなのかは http://hokori.net/2008/03/01/thmltemplate_for_php/ http://d.hatena.ne.jp/atyks/20090830/1251641112 あたりで詳しく書かれてい…

ArrayObjectは便利だけと扱いづらいね

PHP

配列のように振舞えるArrayObjectなんだけど、あくまでもオブジェクトなので結局のところ配列を期待する標準関数との相性が悪すぎて微妙。is_arrayは偽になっちゃうし、array_shiftはうまく動かないし。array_flipとかarray_uniqueとかには一応渡せるけど戻…

配列か連想配列かを判別する

php

PHPにおいて、ある配列が連想配列として使われているのかどうかを判別したい場合どうすればいいのか。色々調べてたらこんな記事を発見しました。

ArrayObjectによる配列演算子のオーバーロード風

PHP

PHP5やり始めたばっかでまだ右も左もわからずに右往左往してます。色々調べてたら、PHP5になってSPL(Standard PHP Library)ってのが導入されたということを知った。へー。そのSPLの中にArrayObjectという物がありまして、オブジェクトを配列っぽく扱えるよう…

PHPでnewと同時にメソッドチェーンする方法

PHP

最近ようやくPHP5をちょこちょこと触ってるわけなんですが、折角メソッドチェーンサポートされたのに何故かnewと同時にできない罠。これなんか動いても良さそうなのになぁ。直感的だし。 bar(); 嘆いてもしょうがない。動かないものは動かないので、ちょこち…

Smartyでオブジェクトのメソッドチェーンっぽいのを実現する

PHP

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'…

PHPの閉じタグは心の臓に悪いから使わないで

PHP

閉じタグってのは「?>」のことね。未だに閉じタグ使ってるコードを見ると一瞬ドキッとするんだよね。(自分の昔のコードも含むw)いや、ちゃんとわかってて確実に使いこなしてるならいいんだけどたまに -- ここがファイルの先頭 -- -- ここがファイルの後尾 …

MySQLで等しくないを表す比較演算子はやっぱ<>だよね!

PHP

MySQLで等しくないを表す比較演算子 - Unknown::Programmingさて昨日の記事で「!=」使えお!言ったのは訂正させていただきます。やっぱ時代は「<>」だよね。 ・・・所変わって今日はPHPの話でもしようかな。とある環境でPEAR::DBを使っておるのですがこんな…

PHP「"0x0A" == "10"はTRUEですがよろしいですか」

PHP

ぼく「えっ」 PHP「"0x0A" == "10"はTRUEになりますが」 ぼく「いえFALSEです」 PHP「えっ」 ぼく「えっ」 PHP「まだ比較したことがないということでしょうか」 ぼく「えっ」 PHP「えっ」 ぼく「変化するってことですか」 PHP「なにがですか」 ぼく「型が」 …

PHPでWebプログラムすることのある僕がstrcmp関数を使う100の理由(ぉ

PHP

==の代わりにstrcmp関数で比較すると、float型とarray型を扱う場合に==を使うのとは別の問題が発生することを示しました。そんな型が来るならstrcmp使わないよ、という意見もあるとは思いますが、来る型がわかっているなら===を使えばいいと思うんですよね。…

PHP5.3のnamespaceの区切り文字に関して

PHP

今の気持ちをはてなハイクであらわしてみました。先に言うとなんかもう色々ごめんなさい。 PHP5.3 - はてなハイク 勘弁して下さい(つд⊂)エーン

PHPでランダム文字列を生成するString_Randomクラス

PHP

以前PerlのString::RandomモジュールをPHPに移植した(PHP版String::Random - Unknown::Programming)のですが、そもそもPerlを使わない人にとっては何をするモジュールか分かりにくい(名前で大体わかるかもですが)ということもあり、ちょっと簡単に使い方とか…

Perlが初めての人に教えてあげたいちょっとしたこと

タイトルは釣りです。実際のタイトルは「Perlのオブジェクト指向がムズカシイだって?んなバカな。だったらPHPで再現してやんよ!」でございます。ヘイヘイヘイ。そこの君。Perlのオブジェクト指向が難しいだなんていったい誰が言ったんだい?Perlのオブジェ…

TAPの話

http://d.hatena.ne.jp/tokuhirom/20080305/1204677112 404 Blog Not Found:「同じコード」の同じって何さ - TAPのススメ弾さんの記事見て思い出した。以前、id:tokuhiromさんに教えてもらったTAPの話ですが、折角なので導入しよーかと。PHP版HTML_FillInFor…

DataValidator_Simple、add_data_by_paramメソッドのバグ修正

バージョン0.04に更新しました。リスト系のチェックが通らないという結構致命的なバグでした。id:kuchimuraさん、ありがとうございました。CodeRepos↓ http://coderepos.org/share/browser/lang/php/DataValidator_Simpletar↓ DataValidator_Simple

PHP版SQL_Abstract、BETWEENバグ修正

バージョン0.02に更新しました。どうもBETWEENが正常に動いてなかったようです。カッコが付いてるとダメみたい、シラナカッタ。というかテストコードがいるよね。 ちょっと時間作ってちゃんとテストコード書きます・・・。CodeRepos↓ http://coderepos.org/s…

HTML_FillInForm-0.03

PHP

バージョンアップしました。コメント欄で指摘された通り、警告が出ていたというなんともお恥ずかしい限りです。id:taraburoさんありがとうございました。テストコードにerror_reporting( E_ALL )を仕込むようにしました。CodeRepos↓ http://coderepos.org/sh…

PHP版HTML::FillInForm大幅バージョンアップ

PHP

PHP版のHTML_FillInFormを大幅にバージョンアップしました。今回はちゃんとテストコードを書いてみたんですが、漏れやバグありまくりで焦ったorzやっぱりちゃんとテストコード書かないとダメダメですね・・・。ってことで以下箇条書きで更新一覧を。 ソース…

PHP版String::Random

さてさて先日ご紹介した、ランダムな文字列を生成するString::Random - Unknown::ProgrammingのPHP版です。作っちゃいました。実はというと当然のことながらもう作っている方がいます。http://hatotech.org/kumatch/archives/2004/12/03/php_string_rand.htm…