訳 CakePHPコアチームはメジャーなバージョン番号のジャンプをアナウンスすることに興奮を覚えています。 CakePHP 2.0 安定版が出ました! 私たちはこのリリースに永久の時を注ぎ込み、このバージョンのフレームワークに素晴らしいアイデアの数々を成すことができました。 これは2.0が意味するものの応急な概要です:PHP4のサポートを打ち切り、全てのコードをPHP5.2以上に厳密に尊守するように書き直しました。 例外、PDO、SPL、json_encodeなどなどのネイティブな機能の使用。 ファイル命名へPSR-0を取り入れました。あらゆるクラスは同じ名前を用いてファイルにマッピングされます。覚えることが少なくなりました! 新しいエラーと例外のハンドラーは簡易な設定や、ページが見つからないエラー、承認エラーなどのエラーとの楽な協調、など数多くのものを提供します。 マルチリンガルな開発
(追記)本記事の内容はCakePHP1.3.6ならびに2011/04/28時点でのgituhbの1.2, 1.3ブランチで検証しました。 (2011/05/05追記)コメントで現時点のCake2.0では再帰的な探索を行わないとのご指摘を頂きました。ちゃんと追えてないけど、import周りの処理は大幅に変更されるようです。 「CakePHPではControllerは1つのディレクトリに全部入れるのがふつう」という話を聞いて、さすがにそれはないだろうと思って調べたらapp/config/bootstrap.phpに$controllerPathsを書けば探索パスを追加できるという情報を得た。 CakePHPでコントローラーを複数のディレクトリに整理する方法 - yandodの日記 コントローラの中身をフォルダ分けする|ASTRODEO のだけど、どうにもうまく動かなくてあちこちいじくり回してた
イントロダクション CakePHPの使い方は多種多様で、もちろん一つのやり方が正解ということはありません。 しかし、CakePHPはフレームワークであるわけで、想定された使い方以外ではその真価をなかなか発揮できません。 CakePHPにおけるモデルは、ビジネスロジックを置くレイヤとして想定されています。 そして、バリデーションを用いることによって保存のロジックを構築するということも想定されています。 これは、何故Cookbookで紹介されるコードが、ほとんどバリデーションとModel::save()の組み合わせであるかということかの答えにもなっています。 悪い例 あなたはModel::save()の代わりとして、以下のようなadd()メソッドをモデルに定義しているかもしれません: <?php class Post extends AppModel { var $validate = arr
先日、こんな記事が上がっていました。Android開発者が知るべき10のこと この記事でまとまっているのは、Android開発において必要な10の項目です。 インターフェースの設計から、データの取り扱いまで。AndroidはモバイルデバイスのOSで、CakePHPは単なるWebフレームワーク。 しかし、予め用意されたルールやAPIを活用する点は同じです。 つまり、フレームワーク全般において、開発者が知るべきことをまとめることが出来るはずです。 ここでは、私が良く利用するCakePHPフレームワークについて、開発者が知るべき10のことをまとめます。 1. CakePHPで良いのか CakePHPを使う際に、知るべきことその1。 それは、あなたは本当にCakePHPを使うべきなのかということです。 現在、あらゆるフレームワークが溢れ返っています。RubyRuby On Rail
CakePHPはやはり便利ですね。 記事を翻訳したことで、まだまだ知らない世界があったことを知りました。 そしてまた新しい知識欲が湧いてきました。 皆さんはどうですか? 何か使ってみたいプラグインはあったでしょうか。 これまで載せたCakePHPプラグインの記事を一覧にしておきます。 認証編 AuthComponentの代替えになるプラグインやfacebookと連携するプラグインが紹介されています。それに加え、使いにくいACLを使いやすくするツールも。個人的には一番、興味のある記事でした。 検索とページネーション/ファイルアップロード編 CakePHPの使いにくいページネーションを使いやすくするプラグイン、Yahoo! BOSSのプラグインが紹介されています。ファイルアップロードはTransloaditというサービスに対応させるプラグインから、メジャーなメディアプラグインまで。 最適
Websites need maintenance, and sometimes that maintenance requires the site togo down for a little bit as youtweak thedatabase, add additional capacity or make large changes to the application code. In these circumstances you cannot afford to have users mucking about on your application. However, you might need access to ensure all your amazing upgradesgo smoothly or perhaps do the upgrading i
携帯サイトを構築する場合の、各キャリア対応をサポートするライブラリと、それをCakePHPで利用するためのヘルパー・コンポーネントを公開いたします。ライブラリ本体はCakePHPだけでなく他の環境でも使用することが出来ます。 【お知らせ】 ktailibrary.orgは諸事情ありまして閉鎖しました。 はじめに 携帯サイトを作成する場合、一般的には各キャリア向けにHTMLを作成し、それを振り分けして表示する仕組みを採用していたと思いますが、最近の携帯では、いくつかの仕様を除いてほぼ同じHTMLを閲覧することが可能になってきています。そこで、その「いくつかの仕様」についてを解決できるような仕組みができないものか…という経緯から、本ライブラリが生まれました。 また、本ライブラリは個人的に作成していたPHPライブラリがベースになっているのですが、CakePHPで使えるようにすることで「携帯サイト
RedmineKtai Libraryのバグトラッキングサイトです。 携帯サイトを作成する場合、一般的には各キャリア向けにHTMLを作成し、それを振り分けして表示する仕組みを採用していたと思いますが、最近の携帯では、いくつかの仕様を除いてほぼ同じHTMLを閲覧することが可能になってきています。そこで、その「いくつかの仕様」についてを解決できるような仕組みができないものか…という経緯から、本ライブラリが生まれました。CakePHPにて利用されることを想定していますが、ライブラリ単体は他のPHP環境で利用することが出来ます。 詳しい情報はおよびダウンロード方法はこちらにて公開しています。 ▼Ktai Library for CakePHP1.2 http://blog.ecworks.jp/ktai 最新ニュース Ktai Library 0.x: バージョン0.2.3公開(2009/03/2
2010年を振り返る意味で、自分がCakePHPで開発する際に良く使うプラグインをまとめてみました。 誰かのお役に立てれば幸いです。 1.cakeplus ■ よく使うバリデーションをまとめたBehaviorであるadd_validation_rule モデルでバリデーションする際に本当に使います。 var $validate = array( 'hoge' => array( "rule1" => array('rule' => array('katakana_only'), 'message' => 'hogeにカタカナ以外が含まれています' ), ), ); ■ 自動でhiddenタグを生成するヘルパーformhidden 確認画面を挟む際にhiddenに入力情報をまとめて出力してくれます。 echo $formhidden->hiddenVars(); このプラグインを知ってから、

JSONでシリアライズされているAPIをたたくようなモデルを作ってみました。ローカルに配置しているJSONのファイルにも対応しています。 キャッシュをさせるような仕組みになっているので、多数叩くような場合にも効果的です。 modelの下に、json.phpというファイル名で保存してください。 app/models/json.php <?php class Json extends AppModel { var $name = 'Json'; var $useTable = false ; /* * jsonデータの取得 * @param string JSONファイルへのパス * @param boolean キャシュさせるか * @return mixed */ function find( $path , $cache = false ){ if ( !substr_count( $p
nanapiのシステムで一部使う必要があったので、ちょっとチャレンジしてみました。Google AnalyticsAPIってちょっと面倒そうなイメージがあったので今まで敬遠していたのですが、まぁそうも言っていられなかったわけです。日本語ドキュメントがあると嬉しかったのですが、あんまり良質なのがないので本家を頑張って読み解きました。 ライブラリを利用する まぁいくつかライブラリはあるわけですが、PHPは公式のライブラリが用意されていません。 ただ、公式のヘルプに紹介してあるものがあったのでこちらを利用しました。画面下部にある、PHP5 OOP Interfaceというやつです。 http://code.google.com/intl/ja/apis/analytics/docs/gdata/gdataLibraries.html 使う前に取得しておくべきものGoogle Analyti

これはCakePHP Advent Calendar 2010の6日目の記事です。 CakePHP Advent Calendarって何?という方はこちらへ。 CakePHP Advent Calendar 2010を開催! CakePHPに関するtipsを1日1つ、順番に紹介するということなので、私はGitとCakePHPの活用について書きます。 恐らく、これはCakePHPに限らずあらゆるフレームワークで有効なtipsです。 CakePHPを初めとするフレームワークを長く使っていると、色々と面倒なことが起きてきます。 フレームワークのバージョンアップ 外部ライブラリのバージョンアップ 複数プロジェクトにおけるコードの共通化 “フレームワークのバージョンアップ“は重要です。 先日、こんなバグも発見されましたしね。 CakePHPのPHPコード実行の脆弱性を使ってCakePHPを焦が
New CakePHP 5.2 Chiffon. Faster.Simple. Delicious. What's new in 5.2 The migrationguide has a complete list of what's new in 5.2. We recommend you give that page a read when upgrading. A few highlights from 5.2 are: New "counter_cache" command New "nativeuuid"database typeError handling customization using methods in "ErrorController" Helper method for generation importmap forJavaScript files

どの様にして、CakePHP でAmazon の様に URL のディレクトリ先頭部にSEO 的なワードを入れられるかを考えてみた。 CakePHP で利用するコントローラーは、アクセスされた URL を元に /cake/cake/dispatcher.php が解析しコントローラーを決めている。しかし、/cake/cake/dispatcher.php は CORE から読み込まれるため APP だけで完結することができない。 /cake/app/config/routers.php で制御しようかとも考えたが、その都度設定するのも手間が掛かるし手を入れるのは運用上よくないことだと思う。 そこで思い付いたのは、/cake/app/webroot/index.php で呼び出されている Dispatcher に URL を渡してやることだ。 $Dispatcher = new Dispa
例えばusersテーブルとpostsテーブルがあり、「users hasMany posts」としたとき、ユーザの投稿したメッセージ件数の一覧表など作りたいことなど、普通にあると思う。そんなとき、usersテーブルとposts テーブルをJOINして、同じuser_idを持つpostsデータをGROUP BYでまとめて、count()で件数を引っ張り出す。SQLで書くと以下のような感じ。 SELECT User.id,User.name,count(Post.user_id) AS num FROM users AS User LEFTJOIN posts AS Post ON User.id=Post.user_id GROUP BY User.id; ここで、投稿を1度もしていないユーザを省略したい場合は、「LEFTJOIN」を「INNERJOIN」に変更すればよい。 さて、この
6/19追記:@k1LoWさんが紹介記事を書いてくれました。ありがとうございます! 概要 @k1LoWさんの多大な助力もあり、多くのバグフィックスと新機能の追加がありました。 トータルで89のテストケースがパスし、実践投入が現実的になりましたので、ここに1.0をリリースすることをお知らせします。 ダウンロード http://github.com/hiromi2424/TransitionComponent/downloads 「1.0」をダウンロードしてください。 主な新機能Session->setFlash()のパラメータが全て指定できるように、$flashParamsプロパティが導入されました。(k1LoWさんの提案) mergedData()の引数に$callbackがつきました。これによりマージの仕方を好みに変更できます。デフォルトがSet::merge()になりました。(以前は
仕様変更しました。2010/6/06 13:00 find('matches')といった書式は破棄されました。'jointo'パラメータの指定のみで動作するようになりました。 この変更によりpaginateCountが適切に動作するようになりました ソースコード http://github.com/hiromi2424/MatchableBehavior/ イントロダクション ページネートする際、joinsオプションが肥大化することはよくあることですよね。 habtmとかを絡めると5つ以上のjoinsオプションを長々と書かなくてはならず、いっそquery()でSQLを直接発行したほうが早いよぷんすか! といった経験はありませんか? それを解決するのがMatchableビヘイビアです。 このビヘイビアで何ができるの? 簡単な指定で、モデルのアソシエーションからjoinsオプションを自動生成で
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く