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_lo...
CakePHPがひどすぎる件
久々にCakePHP触ったんだけど、5になってリファレンスのインチキ度が増していますので、全く信用できません。 CakePHP4とかのときに削除された機能がそのまましれっと書いてある。 とにかく、名前が変わっただけとか無意味な変更がおおくて...
[CakePHP5]CSRF無効化
CakePHP5でCSRFを無効化する方法がハマったのでメモ。 結論 先に結論だけ述べると、FormProtectionComponentを使え ダウトな情報その1 SecurityComponent はCakePHP4.2ぐらいのころにな...
オブジェクト内のプロパティー存在チェックに引っかからない場合
CakePHP5/PHP8.1でコンポーネントがロードされているかどうか調べるために if(isset($this->Auth)){ } というようなコードを書いたが、なぜかfalseになる。 その他のmethod_exists()などの類...
[CakePHP5]Security.saltが取得できない。
CakePHP5でSecurity.saltを利用したかったのですが、なぜか取得できません。 設定してあるのになぜだろう?と、30分ぐらい悩んだのですが原因判明 config/bootstrap.php で消してました。 Security:...
CakePHP5でコードをきれいに保つ
コードのスタイルを統一しておくことは、品質の良いコードを保つのに必須要件です。 ですが、コーディング規約をいちいち気にしながらコードを書くのは非常にストレスになります。 ということで、できるところは機械に任せちゃいましょう。 CakePHP...
[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 ...
Windowsホスト&VirtualBoxの共有フォルダー内でcomposerやnpmが動かない
いろいろ試して、WindowsホストでVirtualBoxの共有フォルダー機能は使ってはいけないという結論になりました。 なぜダメなのかと解決方法(代替案)を記事にしました。 composerやnpmが動かない Windows環境でVirt...
[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は便利なツールではありますが、いろいろ書かなくてはいけないのでかなり面倒。 ということで、テスト用に使っているデータベースを読みこむようにすればいいですが、条件を変えようとするとちょっと面倒です。 ということ...
BlowfishPasswordHasherを使って自前でパスワードチェックをする。
CakePHPで認証処理をする場合は、Authコンポーネントに任せていると思いますが、自前で認証したい場合。 こんなふうにやってはダメ! $pw = new BlowfishPasswordHasher(); $user = $this->...
同じテーブルで条件を変えて同時に取得するには
CakePHP2でHasManyでリレーションしているテーブルの最新のデータのみ取得と全件取得を同時にしたい場合どうしたらいいか… ちょっと悩みました。