PHP
Sanitize::escape() が使えそう(試してない)。CakePHP 1.1 だと Sanitaize::sql() だったけど、 1.2 になってどこに移動したのか分からなかったがようやく見つけた。
Model::findAll() だとすぐにメモリー不足になってしまうような処理も、 DboSource::fetchRow() で逐次読み込めば大丈夫。 $db =& $this->User->getDataSource(); $row = $ds->fetchRow("SELECT * FROM users"); while (!empty($row)) { var_dump($row); // …
DboSource::conditions() でできた。これで、Model::findAll() のための条件データ($conditions)からSQLが容易に作成できる。DboSource::limit() や DobSource::order() とかもあるので、試してみたい。直にSQL文を書いてもいいんだけど、DB差し替えなんて大…
Shell クラスを継承したファイルを app/vendors/shells の直下におくと、cake コマンドで実行できるらしい。以下が参考になる。 http://www.syuhari.jp/blog/archives/185また、細かいところは、APIを参考にするといいかも。 http://api.cakephp.org/class_s…
find -name "*.php" | xargs grep -B 1 -A 10 "@deprecated"とか打って調べたら結構あるね。いつから非推奨なのかは不明なものが多いけど。非推奨の関数一覧は、 http://api.cakephp.org/1.2/deprecated.html にまとめてある。・・・ありゃ、Model::findAll(…
こちらより、いくつかピックアップ。現状では、ポケットリファレンスで分からないところは、ネットで調べたりソースを読んでいる。やはり、まとまったものがあると助かる。 Configurations ACL クラスの名前が変わりました Beta : Configure::write('Acl.cla…
ビューで以下の様にすると面白いことになった。 checkbox('User.sex.1')?>男性 checkbox('User.sex.2')?>女性 コントローラーでは、$this->data['User']['sex'] が配列になる。var_dump($this->data['User']['sex'] をとると、 array(2) { [1]=> string(1) "…
/cake/libs/view/layouts/default.ctp が用意されているので、これを /app/view/layouts 以下にコピーして利用する。
FormHelper::month() を利用するのだが、CakePHP 1.2.0.7125 RC1では、英語表記にするかどうかを "monthNames" オプションで指定できる。 month('User.birthday', 'now', array('monthNames' => false)) ?> で、数字表記に変更。・・・もしくは、/cake/libs/…
CakePHP ポケットリファレンスを購入した。 http://gihyo.jp/book/2008/978-4-7741-3503-8開発版なので当たり前なのだが、CakePHP 1.2 は内容がどんどん変わっている様だ。 ポケットリファレンスは、 CakePHP 1.2.0.6311-beta を参照している。
cake/libs/model/datasources/dbo_source.php というファイルがある。 このクラスを利用することで、直接SQLを実行することもできる。http://www.1x1.jp/blog/2008/04/cakephp_php5_dbosource.html より、 useDbConfig); $db->value($hoge); ?> $this->useDB…
CakePHPについて情報収集に2日かけた後、利用開始して1日目でハマった点。 環境設定でハマった DocumentRoot 以外にコンテンツを設置した際の設定。 複数の .htaccess に RewriteBase を追加した。 例: http://localhost/~okinaka/cake/ にしたいとき ~/pub…
今回、"magic_quotes_gpc = On" の環境で開発することになったので、仕様確認。 GPC(Get/Post/Cookie) 処理に関する magic_quotes の設定を行います。 magic_quotes が on の場合、'(シングルクオート)、" (ダブルクオート)、\(バックスラッシュ) 、NULL に…
http://jp2.php.net/manual/ja/language.basic-syntax.php の代わりに、 って表記が出来る。ただし、php.ini でショートタグが有効でなければならない。 short_open_tag = On
PHP のクラス名とメソッド名の困った仕様に、「大文字と小文字を区別しない」というものが上げられる。以下のように、せっかく読みやすいクラスを定義していても、大文字小文字の使い方によっては、可読性が極端に悪くなってしまう。それでも動くところが怖…
昔から使ってるPHPのコードには非推奨の関数が多く含まれていて、 置換する必要があった。他にもあると思うのだが、知っている範囲で 忘れないようにメモしておく。 置換前 置換後 pg_exec pg_query pg_result pg_fetch_result pg_numrows pg_num_rows pg_er…
今使用しているバージョンの mb_send_mail() 関数は腐っているので、他の方法はないかと探していたらいい方法があった。Return-Path まで設定してくれるところがうれしい。http://jp.php.net/manual/en/function.mb-send-mail.php#77899
http://www.res-system.com/weblog/item/563/catid/34date()関数を使うためには、php.ini にて、date.timezone の設定が必要とのこと。test.php:
複数のサイトを1つのサーバで管理しようと思った場合、php.ini の設定の違いが問題になる。以下のような設定変更する方法が用意されている。 PHPソース中で設定変更 (ini_set関数) http://jp.php.net/ini-set htaccess で設定変更 (php_value, php_flag ディ…
Sarge から Etch にアップグレードした際、 PHP4は 4.3 から 4.4 へと変わった。その際、mb_send_mail 関数でメールを送ると Subject が文字化けすることが分かった。先人が(1年半も前に!)おなじ障害にあっていることが分かった。http://nucleus.mochy.com/…
PHPの演算は、混乱する仕様だ。文字列で演算する場合、一度 float などに 型変換されているようだ。PHP: 文字列の変換 文字列は、'.'、'e'、'E' のどれかが含まれている場合は float、それ以外は整数として評価されます。 と書かれているが、実際には 31ビッ…
ip2long(), long2ip() という関数があるとのこと。http://itpro.nikkeibp.co.jp/article/COLUMN/20070507/270104/ http://www.php.net/ip2long http://www.php.net/long2ipPostgreSQL に格納する際には、データ型を inet 型としているので プログラム側で何…
Debian (sarge) にて memcached の PHPモジュールを使う。 PECL拡張モジュールをインストール 事前に memcached 本体と zlib ライブラリの開発環境が必要。 あとは、pear コマンドを使ってPECL拡張モジュールをインストールする。 (memcache-2.1.2 は、pear…
携帯には、リダイレクトの回数制限があるらしい。 何回リダイレクトできるか試してみる。 0) { $host = $_SERVER['HTTP_HOST']; $uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\'); $extra = "loop.php?c={$c}"; header("Location: http://$host$uri/$ex…
実機が手元にないので推測だが、705P のブラウザは、Cookie 対応しているらしい。 だが、Set-Cookie ヘッダの有効期限(expires)を無視している、もしくは、時計がずれてるようだ。 Cookieを発行してしまうWebアプリの作りにも問題があるが、困った不具合だ。…
チェックボックスの表現にビット演算を用いることで、 データベースへの格納・取出しが1項目で収まるので、 ディスクサイズやCPUにやさしくなる。 ただし、整数型を用いると、31bitまでしか使えないということに注意。 32bit 以上の整数を扱う場合は、以下…
自分の感性や既成概念を覆す、非常に奇怪なコードを目にする。 どんな悪質なコードでも保守を継続しなければならず、常に苦しめられている。 それらのことを「マジック」と呼ばれ恐れられている。 一例を挙げよう。 PHP には、定数を定義するための関数 defi…
#!/bin/sh FILES=`find $1 -name \*.php` for file in $FILES do php -l $file done
1901-12-13 20:45:54 〜 2038-01-19 03:14:07 (GMT) 環境によっては、日付の範囲は Unix エポック以前にはならない。 PHP 5.1.0 以降のバージョンでは、この制限はなくなった。
文字コードを指定するのに pack 関数を使用する。 echo pack("n", 0xF659);