仙台の山奥で自転車に乗ったり転んだり

愛車の GIOS でサイクリングしたりポタリングしたり、それをブログに記録してみたり。ロードバイクや自転車や坂のことを書いてみたり。ときたまプログラムのことを忘れないようにメモってみたり。

PHP

class キーワード

PHP

最近、コンテナを使ったような実装で「HogeInterface::class => HogeInterface::class」みたいな記述を見かけてナンジャロと思ったら、PHP5.5以降だと class キーワードなんて素敵な機能があったんですね。ちゃんとマニュアルにも記載があった。 バージョン…

配列のフィルタリング

PHP

これ読んで逐次納得できて、過去の苦い記憶がふつふつと思い浮かんだ。 http://qiita.com/nori0620/items/08bba8649fa5b608f695array_filterのとこなんかは、イテレータとか使ったらもっとスマートになんないのかなと思ってゴニョゴニョしてみた。これを、 $…

phpbrew-jaの説明

PHP

『phpbrew-ja PHPBrew JA 日語指引』なんで中国語なんだろう $ phpbrew ______ _ _ ____________ | ___ \ | | || ___ \ ___ \ | |_/ / |_| || |_/ / |_/ /_ __ _____ __ | __/| _ || __/| ___ \ '__/ _ \ \ /\ / / | | | | | || | | |_/ / | | __/\ V V / \_…

Memcacheで失敗したときのコールバック

PHP

Memcache#addServerは第8引数のコールバック関数で、エラーが発生した際のい処理を登録しておくことができる。ちなみにMemcachedの方がメジャーだと思うが、そっちにはエラーに対するコールバックの機能はないみたい。同メソッドはコネクションプールにmemca…

誕生日から年齢を計算?

php

テストもしてないどころか動かしてもいないけど、勢いで殴りがいてみた。 /** * 誕生日から年齢を算出 * * @param string $birthdayDay 誕生日(UNIX タイムスタンプに変換する日付の書式) * @param string $today 今日(UNIX タイムスタンプに変換する日付…

簡易な誤り訂正符号

PHP

キャンペーンコードのようなもののために簡単なチェックの仕組みが作りたくて、思いつきで簡単な誤り訂正符号もどきを作ってみた。 で、あんまり考えてないけど、これって成り立っているのかすごく気になる。

(Windows7の)Eclipse(PDT)で発生するPHPのWarningに対応

作業PCを入れ替えてマシンスペックに余裕ができたので、PHPをIDEで開発できないものかと懲りずにチャレンジしてみたら、PDTでデバッグを実行するたびに↓のようなエラーが発生する。 PHP Warning: Module 'json' already loaded in Unknown on line 0PHPのス…

CentOSにyumでPHP5.2をインストール

CentOSのyumで入るPHP5.1は勘弁だけど、かといってソースからコンパイルするのも面倒くさい。あと入れるのはいいけど、後から管理するのが嫌になる。ということで、devサーバ(dev.centos.org)のリポジトリを使ってPHP5.2をインストールしてみた。PHP5.3で…

WindowsでカレントディレクトリのPHPUnitをまとめて実行

PHP

Windowsでひとつずつ単独でPHPUnitをまとめて実行するにはどうすれば? for %i in (*test.php) do phpunit %iなにかちがう……。

カレントディレクトリのファイルをまとめてPHPUnit実行

PHP

特定のディレクトリにあるテストファイルを、ひとつずつ単独でPHPUnit実行する手軽な方法は? echo "" > test.log; for i in *Test.php; do phpunit $i >>test.log; done;もっとスマートでかっこういい方法がある気がする……。

WindowsへのPHP5のインストールでつまづく

sqlite3.dllがみつからなかった…… 「http://www.sqlite.org/」からWindowsバイナリ(sqlite3.dll)をダウンロード 解凍したファイルを「C:\WINDOWS\system32」にコピーLIBPQ.DLLがみつからなかった…… 「PostgreSQL8.3」をインストール binディレクトリの「li…

さくらサーバにPEAR

PEARを自由に使えるようにローカル環境にセットアップする。 インストールするレイアウトのイメージ。 $HOME/local ├─temp └─lib ├─bin └─php ├─docs ├─data └─tests 1. Installation prefix ($prefix) : /home/user/local 2. Temporary files directory : $…

PDOStatement->bindParamの挙動

PHP

原因不明のエラーを追っていたら、整数のはずの変数がいつの間にか文字列型になっていた。 影響の要因が不明でちょっと悩んだが、確認したら単純に「PDOStatement->bindParam」の挙動だった。 class foo { ..... private function foo() { try { $stmt = $th…

いまさら1000speakers@仙台のネタ

PHP

1000speakers@仙台#1の感想とか書こうと思いつつ、いつのまにか時が流れ……。 相当いまさら感はあるものの、id:sato165さんが発表していたLPOのネタを何となく。 '; /** * 終了タグ */ const SUFFIX_TAG = '</span>'; /** * HTTP_REFERERのQUERY_STRINGをマッチする…

PHPDocumentorの自動実行

ドキュメントと稼働プログラムの内容が一致しないということはよくある。 せめてプログラムのコメントは適切にメンテナンスされているものと信じれば、PHPDocumentorをcronで定期的に実行していればある程度は不一致を防げるはず。 #/bin/sh DIR=/home/user …

PHPで作ったPOSTリクエストするためのテスタ

PHP

HTTP_Clientでざっくり作ってみる。 'hostname', 'User-Agent' => 'PHP Tester', 'C…

生のPOSTデータを参照する(改良)

PHP

あいかわらずau端末での不具合は解決できていないけど、POSTデータの出力機能のみをまとめてみた。PHPでauで何故かPOSTされたデータの一部がURLデコードされない。 ソースを読んでいたらPHPのバグのような気もしてきた、5.1.6から5.2.0への移行でphp_variabl…

生のPOSTデータを参照する

PHP

au端末でフォームで送信したデータが謎の文字化けする不具合を調査するために、生のPOSTデータがみるために多少まごついたのでメモ。 header('Content-type: text/html; charset=Shift_JIS'); echo '<html><body>'; print readfile('php://input'); echo '</html></body>'; 問題は解決…

PHPでShit_JISとEUC-JPで外字処理

PHP

UNICODEであればほぼ無意味な作業、リクエストなどのたびにShit_JISの外字を〓に置換。(基幹系からのデータとか、携帯ユーザとかSJISじゃなきゃダメな制約のある場合の話。)よくやる処理って下のような置換作業。 これってUNICODEなら全く無駄な作業だよな…

Ez-Publishのインストール失敗

PHP製CMSソフト「Ez-Publish」で失敗した記録。ソースからのインストールで失敗して(まともな環境がPHP5しかなかったし)Windowsインストーラ版を試してみた。 Apache/PHP/MySQLなど共存できるか不安だったが、サブディレクトリにインストールされるし何…

コンストラクタの挙動

php

コンストラクタ内部で参照は意図しない働きをすることについて。 http://www.php.net/manual/ja/language.oop.newref.phpコンストラクタの戻り値がコピーだから参照が成り立たないんだから,専用のfactoryメソッドを用意して,new命令でインスタンスを作らな…

日時計算のバカなバグ

PHP

"月"だけを求める単純な処理で、ありえないおバカなバグがあった……。 $month = date('n') - 1; $res_time = mktime(0, 0, 0, $month); // $res_timeに前月のタイムスタンプができていることを期待みたいな感じのスクリプトを書いて、問題に気づいてなかった。…

文字列型の変数に対する「isset($xxx[x])」の挙動

PHP

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…

$function_name() vs call_user_func($function_name)

PHP

http://dikini.net/php_design_patternsで、「$callable(...)」と「call_user_func($callable,...)」「call_user_func_array($callable,...)」について言明していた。 あいかわらず英語の内容を翻訳する気はゼロだけど、ニュアンス的に「$callable(...)」は…

配列キーでの「整数」と「数字文字列」の比較

PHP

どうでもいいことだけど、配列のキーが「整数」の場合と「数字文字列」の場合との比較が気になった。 $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…