CakePHP1.2から新たにBehavior(振る舞い)クラスが実装され、モデルに共通の処理を定義することが可能になりました。 今回はBehaviorを使ってモデルの各メソッドの結果を自動的にキャッシュするクラス(CacheBehavior)を検討してみました。 CakePHPでは標準でビューキャッシュをサポートしていますが、Cacheクラスを利用することで簡単にキャッシュ機能を組み込むことができます。 ソースコードは少し長いので、一番最後に記述することにします。 CacheBehaviorの目的 CakePHPでの開発では、 ・まず動作するアプリケーションを構築する ・パフォーマンス上ボトルネックになっている部分のチューニングを行う という手法が一般的だと思います。 そこで、CacheBehaviorはチューニング時に実装していくことを想定し、構築時のソースコードになるべく
可変変数を可能にしたPHPらしい関数だ。 使い道は少ないとは思うが、あると便利な関数ではないだろうか。 次に、extractの逆になるcompactを試してみる。 array compact ( mixed $varname [, mixed $... ] ) 変数名とその値から配列を作成します。 extractは「連想配列>変数へ展開」 だったが、compactは逆なので、「変数>連想配列に格納」となる。 あらかじめいくつかの変数を定義しておく必要があるので、以下のように設定しておいた。 $id = 'someone@example.com'; $password = 'mypassword'; $screenname = 'sam'; この状態で、すべての変数をcompactして見よう。 $account = compact('id', 'passwd', 'screenname');
CakePHP1.2.5を使ってます。 特に情報が一定期間変わらないのにDBアクセスが走るページが、TOPページだったり、アクセスが多いページだった場合、キャッシュはパフォーマンス改善に抜群の効果があります。 Cakeのキャッシュを使うと、app/tmp/cache以下にキャッシュファイルを作って、それを参照してDBアクセスを回避するなんてことが簡単にできます。CakeのキャッシュはAPCを使ってメモリ上に載せるとかも簡単です。 今回は、複数ポイントで、異なるキャッシュ時間を持たせたいときのTips。 core.phpにキャッシュを使う定義(デフォルトのまま) Cache::config('default', array('engine' => 'File')); ここの定義を、FileからApcにすればメモリに載せたりできます。 あるコントローラで、モデルを使ってDBから読み込んだ結果(
__関数ですが、第1引数に文字列を渡し、第2引数はデフォルトはfalseでecho出力し、trueを渡すと戻り値として返却になります。 (※basics.phpに関数定義されています。) そして、cakeのコンソールを使って翻訳ファイルを作成します。 $ /path/to/myproject/cake/console/cake i18n Hello yoshiki, Welcome to CakePHP v1.2.0.6311 beta Console --------------------------------------------------------------- What is the full path you would like to extract? Example: /data/myapp [Q]uit [Q] > /path/to/myproject/app #
CakePHPは、PHP言語の高速開発用フレームワークです。日々、発展を遂げる各種フレームワークの動向を見極めつつ、日本発のCakePHP応援ブログとして、最新情報をお届けします。 CakePHP1.2のbakeで自動生成した画面は、画面に表示される文字列が__('文字列') で囲まれています。これは、簡単に多言語翻訳ができるように配慮されているからです。 ここを無理やり日本語に書き換えても日本語化はできますが、せっかくなので、最初から国際化をにらんで、poファイルを生成、編集して日本語化を進めてもよいのではないか、と思います。 CakePHP1.2はgettextを使用した翻訳と流れは同じです。 http://ja.wikipedia.org/wiki/Gettext (1)アプリで使用する文字リソース(メッセージ類)は、__('')で囲む こうしておくと、自動的に翻訳ファイルを作ってく
John David Anderson (docs at cakephp dot org)までEメールを送るか、IRC (#cakephp on freenode as _psychic_)で、参加したい旨を連絡してください。 翻訳者Tips: アクセント文字のためにhtml entitiesを使用しないでください。このbookはUTF-8を使っています。 フレンドリーな文体を使ってください。 タイトルと内容を同時に翻訳してください。 翻訳する言語のページで閲覧・編集してください。そうしないと、英語ページの編集として記録されてしまいます。どの言語の翻訳なのかをレビューアーが知っていることはまれです。 マークアップを大幅に変更したり、新しい内容を追加したりしないでください。オリジナルの内容の情報に不備があるのであれば、英語の情報をまず編集してください。 用語を英語で書く場合には
気がついたら1年ぶり以上のCake関係の記事。 さて、最近またCakePHPを使ってWEBアプリを組んでいるので久々に更新します。 最近、Product Advertising APIと名前が変わったAmazonのAPI。 これを使うのに便利なライブラリとしてPEAR Services_Amazonがあります。 このライブラリを使用すると、通信結果結果を配列で取得、Amazonから取得したデータのキャッシュの実装などなどが簡単に行えます。 が、CakePHP内部で、このライブラリのキャッシュ関係の部分が動かずハマってしまったので、かつ同じようにハマる人がいそうなのでメモしておきます。 発生したエラーについて CakePHPの、あるmodelの中で、次のようなコードを書きました <?php require_once("Services/Amazon.php"); $amazon = new
「ブログ書くまでが勉強会」という名言を紹介したにもかかわらず、勉強会後腑抜けて週末までブログ書けなかった @mon_sat です。 というわけで、7/21の木曜日、かねてより企画していましたデザイナー向けCakePHP勉強会を開催してきました。 (ATND:デザイナー向けCakePHP勉強会) きっかけは業務上のパートナーである @konsan と @hiromi2424 と話をしている中で出た話。 CakePHPのユーザー層としてデザイナーさん達が入ってくれば、今よりも開発がスムーズに進み、それが納品するクオリティにも影響するだろうと。 それが春先のこと。 そのとき考えたアイディアのひとつが、デザイナ向けに勉強会をやることでした。 デザイナー向けCakePHP勉強会(viewやデザイン部分の勉強会)を今月19〜21日のどれかで開催する方向でやんわりと固まった。 #CakePHP #cak
cakePHPの$mode->saveで1時間以上ハマってしまった。 $model->saveは挿入データのidがnullならInsert,そうでなければUpdateする仕様になってる。 なので以下のようなコードを書けばレコードが2つInsertされると思って実行してみると。。 <?php $this->Model->save($this->data); //1つめのレコードInsert unset($this->data['Model']['id']); //unsetでid削除 $this->Model->save($this->data); //2つめのレコードInsert ?> レコードが1つしか登録されない。 実行されたSQLをデバッグモードONにしてみてみると、1つめのレコードはInsertされているが 2つのめレコードはInsertされず、1つめのレコードをUpdateし
とりあえず、以下の仕様を満たす事を目標とする。 対象とする携帯は3Gのみ。(文字コードはUTF-8で出力) 同一URLで携帯用とPC用ページを切換え。 使用したのは CakePHP Ver 1.3.8 Ktai Library Ver 0.4.1 1.CakePHPとKtai Libraryをインストール var $ktai = array( 'use_img_emoji' => TRUE, //PCからのアクセスではTypePad絵文字を表示させる 'img_emoji_url' => '/mysite/img/emoticons/', //インストールした環境に合わせる 'input_encoding' => 'UTF-8', 'output_encoding' => 'UTF-8', 'output_convert_kana' => FALSE, //かなの変換を
CakePHP 1.3は数多くの機能を取り入れました。このガイドはそれらの変更点を要約しようとする試みです。また、必要ならば、そのために拡張されたドキュメントを指し示します。 SecurityComponent 種々のrequireGetやrequirePostのようなrequireXXメソッドは、今や名前を指定する際に、引数一つ一つに文字列を渡すだけでなく、第一引数に単純な配列を渡すこともできるようになりました。 $this->Security->requirePost(array('edit', 'update')); $this->Security->requirePost(array('edit', 'update')); コンポーネントの設定 全てのコアコンポーネントに対する設定は、$components配列から設定できるようになりました。ビヘイビアのように、コンポーネントを宣言
CakePHPのフォーラムで知ったのですが、Jose Diaz-Gonzalezさんがプラグインのまとめを書いてくれています。 CakePHP Plugins – A Biblical Retelling CakePHPに限らずフレームワークの良いところ、それはやはりソースコードを再利用できることです。 そしてそのフレームワークの利用者が多ければ多いほど、再利用できるソースコードが増えていきます。 CakePHPにはビヘイビアやコンポートネント、ヘルパーから始まり、そして様々なものを統合して活用できるプラグインといったコードを再利用する仕組みが採用されています。 今回は先ほど紹介したブログの記事を日本語訳し、自分なりにまとめて、紹介します。 [注意] 初めてまともに訳すので、かなり意訳してます。ここはおかしい、変だ、という点があればご指摘ください。 認証と承認 Debuggable’s
This post is out of date; place check out any of the numerous Cakephp 2+ versions of Facebook Websites implementations out there. I wanted to be able to leverage all of the advantages of using Cake’s built in Auth component in my latest application; problem was that the application needed to allow for both normal user accounts and Facebook Connect generated user accounts. I struggled for a while t
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く