-1

コードエラーと通知を無料で取得しようとしています。したがって、エコーしたいすべての変数をチェックする必要があります。私が興味を持っている特定のケースは、「編集」としても機能する「新しい」ページです。何かを選択すると、編集するコンテンツがフィールドに入力された編集ページが表示されます。何も選択されていない場合は同じページですが、フィールドは空です。これは私が何を意味するかのアイデアを与えます:

  <li class="bordertop">
    <label>Recommended knowledge</label>
    <input class="first_input" name="recommended[]" value="<?php if (count ($Subject->retrieveLink('recommended')) > 0) echo current($Subject->retrieveLink('recommended')); ?>" placeholder="Title"/>
    <input class="second_input" name="recommended_url[]" value="<?php if (key ($Subject->retrieveLink('recommended')) != null) echo key($Subject->retrieveLink('recommended')); ?>" placeholder="http://www.example.com"/>
  </li>

私は自分のページのコードがあまり好きではありません。OOPアプローチを維持するだけでなく、ロジックをプレゼンテーションからできるだけ分離しようとしています。私はこれに似た何かをすることを考えていました:

// Check + echo
function checko($arg = null)
  {
  if (!is_array($arg))
    if (!empty($arg))
      echo $arg;
  }

しかし、それは将来的にも問題を引き起こすようです (内部からエコーしても文字列をさらに変更することはできず、「適切な」解決策とはまったく思えません)。チェックしてエコーしたい変数がたくさんありますが、それらは時々埋められ、時には空になります。これに対する最善のアプローチは何ですか?を実行することで、どこでもコードを繰り返すことができることはわかっていますがif (empty($variable)) echo $variable

  1. これは、オブジェクトから値を返す場合には機能しません (PHP 5.4 の時点では、5.5 でも機能すると思います)。私はそれを非常に頻繁に使用するので、これは私の主な関心事です。

  2. コードの繰り返しが多すぎます。いいえ

4

2 に答える 2

1

コードエラーと通知を無料で取得しようとしています。したがって、エコーしたいすべての変数をチェックする必要があります。

いいえ、すべきではありません。
ほら、これらの通知はあなたを忙しくするためだけのものではありません. これらは、コードを複雑にするためではなく、支援のためのものです。
どの変数を操作するかを確認する必要があるだけです。そして、バルクを追加しても何の役にも立ちif(empty())ません。

私は自分のページのコードがあまり好きではありません。

これは実際、テンプレートのコードが多すぎます。一部はコントローラーに移動する必要があり
ます テンプレートを呼び出す前にデータを準備し、プレーンにします

<input class="first_input" name="recommended[]" value="<?=$recommended?>" placeholder="Title"/>
<input class="second_input" name="recommended_url[]" value="<?=$recommended_url?>" placeholder="http://www.example.com"/>
于 2013-01-20T20:39:05.470 に答える
0

関数内にエコーせず、値を返すだけです

// Check + echo
function checko($arg = null) {
  if (!is_array($arg))
    if (!empty($arg))
      return $arg;
}

また、コードを短縮したい場合は、三項演算子を使用できます:http: //phpmaster.com/using-the-ternary-operator/

于 2013-01-20T20:31:38.633 に答える