Php Laravel匿名函数如何知道它';s参数
考虑以下代码:Php Laravel匿名函数如何知道它';s参数,php,laravel,anonymous-function,Php,Laravel,Anonymous Function,考虑以下代码: $fn = FormNilai::whereHas('mataPelajaranLokalGuru',function($mlg) { $mlg->where('guru_id','=',$this->uid); })->get(); 如何将$mlg始终视为FormNilai实例?情况如何?我读了很多关于依赖注入的书,但仍然没有抓住要点 是另一部分。根据您的代码示例,您需要告诉匿名函数使用该变量,如 $uid = $this->uid; $
$fn = FormNilai::whereHas('mataPelajaranLokalGuru',function($mlg) {
$mlg->where('guru_id','=',$this->uid);
})->get();
如何将$mlg
始终视为FormNilai
实例?情况如何?我读了很多关于依赖注入的书,但仍然没有抓住要点 是另一部分。根据您的代码示例,您需要告诉匿名函数使用该变量,如
$uid = $this->uid;
$fn = FormNilai::whereHas('mataPelajaranLokalGuru',function($mlg) use($uid)
{
$mlg->where('guru_id','=',$uid);
})->get();
由于该变量uid
不在匿名函数的作用域内,因此需要使用上面代码中所示的use关键字传入该变量
您可以通过示例了解更多关于
使用的信息。从侧面看,我意识到laravel支持php匿名风格,因此我们可以实现这样的javascript函数用法,但对于我来说,这肯定是第一次很难做到
为了便于使用,它们显示如下示例
$users = User::with(array('posts' => function($query)
{
$query->where('title', 'like', '%first%');
}))->get();
如果用户想让第三个参数填充变量,该怎么办。当我用任何全局变量替换那些“%first%”字来检查它时,它破坏了结构,我碰巧遇到了这种情况
$title = 'heirlom of marineford';
$users = User::with(array('posts' => function($query)
{
$query->where('title', 'like', $title);
}))->get();
在搜索PHP文档后,我发现通过使用use()扩展函数块将参数传递给匿名函数的技术非常有用,因此函数将假定使用use()部分定义的所有变量
我希望这能帮助您参数$mlg
不被视为FormNilai
实例,它只是被视为illumb\Database\elount\Builder
的一个实例
您可以在源代码中看到它是如何工作的。
例子:
定义接受常规参数的匿名函数:
$example = function ($arg) {
var_dump($arg);
};
$example("hello");
您可以将参数名称更改为任何字符串,就像$myArgument
无论参数名称是什么,输出都不会更改。这不是依赖项注入,$mlg
是一个查询
实例,而不是FormNilai
实例。您需要阅读文档,特别感谢您的解释,但我只是想知道,即使我们更改变量名,$mlg如何始终被视为Lightning\Database\Eloquent\Builder,无论变量名如何变量名取决于您定义的变量名。您必须记住匿名函数是您自己定义的。调用匿名函数时,参数将传递给匿名函数。您能用sippet解释一下吗?
$example = function ($arg) {
var_dump($arg);
};
$example("hello");