2016-06-15 5 views
4

У меня есть класс, который содержит метод, который выполняет различные проверки базы данных. Затем он возвращает значение, если оно существует.Проверьте, является ли метод ложным, а затем выводятся результаты.

Вот очень простой пример настройки:

PHP Class

class myClass{ 

    var $aVar1; 
    var $aVar2; 

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

} 

HTML/PHP File

// setup $myClass object var 

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

Это вхождение происходит несколько раз в течение моего файла с различными 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) {lots html} else query failed –

ответ

3

Возраст старой проблемы. Один общий метод для хранения возвращаемого Вэл во временной переменной

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

Вы также можете использовать более простую версию

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

И вы также можете использовать самый простой один!

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

Проще, чем самый простой!

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

Является ли это 'if ($ result = $ myClass-> myMethod())' объявлением значения в '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'if ' ? Если это так, то это идеальное решение. –

+0

Это правильно. Он вернет true, если значение, назначенное для $ result, не было NULL/FALSE –

+0

Простейший из них не работал бы в моей ситуации, так как существует много html, которое условно загружается через инструкцию if. В настоящее время я использую 'simpleest' для однострочных операторов' echo', где условие не требуется, кроме самого 'echo'. –

2

Вы можете сделать это, чтобы уменьшить подробность:

<?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. 
} 

Если ваше возвращение truish то содержимое КРП будет выполняться.

Смежные вопросы