我是OOP和Laravel的新手,但我注意到laravel中的运算符用于很多事情:例如我在文档中找到了这部分代码:
return Redirect::to('register')->withErrors($validator);
withErrors?我知道用于将多个元素传递给视图:我需要了解更多有关此运算符的内容吗?
另一个问题:php中的validate类有这种类型的运算符:
$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 :(得分:0)
您似乎理解with()
的目的就好了。
至于你的第二个问题,你可以“链接”对象方法,如果每个方法都返回这样的对象:
<?php
class MyClass {
public function myMethod()
{
// do stuff
return $this;
}
答案 1 :(得分:0)
好Redirect::to()
会返回Illuminate\Http\RedirectResponse
的实例。该类有一个方法withErrors
,在示例中调用。
但是,此with*
方法与将数据传递给视图的方法略有不同。 withErrors
将数据闪烁到会话,以便下次请求可用(重定向发生后)
关于您的第二个问题:$validator->required()->email()
称为方法链接。它被大量使用(不仅在Laravel中)来实现一个漂亮而简洁的语法。
这些方法会返回$this
,因此您可以立即在同一个对象上调用下一个方法。
让我们看另一个例子:
$result = User::where('active', true)->where('name', 'like', 'a%')->get();
如果我们现在看一下where()
中的Illuminate\Database\Eloquent\Builder
方法,你可以看到在逻辑发生的地方之后它返回$this
,这样我们就可以继续调用方法了。
public function where($column, $operator = null, $value = null, $boolean = 'and')
{
// code omitted for brevity
return $this;
}
许多Laravel类实现了这个所谓的 Fluent Interface ,它允许几乎每个函数调用的方法链接。只有具有明显返回值的方法才能被链接。比如使用get()
检索结果。当然,它必须返回结果,它也不能返回$this
。