2014-11-24 5 views
1

Вопрос от очевидного новичка PHP здесь.Другие способы проверки вывода функции?

У меня есть класс, который имеет две функции внутри. Я пытаюсь проверить вывод первой функции, используя вторую функцию (как в приведенном ниже коде). Проблема с этим - вывод (1) уже отображается в строке if-statement. Вот результат:

1Flag является: 1

Таким образом, вопрос, как я могу сделать это без выхода отображается внутри, если заявление?

class Test{ 

    public $flag; 

    private function func_one(){ 
     $this->flag = 1; 
     echo $this->flag; 
     return $this->flag; 
    } 

    public function display_func(){ 
     if (!empty($this->func_one())){ 
      echo 'Flag is: '; 
      $this->func_one(); 
     } 

     // if ($this->func_one() === 1){ 
     // echo 'Flag is: '; 
     // $this->func_one(); 
     // } 

     //var_dump($this->func_one()); 
    } 
} 

$classTest = new Test(); 
$classTest->display_func(); 
+2

удалить флаг 'echo $ this->;'? – Daan

+1

... и используйте конкатенацию строк для отображения значения: 'echo 'Flag is:'. $ this-> func_one(); ' – thpl

+1

В этом коде есть много неправильного ... Ваша функция сразу ASSIGN, ECHO и RETURN ... –

ответ

0

магазин возврата Валу в переменной и запустить сравнения на этом

if (!empty($this->func_one())){ 
    echo 'Flag is: '; 
    $this->func_one(); 
} 

Должно быть

$val=$this->func_one(); 
if (!empty($val)){ 
     echo "Flag is: $val"; 
} 

Также удалите эхо от func_one() , просто верните значение. Это позволяет вызывать метод только один раз и принимать решения на основе возвращаемого значения.

0

Ваш условный оператор: if (!empty($this->func_one())) называет func_one() и вторую линию func_one() «s является echo $this->flag;. Вот почему вывод отображается в статусе if.

0

Вам необходимо удалить echo из первой функции.

Кроме того, во второй функции конкатенация результата, возвращаемого из первой функции.

Таким образом, следующие изменения:

private function func_one(){ 
    $this->flag = 1; 
    //echo $this->flag; -> remove this 
    return $this->flag; 
} 

public function display_func(){ 

    if (!empty($this->func_one())){ 
     echo 'Flag is: ' .$this->func_one(); // Also, observe the changes on this line. 
    } 
1
class Test{ 
public $flag; 
private function func_one(){ 
    $this->flag = 1; 
    return $this->flag; 
} 
public function display_func(){ 
    if (!empty($this->func_one())){ 
     $result=$this->func_one(); 
     echo 'Flag is: '.$result; 
    } 
    } 
} 
$classTest = new Test(); 
$classTest->display_func(); 
0

Вы можете удалить, если условие образуют вторую функцию. см. ниже код.

Класс испытаний {

public $flag; 

private function func_one() { 
    $this->flag = 1; 
    echo $this->flag; 
    return $this->flag; 
} 

public function display_func() { 

    //if (!empty($this->func_one())){ 
    echo 'Flag is: '; 
    $this->func_one(); 
    //} 
    // if ($this->func_one() === 1){ 
    // echo 'Flag is: '; 
    // $this->func_one(); 
    // } 
    //var_dump($this->func_one()); 
} 

}

$ classTest = новый тест(); $ classTest-> display_func();

Ваш результат = Флаг: 1

=================================== =====

вы также можете написать ваш код, как таким образом

класса Test {

public $flag; 

private function func_one() { 
    $this->flag = 1; 
    return $this->flag; 
} 

public function display_func() { 
    echo 'Flag is: '.$this->func_one(); 
} 

}

$ classTest = новый тест(); $ classTest-> display_func();

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