CakePHP の書き方

この記事は、CakePHP3 Advent Calendar 2016 25日目の記事ではありません。 まとめ Controller/Componentにビジネスロジックを書かない カスタムfindを活用しよう 1テーブル1モデルではなく、場面によってモデルクラスを増やそう Modelless Form / Tableless Modelを活用しよう beforeSave/afterSaveは諸刃の刃 Behaviorにビジネスロジック書くのもあり View層ではView Cell/View Blockを活用しよう CRUDプラグインお勧め この記事を書いた動機 CakePHPにおいてビジネスロジックに該当するものをComponentに書くという記事を見かけるたびに、それはアンチパターンじゃないのと感じている日々。 ビジネスロジックをどこに書くべきか、共通処理をどこに書くべきかというのを、自分の考えを整理する意味でも記事として残しておきたいと思います。 ...

12月 25, 2016 · nojimage

CakePHP 1.3.18 および 2.4.9 のリリース

CakePHP 1.3系および2.4系に対して、セキュリティ修正を含むリリースがでています。 SecurityComponentの改ざんチェック機構に不備があり、意図しない処理が行われる可能性があります。 ...

5月 1, 2014 · nojimage

CakePHP 2.x メール送信内容のテストを行う

テストでメールを送信せずに、CakeEmailでのレンダリング内容を取りたい場合は、 // モックを作成 $CakeEmail = $this->getMock('CakeEmail', array('transportClass')); $CakeEmail->expects($this->any())->method('transportClass') ->will($this->returnValue(new DebugTransport())); // CakeEmailのMockをセット $TestTarget->CakeEmail = $CakeEmail; // ... $TestTargetを使った何らかのメール送信を含む処理 // text形式のメッセージを取得 $bodyText = $CakeEmail->message(CakeEmail::MESSAGE_TEXT); // html形式のメッセージを取得 $bodyHtml = $CakeEmail->message(CakeEmail::MESSAGE_HTML); // ... 適宜、値チェック てな感じで、CakeEmail::transportClass()をスタブ化してDebugTransportを返すようにする。で、CakeEmail::message()でbodyを取得する。 ...

4月 19, 2014 · nojimage

CakePHPで環境に応じた設定ファイルを読み込むためのプラグイン

nojimage/cakephp-environment 環境に応じた設定を行うためのプラグインを公開しています。 環境はファイルベースで判別するので、開発環境と本番環境の切り替えをスムーズに行うことができます。 ...

2月 12, 2014 · nojimage

CakePHP 2.xをComposerでインストールする

CakePHP 3.xではComposerが正式にサポートされますが、2.xでもComposerを使ってCaekPHPのコアを管理することができます。 ...

2月 8, 2014 · nojimage

CakePHP Hash::combine() でキーと値の組み合わせがずれる

CakePHP 2.2以降で利用できるHashクラスのcombineメソッドには以下の罠があります。 Code: < ?php $data = [ [ 'id' => 1, 'title' => 'first title', 'body' => 'first content' ], [ 'id' => 3, 'title' => 'second title', 'body' => 'second content', 'more' => 'second more content' ], [ 'id' => 5, 'title' => 'third title', 'body' => 'third content', 'more' => 'third more content' ], ]; $results = Hash::combine($data, '{n}.id', '{n}.more'); この場合、$resultsは以下の値になることを期待するでしょう。 ...

12月 18, 2013 · nojimage

CakePHPのCookieComponent::writeのencryptがデフォルトでは暗号になってない件

正しいタイトル→ CakePHPのCookieComponent::writeのencryptがデフォルトでは暗号になってない件 ですね / “PHP はいつもわたしに新鮮な驚きを与えてくれる - 猫型の蓄音機は 1 分間に 45…” http://t.co/UkWZCHbtGN — Hisateru Tanaka (@tanakahisateru) 2013, 12月 11 ...

12月 12, 2013 · nojimage

CakeEmailのメールアドレスチェックを回避する

この記事はCakePHP2以降、2.4.0までを対象とした記事です。 CakePHP2からCakeEmailクラスにおいて、メールアドレスのセット時にValidation::email()を用いた検証が行われるようになりました。 ...

7月 12, 2013 · nojimage

CakePHP 2.2のHash::extract()はCentOS5/RHEL5系では使えない

先日CakePHPのバグレポートをしたのでご報告。 #3821 Hash::extract() not working on CentOS 5 - CakePHP - cakephp ※この話はCakePHP2.2 - 2.3.4までが該当します。次バージョン(2.3.5)以降は修正が適用されるため大丈夫です。 ...

5月 10, 2013 · nojimage

CakePHP 2.xでJSONPに対応する

CakePHP 2.xにおいて、JSONPに対応する方法を紹介します。 下記に、jsonpに対応したレスポンスを返すためのコードを示します。 既にjsonでレスポンスを返せる状態となっていることが前提です。 ...

1月 23, 2013 · nojimage