使用 in Laravel 和 Validate double -> 运算符
With in Laravel and Validate double -> operator
我是 OOP 和 Laravel 的新手,但我注意到带有 in laravel 的运算符用于很多事情:例如,我发现这部分代码在文档:
return Redirect::to('register')->withErrors($validator);
有错误?我知道 with 用于将多个元素传递给视图:关于此运算符,我还需要了解更多信息吗?
另一个问题:php 中的验证 class 具有这种类型的运算符:
$validator->required('You must supply an email address.')->email('You must supply a valid email address')->validate('email', 'Email');
为什么我可以对 class 验证器的一个实例使用多个“->”?我是这样知道的:
$object = new object();
$object->something(); //metod or attribute
但我知道不可能使用运算符“-”来表示多个 method/attribute 用于 class(即使它是一个库)。
谢谢大家,我很抱歉,也许,愚蠢的问题!谢谢!
你好像明白with()
的目的就好了。
关于你的第二个问题,你可以 "chain" 对象方法,如果方法每个 return 对象是这样的:
<?php
class MyClass {
public function myMethod()
{
// do stuff
return $this;
}
好吧 Redirect::to()
return 是 Illuminate\Http\RedirectResponse
的一个实例。这个 class 有一个方法 withErrors
在示例中被调用。
然而,这个 with*
方法与将数据传递到视图的方法有点不同。 withErrors
将数据闪烁 到会话,以便下一个请求可用(重定向发生后)
关于你的第二个问题,这个:$validator->required()->email()
被称为 方法链接 。它被大量使用(不仅在 Laravel 中)以实现简洁的语法。
发生的事情是方法 return $this
因此您可以立即在同一对象上调用下一个方法。
再看一个例子:
$result = User::where('active', true)->where('name', 'like', 'a%')->get();
如果我们现在看一下 Illuminate\Database\Eloquent\Builder
中的 where()
方法,您可以看到在 where 逻辑发生之后它 returns $this
所以我们可以继续调用方法。
public function where($column, $operator = null, $value = null, $boolean = 'and')
{
// code omitted for brevity
return $this;
}
许多 Laravel classes 实现了这个所谓的 Fluent Interface,它允许对几乎每个函数调用进行方法链接。只有具有明显 return 值的方法不能链接。就像使用 get()
检索结果一样。当然它必须 return 结果,它也不能 return $this
。
我是 OOP 和 Laravel 的新手,但我注意到带有 in laravel 的运算符用于很多事情:例如,我发现这部分代码在文档:
return Redirect::to('register')->withErrors($validator);
有错误?我知道 with 用于将多个元素传递给视图:关于此运算符,我还需要了解更多信息吗?
另一个问题:php 中的验证 class 具有这种类型的运算符:
$validator->required('You must supply an email address.')->email('You must supply a valid email address')->validate('email', 'Email');
为什么我可以对 class 验证器的一个实例使用多个“->”?我是这样知道的:
$object = new object();
$object->something(); //metod or attribute
但我知道不可能使用运算符“-”来表示多个 method/attribute 用于 class(即使它是一个库)。
谢谢大家,我很抱歉,也许,愚蠢的问题!谢谢!
你好像明白with()
的目的就好了。
关于你的第二个问题,你可以 "chain" 对象方法,如果方法每个 return 对象是这样的:
<?php
class MyClass {
public function myMethod()
{
// do stuff
return $this;
}
好吧 Redirect::to()
return 是 Illuminate\Http\RedirectResponse
的一个实例。这个 class 有一个方法 withErrors
在示例中被调用。
然而,这个 with*
方法与将数据传递到视图的方法有点不同。 withErrors
将数据闪烁 到会话,以便下一个请求可用(重定向发生后)
关于你的第二个问题,这个:$validator->required()->email()
被称为 方法链接 。它被大量使用(不仅在 Laravel 中)以实现简洁的语法。
发生的事情是方法 return $this
因此您可以立即在同一对象上调用下一个方法。
再看一个例子:
$result = User::where('active', true)->where('name', 'like', 'a%')->get();
如果我们现在看一下 Illuminate\Database\Eloquent\Builder
中的 where()
方法,您可以看到在 where 逻辑发生之后它 returns $this
所以我们可以继续调用方法。
public function where($column, $operator = null, $value = null, $boolean = 'and')
{
// code omitted for brevity
return $this;
}
许多 Laravel classes 实现了这个所谓的 Fluent Interface,它允许对几乎每个函数调用进行方法链接。只有具有明显 return 值的方法不能链接。就像使用 get()
检索结果一样。当然它必须 return 结果,它也不能 return $this
。