UNIX的なアレ

UNIX的なこととかいろいろ

php

S3 Stream Wrapperがすごく便利

php

みんな大好きAWSですが、S3 Stream Wrapperがすごく便利だったので紹介します。 S3 Stream Wrapperって? PHP: サポートするプロトコル/ラッパー - Manual PHPではStreamWraperという仕組みがあって、ファイルへのアクセスをいい感じにラップしてくれたりし…

$form->dateTime() で表示される西暦を昇順にする方法

formヘルパーで普通に書いてしまうと、西暦は降順で表示されますよね。 dateTime('date','YMD',null,null,array('minYear'=>'1971','maxYear'=>'2000')); ?> ただ、生年月日の入力など昇順で表示するようなケースが多いと思います。どうやればいいのかなーと…

CakePHPからJSONをつかうモデルをつくった

JSONでシリアライズされているAPIをたたくようなモデルを作ってみました。ローカルに配置しているJSONのファイルにも対応しています。 キャッシュをさせるような仕組みになっているので、多数叩くような場合にも効果的です。 modelの下に、json.phpというフ…

配列の値をカッコでくくってあげたい

http://nanapi.jp/search/keyword:%E5%86%A0%E5%A9%9A%E8%91%AC%E7%A5%AD/q:%E3%83%97%E3%83%AC%E3%82%BC%E3%83%B3%E3%83%88 こんな感じで、複数の単語を「」でくくってあげたいときってまれにあるはず(ですよね)。 こうやるのが一番簡単かなーというわけ…

cakephp1.2 or 1.3でmodel/componentなどを共有する方法

cakephpで複数のプロジェクトを作成したとき、お互いにmodelやcomponentを共有したいときは稀にありますよね。たとえば、nanapiの場合ですとPC版モバイル版もあったりします。 そんな時、プロジェクトは別にするけど一部共有したいmodelがでてきます。最初は…

CakePHPからGoogle Analytics APIを使う方法

nanapiのシステムで一部使う必要があったので、ちょっとチャレンジしてみました。 Google Analytics APIってちょっと面倒そうなイメージがあったので今まで敬遠していたのですが、まぁそうも言っていられなかったわけです。日本語ドキュメントがあると嬉しか…

CakePHPからToritonnの全文検索を使う方法

お手軽につかえる検索エンジンとして、Senna+MySQLで作られたToritonnがありますね。 弊社のWebサービス「nanapi」でも検索エンジンには、Toritonnを使っています。MySQLベースなので、CakePHPのActiveRecordがつかえて便利です。ただ、Toritonn使うときはS…

viewからlayoutファイルの変数をセットする方法

CakePHPにで、各Viewから親となるLayoutファイルをちょっといじりたいときはまれにあると思います。JavascriptファイルをやCSSファイル追加したりするときは簡単です。しかし、変数をセットすることがうまくできず困っていました。 ありがちな例としては、以…

routes.phpを書いた時の逆ルーティングとnamed paramterの挙動

routes.phpで書いたルーティングを、$html->linkなんかで逆ルーティングできるのはなかなか便利ですよね。サービスで使いたいURLを後から決めようってときも、routes.phpを変更するだけで簡単に対応できてしまいます。 しかし、named parameterを使った時に…

deleteAllはデフォルトでafterDeleteが実行されないよ

http://www.exgear.jp/blog/2008/11/cakephp12-behavior%E3%81%A7%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AE%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E3%82%92%E8%A1%8C%E3%81%86/ こちらで紹介されている、behavior…

serializeとjson_encodeのパフォーマンス比較

PHP

json_encodeよりもserializeのほうが早いよねーと思い込んでいてとくに比較もしていなかったのですが、ふとやってみました。 ベンチ用のコードはこんな感じで。 start(); json_encode($array); $t->setMarker('json_encode'); serialize($array); $t->setMar…

set::combineはなかなか便利だ

CakePHPで、findした結果をidをキーにして配列にしなおすという作業は割とやる作業かと思います。普通にループさせて組むと以下のような感じでしょうか。テーブルは下記のような感じで。 +-------+--------------+------+-----+---------+----------------+ …

$this->set(compact('foo')); するときの注意

過去にハマってことを思い出したので、メモ。 CakePHPで、ControllerからViewへ値を渡すときはsetメソッドを使います。 複数の値を渡すときは、なんどもsetするのはコードの見通しも悪くなるのでcompactを使って一気にセットしたりします。サンプルは以下の…

Configure::writeで設定した配列をキー指定で呼び出す

CakePHPで共通の設定情報を書く場合は、Configure::writeを使うことが多いです。配列が使えるのが何よりも便利。実際に使うときは、以下のような感じで。 ※自分は、app/config/bootstrap.phpあたりで設定することが多いです。 Configure::write('foo',array(…

CakePHP1.2のErrorHandlerでハマった

いままでは404のエラーくらいでしか使っていなかったのですが、ErrorHandlerに独自メソッドを追加してみたんです。でも、debugレベルが0になるとなんだか動かないんですよね。 んでもって、コードを読んでみましたよ。するとまぁコンストラクタの中に以下の…