エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


CakePHP4、5のnewEmptyEntityで作成したオブジェクトは空なのか、確認してみた

      2025/01/31

CakePHP4、5のnewEmptyEntityで作成したオブジェクトは空なのか?

 
CakePHP4系、CakePHP5系で新たにレコードを登録する際、「newEmptyEntity()」を使って空のオブジェクトを作成するかと思います。
 
この作成されたオブジェクトは「空」なのだろうか?と思い確認をしてみることにしました。
 
 
ちなみに、CakePHP4系、CakePHP5系の両方で確認しましたが、当たり前のように同じ結果でした。(CakePHPの処理ではなく、PHPの処理ですからね。)
 
 

$this->Users->newEmptyEntity();」で生成した「$user」は「空」なのか?

 

 
上記は、Bakeして作成した Usersコントローラー内の addアクションです。
上記の 3行目の「$this->Users->newEmptyEntity();」で生成した「$user」は「空」なのか?
 
という確認を行いました。
 
 

「newEmptyEntity」で生成したオブジェクトを「empty」「is_null」などでチェックしてみた

 
具体的なチェックの処理と結果は以下の通りでした。
 

 
上記の中にコメントで結果を書いていますが、いずれも「空」「null」ではない、という結果になっています。
 
$this->Users->newEmptyEntity();」で「空のエンティティ」を作る処理ではあるものの、作成されるものは「空のオブジェクト」であるので、「empty()」などでチェックするとそれは「空」ではないと判断されるということですね。
 
オブジェクトが生成されていますので、空ではないですよね。そりゃそうですよね、と。
 
 

「newEmptyEntity()」が空なのか、明確にしたかった理由

 
「newEmptyEntity()」が空なのか、これまであまり気にしたことがなかったのですが、それを明確にしたかった理由は、以下のように「newEmptyEntity()」で作成した値を引数として別の関数に渡す処理を構築しようとしていたためです。
 
より具体的には、addと editで行う処理を共通化しようと考えたのですが、その際、「newEmptyEntity()」で作成した値を「empty()」でチェックすることができるのだろうか?と疑問に思ったためでした。
 

 
「newEmptyEntity()」で作成した値は、「空」ではないことが明確になりましたので、引数が渡ってきていないときは、「empty()」が「true」になりますので、判別してエラー処理ができることが明確になりました。
 
これで、より不具合が少ないプログラムを組むことができますね。
 
 

想定外の値も想定した処理を構築する必要がある

 
かつて、私にプログラムを教えてくれた先輩がこんなことを言っていました。
「想定外の値が来た場合でもハングアップ(異常終了)しない処理を心がけろ」と。
 
想定外の値が来たときでも異常終了してしまうのではなく、想定外の値が来たとしてログを出力し、適切なエラー処理を実施したうえで、安全に停止するように処理を構築しろ、という意味です。
 
そのため、私が作成するプログラムは、若干エラーチェックがくどすぎると思うこともありますが、最初に教えてくれた方の教えなので、習慣になってしまっているとも言えますね。
 
どれだけの想定外を想定できるかが、いいシステムを構築するためのノウハウだ、ということも言っていましたね。
 
まぁ、どれくらいの信頼性が必要なシステムなのか、にもよりますけどね。
 
 

CakePHP5の関連記事

CakePHP4、5のユーザ認証でID、PASS以外の削除フラグなども条件加える方法
CakePHP4、CakePHP5系の認証処理でログインの有無の確認、ユーザ情報の取得の方法
CakePHP4、5で$_SERVERと同じようにURIを取得する「getUri()」の紹介
getParam('action')で取得するアクション名は別関数に移動しても不変
CakePHP4系、CakePHP5系のexists()でカラムを指定して値の有無をチェックする方法解説
CakePHP4、5のnewEmptyEntityで作成したオブジェクトは空なのか、確認してみた
CakePHP4、5でSELECT telephone as tel FROM usersの様にasでカラムに別名を付ける方法
CakePHP4、5の認証処理で認証が通らない際の確認方法と確認箇所の紹介
CakePHP5系で認証機能のAuthenticationプラグインをインストール・エラー発生注意
CakePHP5でヘルパーから他のヘルパーを読み込む方法・CakePHP4からの変更点
 
その他の「CakePHP5」に関する記事一覧
 
 

 - CakePHP 3.x 4.x 5.x

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

CakePHP3でシェルを作成しコマンドラインから実行・CakePHP2との違い
CakePHP3でシェルを作成しコマンドラインから実行・CakePHP2との違い

CakePHP3のシェルスクリプトを作成し、コマンドラインから実行する方法を解説。複数単語をつなげる場合の対応方法がCakePHP2より制限が厳しくなったのでCakePHP3の命名規則の確認が必要だ。

CakePHP3で Ajaxを使う方法の解説。3.6以降対応。Successとthenの両方を解説。
CakePHP3で Ajaxを使う方法の解説。3.6以降対応。Successとthenの両方を解説。

CakePHP3でajaxを利用する処理の実装方法を解説。プルダウンを変更するとデータベースの値を取得し検索結果の内容を変更するというような処理を想定。CakePHP3.6以降の CSRF対策対応済。

CakePHP4でロギングスコープやログレベルを使用してログを出し分ける方法を解説
CakePHP4でロギングスコープやログレベルを使用してログを出し分ける方法を解説

CakePHPのログ出力方法の解説。app.phpにログ設定をし、スコープやレベルを指定してログ出力を振り分ける方法、CakePHP4で配列出力にはvar_exportが必要なことなどを解説。

CakePHP4で現在処理しているコントローラー名、アクション名を取得する方法
CakePHP4で現在処理しているコントローラー名、アクション名を取得する方法

CakePHP3で現在処理しているコントローラー名、アクション名を取得する方法を解説。複数の方法があるが、getParam()メソッドを使う方法が汎用性があって便利かも。

CakePHP3でページごとに読み込むJavaScript、CSSを変える処理の解説
CakePHP3でページごとに読み込むJavaScript、CSSを変える処理の解説

CakePHP3でJavaScriptやCSSを編集する基本形から、それらやテンプレート(エレメント)を特定のテンプレートを読み込んだときのみ編集、実行するための方法、ブロック化について解説。

CakePHPで favicon.icoやapple-touch-icon-144-precomposed.pngが could not be foundのエラーが出るときの対処方法
CakePHPで favicon.icoやapple-touch-icon-144-precomposed.pngが could not be foundのエラーが出るときの対処方法

CakePHPで「CakeDC/Users」などルーティングを行うプラグインを利用するときに、favicon.icoやapple-touch-icon-144-precomposed.pngがNotFoundエラーになることがある。その対処方法の解説。

CakePHP 2.3でファイルのアップロード処理を作る

CakePHPでプラグインを使わないファイルアップロード処理を解説します。簡単です。DBにファイルを格納する方法も。

CakePHP 2.3 Search Pluginで検索処理 その6ORDER、sortソートの機能

CakePHPの検索プラグイン Search Pluginの検索処理の中で order、ソートについての解説です。

CakePHP 2.3 bakeの超初心者向けフォロー講座

CakePHP 2.3 bakeの超初心者向けフォロー講座

CakePHP3のHtmlHelperのLink設定のまとめ。mailto、URL、Root/Homeのリンクなども
CakePHP3のHtmlHelperのLink設定のまとめ。mailto、URL、Root/Homeのリンクなども

CakePHP3でHtmlHelperを使ってリンクの設定をする方法のまとめ。基本形からURLを指定、class、id、targetを指定、mailtoのリンク、画像をアンカーに、JavaScriptのダイアログなどの解説。