2014-02-18 28 views
0

我似乎無法找到PHP if/else的確切控制結構。速記,如果PHP中有多行

目前我有這個功能,但任何人都可以告訴我,如果PHP只是在尋找「標籤」?是否有可能在1條語句中觸發多個函數?像現在它只是重定向到一個路線,但可以說,當他在重定向之前更新時,我想要給用戶發送電子郵件。用速記這仍然是可能的嗎?

public function store() 
{ 
    return ($user = $this->user->store(Input->all())) ? 

     Redirect::route('user.index') 
      ->with('flash_message', 'User succesfully created!', ['user' => $user]) : 

     Redirect::route('user.create') 
      ->withInput() 
      ->withErrors($this->user->getErrors()); 
} 
+9

停止讓代碼無法讀取。在這種情況下使用簡寫法有什麼好處?真的沒什麼。 –

+2

@crypticツ完美的用戶名爲該評論;) – CodeReaper

+0

三元操作符應該只用於在我看來變量分配的短邏輯 –

回答

1

這是PHP文件的if/else:

http://www.php.net/manual/en/control-structures.elseif.php

? :結構是簡寫的if/else,但它不是用它來複雜的事情一個很好的做法。它使你的代碼不可讀。 http://www.php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary

否則php不關心空格。

+0

這是if/else ...當你有一個變量賦值的簡寫。昨天我看到它用在這個網站上,像這樣:'!isset($ x)? $ err ='Not X':$ err ='';' –

+0

你可以使用更多的東西,但它很冒險,所以你不應該這樣做。 (...)?{...}:{...}與if(...){...} else {...}幾乎相同。第一個具有返回值,第二個可以使用elseifs更容易堆疊。 –

0

用的if/else,它應該是這樣的:

public function store() 
{ 
    if ($user = $this->user->store(Input->all())) 
    { 
     return Redirect::route('user.index') 
      ->with('flash_message', 'User succesfully created!', ['user' => $user]); 
    } 
    else 
    { 
     return Redirect::route('user.create') 
      ->withInput() 
      ->withErrors($this->user->getErrors()); 
    } 
} 

它會更容易,如果if沒做作業閱讀依然。例如:

public function store() 
{ 
    $user = $this->user->store(Input->all()) 

    if ($user) 
    { 
     return Redirect::route('user.index') 
      ->with('flash_message', 'User succesfully created!', ['user' => $user]); 
    } 
    else 
    { 
     return Redirect::route('user.create') 
      ->withInput() 
      ->withErrors($this->user->getErrors()); 
    } 
}