php - 在 Laravel 5 中,这是做什么的: $this->{$var}
问题描述
我在 api 端点中有以下代码,它检查要删除的模型上没有关系(并返回 true 以显示它正在使用中):
控制器
public function destroy(Group $group)
{
if ($group->inUse()) {
return response(
['message' => 'This group cannot be deleted because it has either associated
catalogue items, users or organisations'],
409
);
}
$group->delete();
}
模型
public function inUse()
{
$models = [
'categories',
'items',
'organisations',
];
foreach ($models as $model) {
if (count($this->{$model}) > 0 ){
return true;
}
}
return false;
}
我不完全理解的那一行是我们检查每个模型的关系数量:count($this->{$model})
我在 php.net 上读到$this->{$var} 是一个变量变量,但在这里情况并非如此,循环的第一次运行将返回一个未定义的变量 $categories:
if($this->$categories) {
//
}
这是 laravel 的功能还是特殊的语法?我进行了快速搜索,但什么都没有出现。
提前致谢。
解决方案
它的 php 语法,用于动态调用对象属性的大括号,在您的情况下,这将被翻译为:
if (count($this->categories) > 0 )
, if (count($this->items) > 0 )
...
推荐阅读
- docker-compose - docker-compose 仍然使用带有 -f 选项的覆盖文件
- azure-active-directory - 如何在 Azure AD 上将登录方法更改为 HTTP POST 绑定
- python - 如何使用VScode运行从官方网站下载的python
- shell - 在 shell 脚本中过滤数据
- c# - SSL 握手在 C# 中失败,但在邮递员中有效
- javascript - 使用javascript对持续时间和距离进行排序
- android - 如何将图像转换为字节数组
- unity3d - Unity - 位置工具包 - onLocationAvailability 方法每次都返回 false
- javascript - 单击一次后如何删除onclick功能
- python - 将两个列表压缩到字典中时,是否可以为一个键指定多个值?