PHP
http://www.php.net/manual/ja/function.set-include-path.php/usr/lib/pear を追加。
使えないPHPにイラッとしたが、ソースを Shift JIS で記述することを諦めて、出力のときにエンコードを変更することにした。絵文字には別途対応が必要だが、以下の方法で簡単にできた。 http://www.ideaxidea.com/archives/2008/04/phpob_start.html ここに…
こんな簡単なコードも実行できないのか!使えんヤツ。
PHPにはURLにセッションIDを自動で付与する機能(track_vars)があるが、デフォルトでは "&" でつなげることになっている。XHTML では、パースエラーになるため、"&" に変更したい。php.iniで arg_separator.output = "&"を有効にする。または、PHPス…
php を使っていて mbstring 関連の挙動がおかしいと思ったら、私の環境では、デフォルトのエンコード(EUC-JP)とは違うエンコード(UTF-8)を使っていたためだった。http://wiki.poyo.jp/read/PHP/tips/mbstring/caution_mbregexphp.ini は他のアプリの関係で変…
テンプレートを修正することで、コメント部分に関しては大丈夫だが、タグは日本語を使うと問題がある。HTML を生成した場合、@package や @subpackage は、生成されたファイル名やディレクトリ名に利用される。ソースコードの文字コードとOSの文字コードが一…
http://www.php.net/manual/ja/migration53.deprecated.php を見ていて初めて知ったこと。PHP では、func(&$var) のように関数呼び出す際引数の前に & を付けると参照渡しになるとのこと。すごい仕様だね。 変化無し func(&$a); echo $a, "\n"; # $a => 書…
phpDocumentor は、ソースコードからAPIドキュメントを作成するツール。javadoc みたいなもの。 http://www.phpdoc.org/Ubuntu にはパッケージは用意されていないため、ファイルをダウンロードしてインストールすることにした。どうやら、圧縮ファイルを展開…
試していないが、PHP でエラーメール解析ができる PHPMailer-BMH という製品があるらしい。GPLライセンス。http://phpmailer.worxware.com/index.php?pg=bmh
出来上がったPHPのプログラムが遅いので、ボトルネックを調べることになった。 そういえば、xdebug でプロファイリングしてたなぁと思ってググってみたら、 webgrind というWebベースのフロントエンドがあることが分かった。http://code.google.com/p/webgri…
require や include は、
数年ぶりに PEAR のコーディング規約を眺めていたら、ずいぶん変わっていたので驚いた。そこで見つけたのが、php のソースコードが規約通りに組まれているかどうかをチェックしてくれるツール PHP_CodeSniffer。Ubuntu の場合、パッケージがあるのでそれをイ…
コマンドライン上で対話的に処理するバッチを作成するため、標準入力(キーボード)から文字を受け取りたくなった。ファイル入力の関数にファイルポインタとして定数"STDIN" を渡すだけで良いようだ。 "; $line = rtrim(fgets(STDIN), "\n"); echo "input=$li…
ビット演算をする場合、通常は整数値を使うのだが、基本的には 32ビットしか使えない。(未確認だが、64ビットOSなら64ビット整数が使える?) PHP では、文字列でもビット演算に対応しているらしいので使ってみることにする。ということで、文字の "0" と "1" …
PHP のマイナーな関数は、使ってはイケないと思う。PHP は、一見便利そうな関数の数は多いが十分メンテされているとは言い難いものも含まれているので注意が必要。 fgetcsv() という関数の仕様が PHP4 と PHP5で若干異っているようで、PHP4で問題なかったCSV…
http://ja.wikipedia.org/wiki/%E9%96%8F%E5%B9%B4 より、PHP では、
直接ヘッダを記述: 第3引数でステータスコードを指定:
これはどう呼んだらいいのかな? コールバック?*1 PHP では、指定した関数を変数を介して実行することができる。 Cの関数ポインタともなんか違うような気がする。う〜む。以下の例では、hoge() と fuga() を $f を介して実行している。
http://php.net/manual/ja/control-structures.elseif.php より。"elseif" でも "else if" でもほぼ同じ動作だが、一つだけ違う点がある。パースエラーになる例:
Model::find() の結果を、モデル名のキーを取り除いた配列に加工したい。配列の加工は、Set クラスを使うと便利らしいが、好みの形にならないので、色々悩んだ結果、array_map() と、array_shift() を組み合わせると良いことが分かった。 User->find('all');…
プログラムのみのコンテンツを含まない PHP ファイルの最後には、閉じタグ(?>) を書かない方がいい。(自分が入れた)変な改行コードや空白に悩まされるかもしれない。
CakePHP のオンラインマニュアルは日々進化してる。日本語ページでは、翻訳が追随していない場合は、「This text may be out of sync with the English version」って表示されるようになったみたい。これは便利かも。ほかにも、英語ページが Pending 状態で…
$utf8 = html_entity_decode('〜', ENT_NOQUOTES, 'UTF-8');
app/config/bootstrap.php に記述する。
http://cakebaker.42dh.com/2006/04/15/file-upload-with-cakephp/ より、ビュー: フォーム作成時のオプション 'type' に 'file' を指定する。 create('MyFile', array('action' => 'add', 'type' => 'file')); echo $form->file('File'); echo $form->end()…
Model::findAll() や Model::findCount() が非推奨になって、Model::find() が、若干カオスな状態になってるみたい。古い記法と新しい記法があることがわかった。APIリファレンス参照: http://api.cakephp.org/class_model.html#e60758f27fa8486a063b8cc424…
Shell クラスから見て $this->Dispatch->stdin に標準入力のハンドラがある。 Dispatch->stdin; while (!feof($stdin)) { $buffer = fgets($stdin); // 1行取得 echo $buffer; // 何らかの処理 } } }
そろそろ、ログイン機能を検討してみる。AuthComponent を使うといいみたい。http://blog.ne2ma2.com/archives/160 http://blog.ne2ma2.com/archives/161 http://blog.ne2ma2.com/archives/163・・・初回はどうしたもんかね。ログインしないとユーザも追加で…
http://d.hatena.ne.jp/ngtn/20080409/1207747539 より、 $this->User->query("SELECT * FROM users"); のように、SQL文を直接実行した場合、結果のデータの構造が find などと違っている。 同じ形式にするには find メソッドで発行する SQL文と同じものを生…
http://bakery.cakephp.org/articles/view/release-some-rc2-sweetnessあ、新しいのがあがってる。色々バグフィックスしてるんだって。 最近リリースのペースがいい感じだね。 CakePHP 1.2 RC1 -> RC2 cake ディレクトリと app/webroot/{index,test}.php を…