イントロダクション 標準のfindの種類(first, all, count, threaded, neighbor, list)だけでは、ビジネスロジックに対応できないことがあります。 これに対するひとつのプラクティスとしては、カスタムfindタイプを定義することです。 この記事では、実際の開発を想定したリファクタリングの過程を通してカスタムfindタイプの定義の仕方と活用方法、その意義をご紹介します。 「次」の記事 例えば、カレントのレコードの「次*1」のレコードを取得したい場合、それに纏わる複雑な処理は、単純なqueryの発行だけでは済まないことがあります。 この「次」のレコードを探索するロジックを例に、ボブ*2がこれを実装していくお話をしましょう。 要件の定義 ボブの上司のサム*3は、クライアントの会社のサイトにブログモジュールを追加するプロジェクトの打ち合わせで、次の要件を定義し
Apache,PHP5,PEAR,MySQL,XAMPP,cakePHPを使ったWebサイト構築のTips レンタルサーバー「エックスサーバー(xserver)」に、cakePHPを導入する手順。 1.cakePHPライブラリの設置 cakePHPを公開用としてレンタルサーバに設置する場合、webroot以外のファイルはwebからアクセスできない場所に設置するのが望ましい。 参考: ■3.4.3. 高度なセットアップ:その他のインストール方法 cakePHPプログラマーズ リファレンスガイド ■「cakePHPガイドブック」p.298 "公開(Linux)サーバへの設置" xserverの場合、/home/ユーザID/ドメイン名/の下がユーザが利用できる領域となる。 web公開ディレクトリは、/home/ユーザID/ドメイン名/public_htmlとなる。 このため、cakePHPは、/
イントロダクション CakePHPの使い方は多種多様で、もちろん一つのやり方が正解ということはありません。 しかし、CakePHPはフレームワークであるわけで、想定された使い方以外ではその真価をなかなか発揮できません。 CakePHPにおけるモデルは、ビジネスロジックを置くレイヤとして想定されています。 そして、バリデーションを用いることによって保存のロジックを構築するということも想定されています。 これは、何故Cookbookで紹介されるコードが、ほとんどバリデーションとModel::save()の組み合わせであるかということかの答えにもなっています。 悪い例 あなたはModel::save()の代わりとして、以下のようなadd()メソッドをモデルに定義しているかもしれません: <?php class Post extends AppModel { var $validate = arr
CakePHPは、PHP言語の高速開発用フレームワークです。日々、発展を遂げる各種フレームワークの動向を見極めつつ、日本発のCakePHP応援ブログとして、最新情報をお届けします。 入力されたデータのチェック方法に関しては、 http://manual.cakephp.org/chapter/12 ここにいろいろ説明があります。日本語関係のものは、自分でいろいろ設定できます。 で、ここで設定したチェックルールがどこで利用されるか、というと、 1)上記のマニュアルにあるように、 if($this->Post->validates($this->data)) とすれば、$this->data で送られた入力データが、Post モデルの設定ルールに適合しているかチェックできます。正しければ true が返ってきます。 これは、モデルにあるメソッドであることに注意。 2)それぞれの値のどれがおかし
CakePHPには、テーブルを初期化・作成するSchema機能があります。 現在のDBからSchema設定を作成したり、 以前のSchemaとの差分を更新するSchema設定を作成したり、 database.phpのテーブル名prefixにも対応しているので、 システムのインストール・アップデートに非常に有効です。 しかし、DBの設計によっては、CakeSchemaを使えないケースがあります。(以下、MySQL) 1.ENUMを使えない ENUM形式のカラムがあると、schema作成で以下のようなNoticeが出ます。 [cake@cake cake-install]$ ./cake/console/cake schema generate Welcome to CakePHP v1.2.4.8284 Console ------------------------------------
※CakePHP 1.3.5 現在のテーブル情報を出力 cake schema generate app/config/schema/schema.phpが生成される モデルのファイルが存在しないとそのテーブルはスキップされる すでにある場合はOverwriteかSnapshotか選択 Snapshotならバージョン管理 「PHP Fatal error: Cannot access empty property in /src/cake/libs/model/cake_schema.php on line 275」とかエラー出たりする 該当の行を「if (isset($Object->$class) && is_object($Object->$class)) {」とすると動いた schema.phpの変更を反映 cake schema run update では動かない 正しくは ca
スタンド名「スパスティック」 特技「空気読まない」 俺のスタンドだ。距離はゼロメートル。 むしろ俺自身がスタンド。 さて、CakePHP Advent Calendar 12日目の担当だ。 なんで12日目を選んだかというと、12という数字がすきだからだ。 それにyamlよりiniファイル好きな俺としては、12はドメスティックに愉快だとおもわないか? ま、そんな話は完全に無視して良い。 12ということで、テストしたCakePHPのバージョンは1.2を使用してみた。 ところでテーマだけど、俺はフォームヘルパーに関して、ざっくりとやってみたい。 完全にオレオレフレームワークでプロプライエタリな開発環境だが、いい加減メジャーなフレームワークに移行したいといういろいろな開発者、もしくはその関係者に対して、俺はCakePHPがMVCフレームワークの中でもかなりの勢いがあるし、何しろ俺がやってるから俺が
DBのテーブル設定は非常に面倒な作業の一つです。 特に、開発時は仕様変更などでテーブル内のフィールドが頻繁に増減することもあるかもしれません。 テーブルを作成したり、更新したりするのに、皆さんはどのような手順を踏まれるでしょうか?まずSQLを書いて、アップロードして、mysqlやpsqlのコンソールを使って実行していますでしょうか?それとも、mysqladminとかのguiツールを使っていますでしょうか? CakePHPには、schemaシェルが付属されていて、これを用いることで簡単にテーブルを初期化することができます。コマンドラインからコマンド一発で(実際には確認メッセージがあるのでy/n選択がありますが)、書き換わるので大変に便利です。 ただ、ドキュメントや情報が公開されているブログなどが少ないため、どのように記述して良いか分からない方も多いかと思います。そこで、簡単に使い方を解説し、
クォーターパウンダーのCMで、北島康介とかがでかいことを言っているのですが、なんでこういう内容なのか、やっと意味が分かったんですよね…最近。ビッグマウスで食えってことなのね(^^;;; というわけで、タイトルがかなりビッグマウスなんですけど、考えてみたら制作チュートリアル的なものが何処にもなかったので、ちょっと書いてみることにします。 一応、近日開催の勉強会でも内容は一通りなめる予定ですが、ネットで様子をうかがっている感じ、制作で困っていらっしゃる方も何名かいらっしゃるようなので、先行で説明させていただきます。 お役に立てれば幸いです。 今回は、とりわけ需要が高いと思われる「セッション使用」「コンポーネント有り」「ヘルパー有り」「絵文字画像有り」「一括変換はなし」という前提でご説明いたします。 準備 構築に際して、つぎのものをまず準備します。 CakePHP まずPCで普通に見れるよう、い
ここでついでなので schema を作っておきます。 自分は今 app フォルダーの中にいるので、そのまま cake schema generate -f と打ちます。 Welcome to CakePHP v1.2.3.8166 Console ————————————————————— App : app Path: /Users/bob/Sites/cake/app ————————————————————— Cake Schema Shell ————————————————————— Generating Schema… Schema file: schema.php generated とメッセージが出て終了。 /app/config/sql/schema.php というファイルが生成されます。 中味はこんな感じ。 class AppSchema exte
ブログ初ポストはCakePHPを使ったテスト駆動開発です。 CakePHPはユニットテストとしてSimpleTestに対応しています。 SimpleTestをインストールするだけで、モデルやコントローラ、シェル、ルーティングクラスなどのユニットテストが出来るようになります。 今日はこのCakePHPとSimpleTestを使ってテスト駆動開発の流れを説明します。 ただ、僕自身テスト駆動開発を学んだのは去年のCake祭りなので、至らない点が多々あります。 もし何かあれば、コメントでご指摘ください。 今更感もありますが、この場を借りてCake祭りでテスト駆動の指導をしてくださった、@sizuhikoさんに感謝します。 開発手順 まずは開発手順を示します。少し細かいですが、テスト駆動では以下のような順で開発していきます。 設計する。 テストケースを書く。 テストケースをデバッグする。 コー
./cake -app /path/to/app/to/put bake [project]新しくCakePHPアプリを作る際、appディレクトリをコピーせずに、bakeで作成しています。app_controller.php や app_model.php などを作成してくれますし、APP/config/core.php の Security.salt と Security.cipherSeed の生成もしてくれます。ついでに project つけずにbakeを実行すれば、bake project と bake db_config をまとめて実行できます。 cakeコンソールのBakeを使ったアプリケーションのセットアップ - kanonjiの日記 を参照 ただ、気になっていたのはAPP/tmp 以下のディレクトリやAPP/libs など、空ディレクトリに入っている empty というファ
Bakeを使う 新しくアプリケーションを追加する コマンドラインからBakeを使用して、アプリケーションに必要なコードを生成する事が出来ます。データベースにテーブルを作成しておけば、Bakeを使ってデータベース設定、モデル、ビュー、コントローラのファイルを生成する事が出来ます。 Bakeを使う ディレクトリに移動し、'cake bake'を実行します。 $ cd /path-to-cake/cake/console/ $ cake bake Bakeを実行すると以下の例のように対話的な画面になり、やり取りを続けてゆくとコードが生成されます。 Welcome to CakePHP v1.3.x Console --------------------------------------------------------------- App : garacter.com Path: /pa
cake1.2でbakeを使う xampp環境にCakePHP 1.2(以後cake1.2)をインストールする際には,xamppのドキュメントルート(xampp\htdocs)に入れるというのが一般的で,いろんなとこの解説にもそう書いてあります。僕の場合はそれをxamppのルート(xampp\cake)に入れるようにしました。ドキュメントルートに入れると,/cake/app/にアクセスしたらすぐに動作確認できるのでいいのですが,ドキュメントルートからは外した位置に入れたかったのです。bake でプロジェクトを作成する方法をとれば,それでも全然問題なく利用できます。 Bakeでプロジェクトを作る アプリケーションを開発する際には,cake1.2の場合は,cake.phpでもってプロジェクトを作成します。 cake.phpをWindows環境で使用する場合は,cake.batを使うのがいいよう
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く