CakePHP

CakePHP CakePHP

CakePHPの技術情報です。
バージョン1.x 2.x系統の情報がメインです。

CakePHP

[CekePHP5]Tableクラスのメソッド存在チェック

こちらの記事でコントローラーのメソッドの存在チェック方法について書きましたが、Tableクラスでメソッドが存在するか調べる方法についてはまた事情が違うようでした。 Tableクラスに実装したメソッドに関してはmethod_exists()で...
CakePHP

[CakePHP5]Modelイベントがなくなってる?

レコードの保存時などのイベント取得でCakePHP4以前ではafterSave()とかbeforeFind()とか、そいういうメソッドをTableクラスに定義するとそこでイベントを受け取ることができました。 ですが、CakePHP5でやって...
CakePHP

[CakePHP]メール送信で”Could not send email: unknown”

CekePHP5でメール送信したら "Could not send email: unknown" という謎のメッセージが出る。 原因 EmailTransportのclassNameの設定を確認する。 app.php(もしくはapp_lo...
CakePHP

CakePHPがひどすぎる件

久々にCakePHP触ったんだけど、5になってリファレンスのインチキ度が増していますので、全く信用できません。 CakePHP4とかのときに削除された機能がそのまましれっと書いてある。 とにかく、名前が変わっただけとか無意味な変更がおおくて...
CakePHP

[CakePHP5]CSRF無効化

CakePHP5でCSRFを無効化する方法がハマったのでメモ。 結論 先に結論だけ述べると、FormProtectionComponentを使え ダウトな情報その1 SecurityComponent はCakePHP4.2ぐらいのころにな...
CakePHP

オブジェクト内のプロパティー存在チェックに引っかからない場合

CakePHP5/PHP8.1でコンポーネントがロードされているかどうか調べるために if(isset($this->Auth)){ } というようなコードを書いたが、なぜかfalseになる。 その他のmethod_exists()などの類...
CakePHP

CakePHP5でコードをきれいに保つ

コードのスタイルを統一しておくことは、品質の良いコードを保つのに必須要件です。 ですが、コーディング規約をいちいち気にしながらコードを書くのは非常にストレスになります。 ということで、できるところは機械に任せちゃいましょう。 CakePHP...
CakePHP

[PHP]ゴミがレンダリングされる

CakeなりLaravelなりで、下手にコンソール出力するデバッグプリントを使って消し忘れるとめんどくさいことになります。 フレームワークだと、いろんなファイルをを経由して呼ばれるので、消し忘れるとどこでやってるかわからなくなります。フレー...
CakePHP

[CakePHP]IN句を使う場合はwhere()を使うな!whereInList()を使え

通常、IN句を使って指定のIDのレコード一覧を取ってくるには $this->Users->find('all')->whre(); とすればよいのですが、$userListが空の場合エラーになってしまいます。 従来は$userListの存在...
CakePHP

[CakePHP4]ModelをcontainしたらCannot convert value of type array to string になる場合

CakePHP4であるモデルをcontain()で追加したら、下記のエラーになりました Cannot convert value of type array to string 原因 テーブルに複合PK使っていました。 その場合、接続元のテ...
CakePHP

==と===の罠

PHPは変数の型のチェックがいい加減なんで、仕様をよく理解していないと変なところでハマったりします。 CakePHPのコントローラー処理で、仮に <?php //コントローラーで public function view($user_id ...
CakePHP

Windowsホスト&VirtualBoxの共有フォルダー内でcomposerやnpmが動かない

いろいろ試して、WindowsホストでVirtualBoxの共有フォルダー機能は使ってはいけないという結論になりました。 なぜダメなのかと解決方法(代替案)を記事にしました。 composerやnpmが動かない Windows環境でVirt...
CakePHP

[2021年]プログラミング初学者にお勧めな言語・フレームワーク

現在はフレームワークなしでWebアプリケーションを組むことは必須になっています。 どのフレームワークを使うべきかの参考の一つとして記事を書いてみました。 PHPのフレームワーク多すぎ問題 RubyはRails一択なのですが、PHPはあまりに...
CakePHP

[cakephp2]Form->submitのタイトルでHTMLを使いたかったができない件

一昔前は、HTMLのボタンなどのパーツを修飾したい場合は画像を使うことが多かったですが、最近の流行りはすべてCSSであらわすのが主流かと思います。 ということで、ボタンをCSSで修飾してみたのですが… CakePHP2.10 でのお話。
CakePHP

CakePHP2 Containableビヘイビアでモデルの抑制がリセットされてしまう問題

CakePHP2でどうもパフォーマンスが出ないと思っていろいろ調べていました。 findしたデータをダンプしてみたら問題発見、ある一部のモデルでcontainが効かなくなっていて以下のモデルすべてが出力されているのを発見しました。
CakePHP

CakePHP2のコントローラーをUnitテストでしてみたが…

今まで、コントローラーのテストでPHPUnitはあまり使ってこなかったのですが、ちょっと試してみようかといろいろやってみたが… 正直使い勝手悪すぎる。
CakePHP

CakePHP2のFixtureを簡単に書く

CakePHPのUnitTestは便利なツールではありますが、いろいろ書かなくてはいけないのでかなり面倒。 ということで、テスト用に使っているデータベースを読みこむようにすればいいですが、条件を変えようとするとちょっと面倒です。 ということ...
CakePHP

BlowfishPasswordHasherを使って自前でパスワードチェックをする。

CakePHPで認証処理をする場合は、Authコンポーネントに任せていると思いますが、自前で認証したい場合。 こんなふうにやってはダメ! $pw = new BlowfishPasswordHasher(); $user = $this->...
CakePHP

同じテーブルで条件を変えて同時に取得するには

CakePHP2でHasManyでリレーションしているテーブルの最新のデータのみ取得と全件取得を同時にしたい場合どうしたらいいか… ちょっと悩みました。
CakePHP

CakePHP2 ModelのbeforeFind()の謎な仕様

Cakeの・・・というよりPHPのクラスのお決まりな書き方で、オーバーライドする場合 public function beforeFilter() { parent::beforeFilter(); } ていう感じで親のクラスのメソッドを呼...