PHP
最近、コンテナを使ったような実装で「HogeInterface::class => HogeInterface::class」みたいな記述を見かけてナンジャロと思ったら、PHP5.5以降だと class キーワードなんて素敵な機能があったんですね。ちゃんとマニュアルにも記載があった。 バージョン…
これ読んで逐次納得できて、過去の苦い記憶がふつふつと思い浮かんだ。 http://qiita.com/nori0620/items/08bba8649fa5b608f695array_filterのとこなんかは、イテレータとか使ったらもっとスマートになんないのかなと思ってゴニョゴニョしてみた。これを、 $…
『phpbrew-ja PHPBrew JA 日語指引』なんで中国語なんだろう $ phpbrew ______ _ _ ____________ | ___ \ | | || ___ \ ___ \ | |_/ / |_| || |_/ / |_/ /_ __ _____ __ | __/| _ || __/| ___ \ '__/ _ \ \ /\ / / | | | | | || | | |_/ / | | __/\ V V / \_…
Memcache#addServerは第8引数のコールバック関数で、エラーが発生した際のい処理を登録しておくことができる。ちなみにMemcachedの方がメジャーだと思うが、そっちにはエラーに対するコールバックの機能はないみたい。同メソッドはコネクションプールにmemca…
テストもしてないどころか動かしてもいないけど、勢いで殴りがいてみた。 /** * 誕生日から年齢を算出 * * @param string $birthdayDay 誕生日(UNIX タイムスタンプに変換する日付の書式) * @param string $today 今日(UNIX タイムスタンプに変換する日付…
キャンペーンコードのようなもののために簡単なチェックの仕組みが作りたくて、思いつきで簡単な誤り訂正符号もどきを作ってみた。 で、あんまり考えてないけど、これって成り立っているのかすごく気になる。
作業PCを入れ替えてマシンスペックに余裕ができたので、PHPをIDEで開発できないものかと懲りずにチャレンジしてみたら、PDTでデバッグを実行するたびに↓のようなエラーが発生する。 PHP Warning: Module 'json' already loaded in Unknown on line 0PHPのス…
CentOSのyumで入るPHP5.1は勘弁だけど、かといってソースからコンパイルするのも面倒くさい。あと入れるのはいいけど、後から管理するのが嫌になる。ということで、devサーバ(dev.centos.org)のリポジトリを使ってPHP5.2をインストールしてみた。PHP5.3で…
Windowsでひとつずつ単独でPHPUnitをまとめて実行するにはどうすれば? for %i in (*test.php) do phpunit %iなにかちがう……。
特定のディレクトリにあるテストファイルを、ひとつずつ単独でPHPUnit実行する手軽な方法は? echo "" > test.log; for i in *Test.php; do phpunit $i >>test.log; done;もっとスマートでかっこういい方法がある気がする……。
sqlite3.dllがみつからなかった…… 「http://www.sqlite.org/」からWindowsバイナリ(sqlite3.dll)をダウンロード 解凍したファイルを「C:\WINDOWS\system32」にコピーLIBPQ.DLLがみつからなかった…… 「PostgreSQL8.3」をインストール binディレクトリの「li…
PEARを自由に使えるようにローカル環境にセットアップする。 インストールするレイアウトのイメージ。 $HOME/local ├─temp └─lib ├─bin └─php ├─docs ├─data └─tests 1. Installation prefix ($prefix) : /home/user/local 2. Temporary files directory : $…
原因不明のエラーを追っていたら、整数のはずの変数がいつの間にか文字列型になっていた。 影響の要因が不明でちょっと悩んだが、確認したら単純に「PDOStatement->bindParam」の挙動だった。 class foo { ..... private function foo() { try { $stmt = $th…
1000speakers@仙台#1の感想とか書こうと思いつつ、いつのまにか時が流れ……。 相当いまさら感はあるものの、id:sato165さんが発表していたLPOのネタを何となく。 '; /** * 終了タグ */ const SUFFIX_TAG = '</span>'; /** * HTTP_REFERERのQUERY_STRINGをマッチする…
ドキュメントと稼働プログラムの内容が一致しないということはよくある。 せめてプログラムのコメントは適切にメンテナンスされているものと信じれば、PHPDocumentorをcronで定期的に実行していればある程度は不一致を防げるはず。 #/bin/sh DIR=/home/user …
HTTP_Clientでざっくり作ってみる。 'hostname', 'User-Agent' => 'PHP Tester', 'C…
あいかわらずau端末での不具合は解決できていないけど、POSTデータの出力機能のみをまとめてみた。PHPでauで何故かPOSTされたデータの一部がURLデコードされない。 ソースを読んでいたらPHPのバグのような気もしてきた、5.1.6から5.2.0への移行でphp_variabl…
au端末でフォームで送信したデータが謎の文字化けする不具合を調査するために、生のPOSTデータがみるために多少まごついたのでメモ。 header('Content-type: text/html; charset=Shift_JIS'); echo '<html><body>'; print readfile('php://input'); echo '</html></body>'; 問題は解決…
UNICODEであればほぼ無意味な作業、リクエストなどのたびにShit_JISの外字を〓に置換。(基幹系からのデータとか、携帯ユーザとかSJISじゃなきゃダメな制約のある場合の話。)よくやる処理って下のような置換作業。 これってUNICODEなら全く無駄な作業だよな…
PHP製CMSソフト「Ez-Publish」で失敗した記録。ソースからのインストールで失敗して(まともな環境がPHP5しかなかったし)Windowsインストーラ版を試してみた。 Apache/PHP/MySQLなど共存できるか不安だったが、サブディレクトリにインストールされるし何…
コンストラクタ内部で参照は意図しない働きをすることについて。 http://www.php.net/manual/ja/language.oop.newref.phpコンストラクタの戻り値がコピーだから参照が成り立たないんだから,専用のfactoryメソッドを用意して,new命令でインスタンスを作らな…
"月"だけを求める単純な処理で、ありえないおバカなバグがあった……。 $month = date('n') - 1; $res_time = mktime(0, 0, 0, $month); // $res_timeに前月のタイムスタンプができていることを期待みたいな感じのスクリプトを書いて、問題に気づいてなかった。…
isset($d["hoge"])が成り立つのは文字列だからです - よくきたblog試してみた。 $hoge = 'hoge'; var_dump(isset($hoge['hoge'])); // bool(true) echo $hoge['hoge']; // 'h' echo $hoge[0]; // 'h' echo $hoge[(int) 'hoge']; // 'h' $no_str = ''; var_du…
http://dikini.net/php_design_patternsで、「$callable(...)」と「call_user_func($callable,...)」「call_user_func_array($callable,...)」について言明していた。 あいかわらず英語の内容を翻訳する気はゼロだけど、ニュアンス的に「$callable(...)」は…
どうでもいいことだけど、配列のキーが「整数」の場合と「数字文字列」の場合との比較が気になった。 $key_is_int = array(1, 2, 3, 4, 5); $key_is_str = array('0' => 1, '1' => 2, '2' => 3, '3' => 4, '4' => 5); // TRUE var_dump($key_is_int === $key…