Symfony のコマンドラインアプリケーションを CakePHP コマンドラインアプリケーションとして動かす

この記事は、 CakePHP Advent Calendar 2019 17日目の記事です。 Symfony のコマンドラインアプリケーションを CakePHP コマンドラインアプリケーションとして動かす方法を解説します。 (余談ここから)昨日(12/16 JST)ついに、CakePHPの次期バージョンである4.0がstableリリースされました! > CakePHP 4.0.0 Released — Bakery 3.xから色々と整理され、さらに良いフレームワークになったと思います。(余談ここまで) ...

12月 17, 2019 · nojimage

CakePHP 3.x の PHP 5.6向けUUID実装では衝突がおきるかもねというお話

この記事は、 CakePHP Advent Calendar 2019 2日目の記事です。 1日目の記事は、hgsgtkさんの「来たるCakePHP 4.0 を知ろう - Qiita」でした。 TL;DR: PHP 5.6 を使っている人は paragonie/random_compat を入れましょう。 先月に、UUIDの衝突に関する話題が盛り上がりました。 ...

12月 2, 2019 · nojimage

CakePHP 3 でURL情報からコントローラークラスを取得する

この記事は、 CakePHP Advent Calendar 2018 17日目の記事です。 前日の記事は chinpei215 さんの CakePHP2 のデバッグツールバーをプリチーにする - Qiita でした。 TL;DR: ControllerResolver.php - gist CakePHP 3.4以降の話。 権限コントロールまわりのアレコレのために、URL情報からコントローラークラスを取得したかったのでやってみました。 ...

12月 17, 2018 · nojimage

CakePHP3 beforeSaveでassociatedを書き換える時の注意点

TL;DR: beforeSaveでassociatedを書き換えるときは、ドット記法は使えないので配列で指定する。 Authors hasMany Posts hasMany Comments のリレーションがあるとする。 Authorsから、Posts、Commentsをまとめてsaveしたい場合、通常のsaveであればassociatedに指定してやればよい。 ...

10月 25, 2018 · nojimage

Chronosを1.2へバージョンアップしよう

composer require cakephp/chronos:^1.2 setTestNow()メソッドがクラスを横断して時刻セットできるようなった! CakePHP 3.2以降、時刻操作クラスとして cakephp/chronos が採用されています。 CakePHP内ではChronosを継承した \Cake\I18n\FrozenTime, \Cake\I18n\Time, \Cake\I18n\FrozenDate, \Cake\I18n\Date を使用でき、データベースの時刻系のフィールドはこれらのクラスへマッピングされます。 ...

8月 10, 2018 · nojimage

CakePHP3でhasManyの取得件数を制限する

Posts hasMany Comments の関係で、最新のCommentsを3件だけ紐付けて取得したい場合を考える。 1. containに書く方法 再利用を考えなければ以下のように、containでクエリを書けばよい。 ...

6月 13, 2018 · nojimage

2017年に公開した自作CakePHPプラグインの紹介

この記事は、 CakePHP Advent Calendar 2017 17日目の記事です。 前日の記事は sizuhiko さんの テストデータを簡単に作る方法 でした。 今日は、私 nojimage が2017年に公開したCakePHP 3向けのプラグインをだだだっと紹介したいと思います。 ...

12月 17, 2017 · nojimage

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

CakePHP3 Modelless Form @ Fukuoka.php vol.17

Fukuoka.php vol.17 にて、CakePHP 3からの新機能「Modelless Form」の紹介をしてきました。 Modelless Formは、これまでのCakePHPに足りていなかったサービスレイヤ、ビジネスロジックを担当するものとして最適の機構だと考えています。 (Component?知らない子ですね… ...

6月 23, 2016 · nojimage

PHPカンファレンス福岡2016 CakePHP3補足

/company/{:company_id}/employee/{:employee_id} それ、Router::resources()のネストでできるよ。 http://book.cakephp.org/3.0/en/development/routing.html#creating-nested-resource-routes Entityのsetter/getter問題 それ、Custom Typesの定義で解決できるよ。 http://book.cakephp.org/3.0/en/orm/database-basics.html#adding-custom-types Modelless Form 今回触れられていないけど、個人的にはこれがCakePHP3で一番の目玉機能。一般的なフォームからの入力処理だけでなく、API経由での入力処理や、_execute中で複数のTable扱ったり色々可能性が拡が(文字数 ...

5月 21, 2016 · nojimage