2016-06-15 2 views
4

私はさまざまなデータベースチェックを実行するメソッドを含むクラスを持っています。存在する場合は、値を返します。ここでメソッドがfalseかどうかを確認して結果を出力します

は非常に基本的な設定例です:

PHPクラス

class myClass{ 

    var $aVar1; 
    var $aVar2; 

    function myMethod() 
    { 
     // database query 
     // if results from query return **results** 
     // else return false 
    } 

} 

HTML/PHPファイル

// setup $myClass object var 

<?php if($myClass->myMethod(): ?> 
    // lots of html 
    <?php echo $myClass->myMethod() ?> 
    // lots of html 
<?php endif; ?> 

これのoccuranceが異なると私のファイル全体を複数回起こりますmethods。私の質問は、私はメソッドを最初に呼び出して、それが偽であるかどうかを確認してから、出力をechoに再度呼び出します。

私は以下を行うことができますが、すべてのメソッドで変数宣言になります。より専門的なアプローチが必要でしょうか?

<?php 
$myMethod = $myClass->myMethod(); 
if($myMethod): ?> 
    // lots of html 
    <?php echo $myMethod ?> 
    // lots of html 
<?php endif; ?> 

これを行うにはよりクリーンな方法がありますか?

+0

$ result = $ myclass-> my method(); if($ result = {たくさんのhtml} elseクエリが失敗した場合) –

答えて

3

年齢問題。 1つの一般的な技術はあなたがまた、簡単なバージョン

if($result=$myClass->myMethod()) 
echo $result; 

を使用することができますし、また、最も単純なものを使用することができ、一時的な変数

$result=$myClass->myMethod(); 
if($result!=FALSE) 
    echo $result; 

に復帰valを格納することです!

echo $myClass->myMethod() ?: ''; 

最も単純なものよりも簡単です!あなたのリターンは、その後の内容場合が実行されますtruishある場合

<?php 

function foo($bool = true) { 
    $result = array(); 
    if($bool) { 
     $result = array('bar'); 
    } 

    return $result; 
} 

if(! array()) { 
    echo 'empty array evaluates to false.'; 
} 

if($result = foo()) { 
    var_export($result); // Will dump array with 'bar'. 
} 

if($result = foo(false)) { 
    var_export($result); // Won't happen. 
} 

:あなたはこれを行うことができ

echo $result=$myClass->myMethod(); 
+0

この 'if($ result = $ myClass-> myMethod())'は 'if'ステートメント内の値を宣言し、' if true'を実行します。 ?もしそうなら、それは完璧な解決策に見えます。 –

+0

これは正しいです。 $ resultに割り当てられた値がNULL/FALSEでない場合はtrueを返します –

+0

最初のif文で条件付きでロードされるhtmlが多いため、最も単純なものは私の状況では機能しません。私は現在、 'echo'それ自身以外の条件が必要ではない単一行の' echo'文に対して '最も単純な'を使用しています。 –

2

は、冗長性を低減します。

関連する問題