4

次のようなifステートメントを常に書いていることに気づきます。

if(isset($this->request->data['Parent']['child'])){
     $new_var['child'] = $this->request->data['Parent']['child'];
}

私の質問は、ステートメントの前に新しい短い変数を作成せずに、if ステートメントの本文ifを書き換える必要を回避するのに役立つ魔法の php プロセスはありますか? $this->request->data['Parent']['child']また、後任の開発者のためにコードをクリーンに保ちたいと考えています。

また、三元ソリューションも探していません。jquery のthis. (私が知っていること)phpは匿名関数を許可していないか、それは一般的な慣行ではありません。また、クラス全体に匿名関数がたくさん必要だと言っているわけでもありません。

更新PHP 7 で追加されまし た PHP での二重疑問符 (??) 演算子の意味

4

5 に答える 5

2

これは非常にクールですが、残念ながら何もできません。
たぶん、いくつかのIDEのプラグインがそのようなことをするのに役立つかもしれません.

このケースで私が提案できることは、私が個人的に行っていることです。マウスの移動カーソルに触れずに、近くの矢印で$this+CTRLSHIFT右矢印を押し続けると、一度により多くのものを選択できます。(次に、ctrl+c と ctrl+v を使用してコピー ペーストします)

もちろん、これは PHP だけでなく、すべての言語に当てはまります。

于 2012-12-17T10:42:25.333 に答える
0

コードを短くする方法はいくつかありますが、そのような手法はお勧めしません。その理由は、これらの手法のほとんどは、次の人が理解するのにコードがかなり不明瞭になるためです。

コード補完機能を備えた優れた IDE を使用することをお勧めします。これは、長い名前を入力するのに役立ち、次の人がコードを確認できるようにコードを明確に保ちます。

于 2012-12-17T12:06:25.993 に答える
0

本当に何を探しているのか完全にはわかりませんが、存在しないキーにアクセスしようとしたときに通知を生成しないデータを格納するカスタム オブジェクトを使用できます。

class Data {
  function __get($key) {
    return null;
  }
}

__getキーが存在しない場合にのみ呼び出されるため、これは機能します。

于 2012-12-17T12:07:20.207 に答える
0

同じ条件ブロックで変数を作成し、後で使用できます

if($child = $this->request->data['Parent']['child']){
     $new_var['child'] = $child;
}

ここでの唯一の違いは、$this->request->data['Parent']['child']が設定されていても FALSE 値 (または空の文字列、NULL または 0) を持っている場合、テストに合格しないことです。

于 2012-12-17T11:13:48.737 に答える
0
var $a = "" ; 
 function __construct(){ 
   if(isset($this->request->data['Parent']['child'])){
         $this->a = "1";
    }
   }

今使う

if(!empty($this->a)){
// ur code
}
于 2012-12-17T10:44:17.693 に答える