2015-02-06 90 views
0

我是OOP和Laravel的新手,但我注意到laravel中的操作符用於很多事情:例如我在代碼中找到了這部分代碼文檔:With in Laravel and Validate double - > operator

return Redirect::to('register')->withErrors($validator); 

withErrors?我知道with用於將多個元素傳遞給視圖:是否還有更多需要了解此運算符的知識?

另一個問題:在PHP校驗類中有這種類型的操作:

$validator->required('You must supply an email address.')->email('You must supply a valid email address')->validate('email', 'Email'); 

爲什麼我可以使用多個「 - >」爲驗證類的實例?我知道,在這樣:

$object = new object(); 

$object->something(); //metod or attribute 

,但我知道這是不可能的使用操作「 - 」號表示爲一個類中的多個方法/屬性(即使它是一個庫)。

謝謝大家,我很抱歉,也許,這個愚蠢的問題!謝謝!

回答

0

Redirect::to()返回Illuminate\Http\RedirectResponse一個實例。這個類有一個方法withErrors,在這個例子中被調用。

但是這個with*方法與將數據傳遞給視圖的方法有點不同。 withErrors閃爍的數據會話,因此可用於下一個請求(重定向發生後)


關於你提到的第二個問題,這一點:$validator->required()->email()被稱爲方法鏈接。它被很多(不僅在Laravel中)用來實現一個簡潔的語法。

會發生什麼,該方法返回$this所以你可以立即調用同一個對象的下一個方法。

讓我們看看另一個例子:

$result = User::where('active', true)->where('name', 'like', 'a%')->get(); 

如果我們現在在Illuminate\Database\Eloquent\Builder看一看的where()方法,你可以看到,經過的地方發生的邏輯返回$this,所以我們可以繼續調用方法。

public function where($column, $operator = null, $value = null, $boolean = 'and') 
{ 
    // code omitted for brevity 

    return $this; 
} 

許多Laravel類實現這個所謂流利的接口允許方法鏈幾乎每一個函數調用。只有具有明顯返回值的方法不能鏈接。就像用get()檢索結果一樣。當然,它必須返回結果,它也不能返回$this

+0

不客氣。不要忘了接受答案(通過點擊旁邊的複選標記),如果你回答了你的問題:) – lukasgeiter 2015-02-06 20:30:29

+0

這是必需的15點聲譽檢查複選標記 – DarkAngelCraft 2015-02-06 20:34:19

+0

沒有這是投票。你可以接受1聲望的答案。 [這是它的工作原理](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – lukasgeiter 2015-02-06 20:36:12

0

你好像明白了with()的用途就好了。

關於你的第二個問題,你可以在「鏈」對象的方法如果每個方法返回的對象是這樣的:

<?php 
class MyClass { 
    public function myMethod() 
    { 
     // do stuff 
     return $this; 
    } 
+0

我不能使用對象$ object = new MyClass(); $對象 - > myMethod的() - > myattribute;爲什麼驗證有:$ validator-> required('您必須提供一個電子郵件地址。') - > email('您必須提供一個有效的電子郵件地址') - > validate('email','Email'); – DarkAngelCraft 2015-02-06 20:18:00

+0

所以,你認爲有唯一的選擇發送多個變量的視圖?我不這樣,我已經看到,這是用於其他選項 – DarkAngelCraft 2015-02-06 20:21:07