Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?
@tatsuo-iriyama

その判定本当に正しいですか?

More than 1 year has passed since last update.

はじめに

ある判定式を書いたときに「この判定方法正しいのかな?」と思いました。
知ったかぶって実装している訳ではなかったのですが、心なしか腑に落ちなかったので調査しました。
その調査をそのままアウトプットとして記載します。

前提

  • ?hoge=1というクエリパラメータが飛んできた場合

実装コード

sample.ctp
if (isset($this->request->query['hoge']) && $this->request->query['hoge'] === '1') {
    // ゴニョゴニョ
}

やりたいこと

hogeというクエリパラメータなのか、ということと、その値は1なのか、を判定したい。

目的

  • やりたいことを満たせているのか調査をする
  • 調査のノウハウを知識として蓄積する

調査方法

調査

スクリーンショット 2018-11-29 20.22.08.png

図はトリプルイコールで比較した場合の結果
PHP 型の比較表から引っ張ってきました。

スクリーンショット 2018-11-29 19.41.59.png

上記の表から今回実装したコードの結果の部分を引っ張ってきます。
期待値は文字列の1のみTRUEになって欲しいので、このようにしています。

結果を求めます。
IF関数を使用して求めます。参考→GoogleスプレッドシートのIF関数の使い方

IF(B37,IF(B38,"TRUE","FALSE"),"FALSE")

このような条件で、isset=TRUEかつ"1"=TRUEかどうかを判定します。

スクリーンショット 2018-11-29 19.57.52.png

結果はこのようになりました。
期待値通りになっている事がわかりました。

issetの役割としては、CakePHPのクックブックのクエリー文字列パラメーターにも書かれているように、

キーが存在しない場合、 null が返ります。

今回でいうhogeというkeyが存在しない場合の考慮をしてくれています。ありがとうisset

結果

今回でいう所の実装は正しかった。

まとめ

今回の調査で大事なのは、正しく実装できていたか、を知る事より、疑問に思った時に調査してすぐ解決できるノウハウを自分の知識として蓄積する事です。
PHPの型の比較表を暗記することではないのです。

調査をする、というアクションを取る上で、目的がしっかりしていれば、そのアクションは何倍にも効果的なアクションとする事ができます。

目的にも書きましたが、今回の調査でしっかり蓄積できたと思います。
しっかり今後に生かして圧倒的成長の源としたいと思います。

1
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
tatsuo-iriyama
Software engineer.
yourmystar
サービス産業のIT化プラットフォーム「ユアマイスター」と大切なものをもっと大切にするメディア「ユアマイスター スタイル」を運営するスタートアップです。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
1
Help us understand the problem. What is going on with this article?