CakePHPの技術情報です。
バージョン1.x 2.x系統の情報がメインです。
[CekePHP5]Tableクラスのメソッド存在チェック
こちらの記事でコントローラーのメソッドの存在チェック方法について書きましたが、Tableクラスでメソッドが存在するか調べる方法についてはまた事情が違うようでした。Tableクラスに実装したメソッドに関してはmethod_exists()で可...
[CakePHP5]Modelイベントがなくなってる?
レコードの保存時などのイベント取得でCakePHP4以前ではafterSave()とかbeforeFind()とか、そいういうメソッドをTableクラスに定義するとそこでイベントを受け取ることができました。ですが、CakePHP5でやってみ...
[CakePHP]メール送信で”Could not send email: unknown”
CekePHP5でメール送信したら"Could not send email: unknown"という謎のメッセージが出る。原因EmailTransportのclassNameの設定を確認する。app.php(もしくはapp_local.p...
CakePHPがひどすぎる件
久々にCakePHP触ったんだけど、5になってリファレンスのインチキ度が増していますので、全く信用できません。CakePHP4とかのときに削除された機能がそのまましれっと書いてある。とにかく、名前が変わっただけとか無意味な変更がおおくて非常...
[CakePHP5]CSRF無効化
CakePHP5でCSRFを無効化する方法がハマったのでメモ。結論先に結論だけ述べると、FormProtectionComponentを使えダウトな情報その1SecurityComponent はCakePHP4.2ぐらいのころになくなった...
オブジェクト内のプロパティー存在チェックに引っかからない場合
CakePHP5/PHP8.1でコンポーネントがロードされているかどうか調べるためにif(isset($this->Auth)){}というようなコードを書いたが、なぜかfalseになる。その他のmethod_exists()などの類似の関数...
[CakePHP5]Security.saltが取得できない。
CakePHP5でSecurity.saltを利用したかったのですが、なぜか取得できません。設定してあるのになぜだろう?と、30分ぐらい悩んだのですが原因判明config/bootstrap.php で消してました。Security::se...
CakePHP5でコードをきれいに保つ
コードのスタイルを統一しておくことは、品質の良いコードを保つのに必須要件です。ですが、コーディング規約をいちいち気にしながらコードを書くのは非常にストレスになります。ということで、できるところは機械に任せちゃいましょう。CakePHP5でコ...
[PHP]ゴミがレンダリングされる
CakeなりLaravelなりで、下手にコンソール出力するデバッグプリントを使って消し忘れるとめんどくさいことになります。フレームワークだと、いろんなファイルをを経由して呼ばれるので、消し忘れるとどこでやってるかわからなくなります。フレーム...
[CakePHP]IN句を使う場合はwhere()を使うな!whereInList()を使え
通常、IN句を使って指定のIDのレコード一覧を取ってくるには$this->Users->find('all')->whre();とすればよいのですが、$userListが空の場合エラーになってしまいます。従来は$userListの存在チェッ...
[CakePHP4]ModelをcontainしたらCannot convert value of type array to string になる場合
CakePHP4であるモデルをcontain()で追加したら、下記のエラーになりましたCannot convert value of type array to string原因テーブルに複合PK使っていました。その場合、接続元のテーブルを...
==と===の罠
PHPは変数の型のチェックがいい加減なんで、仕様をよく理解していないと変なところでハマったりします。CakePHPのコントローラー処理で、仮に<?php//コントローラーでpublic function view($user_id = nu...
Windowsホスト&VirtualBoxの共有フォルダー内でcomposerやnpmが動かない
いろいろ試して、WindowsホストでVirtualBoxの共有フォルダー機能は使ってはいけないという結論になりました。なぜダメなのかと解決方法(代替案)を記事にしました。composerやnpmが動かないWindows環境でVirtual...
[2021年]プログラミング初学者にお勧めな言語・フレームワーク
現在はフレームワークなしでWebアプリケーションを組むことは必須になっています。どのフレームワークを使うべきかの参考の一つとして記事を書いてみました。PHPのフレームワーク多すぎ問題RubyはRails一択なのですが、PHPはあまりにも多く...
[cakephp2]Form->submitのタイトルでHTMLを使いたかったができない件
一昔前は、HTMLのボタンなどのパーツを修飾したい場合は画像を使うことが多かったですが、最近の流行りはすべてCSSであらわすのが主流かと思います。ということで、ボタンをCSSで修飾してみたのですが…CakePHP2.10 でのお話。
CakePHP2 Containableビヘイビアでモデルの抑制がリセットされてしまう問題
CakePHP2でどうもパフォーマンスが出ないと思っていろいろ調べていました。findしたデータをダンプしてみたら問題発見、ある一部のモデルでcontainが効かなくなっていて以下のモデルすべてが出力されているのを発見しました。
CakePHP2のコントローラーをUnitテストでしてみたが…
今まで、コントローラーのテストでPHPUnitはあまり使ってこなかったのですが、ちょっと試してみようかといろいろやってみたが…正直使い勝手悪すぎる。
CakePHP2のFixtureを簡単に書く
CakePHPのUnitTestは便利なツールではありますが、いろいろ書かなくてはいけないのでかなり面倒。ということで、テスト用に使っているデータベースを読みこむようにすればいいですが、条件を変えようとするとちょっと面倒です。ということでF...
BlowfishPasswordHasherを使って自前でパスワードチェックをする。
CakePHPで認証処理をする場合は、Authコンポーネントに任せていると思いますが、自前で認証したい場合。こんなふうにやってはダメ!$pw = new BlowfishPasswordHasher();$user = $this->Use...
同じテーブルで条件を変えて同時に取得するには
CakePHP2でHasManyでリレーションしているテーブルの最新のデータのみ取得と全件取得を同時にしたい場合どうしたらいいか…ちょっと悩みました。