Laravel 中的魔法方法

2024-04-30

所以我最近意识到,而不是使用

$users = User::all();
return view('home')->with('users', $users);

你有能力做到

return view('home')->withUsers($users);

我相信这些被称为“神奇方法”——这些方法有记录在什么地方吗?我可以找到一份清单吗?或者这是唯一的清单?


出于方便起见,Laravel 允许您以这种方式传递数据,但事实并非如此魔法方法. 魔法方法 http://php.net/manual/en/language.oop5.magic.php是 PHP 类中一组选定方法的名称,通常以双下划线开头__,各有各的目的。魔术方法的例子有__call http://php.net/manual/en/language.oop5.overloading.php#object.call, __callStatic http://php.net/manual/en/language.oop5.overloading.php#object.callstatic, __toString http://php.net/manual/en/language.oop5.magic.php#object.tostring etc.

Laravel 使用 PHP 魔法方法,特别是__call魔术方法,提供您正在体验的功能。这__call http://php.net/manual/en/language.oop5.overloading.php#object.call当您尝试调用对象上不存在的方法时,PHP 会调用方法。作为其第一个参数,它接收被调用方法的名称,第二个参数接收作为数组传递给方法调用的参数。

Laravel 通过实现来利用这一点__call方法上的View班级。它检查开发人员调用的方法的开头是否以with如果是这样,它将假定方法名称的以下部分表示渲染视图时要绑定数据的变量的名称:

From Illuminate\View\View:

/**
 * Dynamically bind parameters to the view.
 *
 * @param  string  $method
 * @param  array   $parameters
 * @return \Illuminate\View\View
 *
 * @throws \BadMethodCallException
 */
public function __call($method, $parameters)
{
    if (! Str::startsWith($method, 'with')) {
        throw new BadMethodCallException("Method [$method] does not exist on view.");
    }

    return $this->with(Str::camel(substr($method, 4)), $parameters[0]);
}

这提供了您正在体验的功能,并且该技术实际上用在几个不同的地方,例如,在查询构建器/Eloquent 中,您可以通过简单地调用以开头的方法来动态地将 where 子句添加到查询中where方法调用的其余部分引用您正在检查的列:

User::whereEmail('[email protected] /cdn-cgi/l/email-protection'); // Equal to User::where('email', '[email protected] /cdn-cgi/l/email-protection');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel 中的魔法方法 的相关文章

  • preg_match 所有以@开头的单词?

    我对正则表达式不太确定 所以我不得不问你 如何用 PHP 判断字符串中是否包含以 开头的单词 例如我有一个像 This is for codeworxx 这样的字符串 我很抱歉 但我没有任何起点 希望你能帮忙 谢谢 萨沙 好的 谢谢你的结果
  • 如何处理 PHP 中浮点数的奇怪舍入

    众所周知 浮点运算并不总是完全准确 但是如何处理它的不一致之处呢 As an example in PHP 5 2 9 this doesn t happen in 5 3 echo round 14 99225 4 14 9923 ech
  • 如何在 Laravel 中 session_write_close() ?

    Running session write close before sleep 在 Laravel 中似乎不起作用 因为会话仍然被其他请求阻止 直到当前连接完成 我试图sleep 在 Laravel 中 不会阻止其他请求 发现 sessi
  • cakephp 1.1 与 php 5.3

    我刚刚从 php 5 1 升级到 5 3 之前在我的服务器上使用 cakephp 1 1 自从升级 或者可能更早 我不确定 以来 我收到以下错误 任何人都可以透露一些信息 Deprecated Assigning the return va
  • PHP语言问题

    我有一个 php 页面 它将邮件发送到特定电子邮件 其中包含此页面表单中的数据 邮件必须以网站的母语 阿拉伯语 发送 但是当我单击表单上的提交按钮时 收到的邮件一半可读 阿拉伯语 另一部分不可读 符号 我想知道如何解决这个问题并且能够发送邮
  • PHP服务器端IAB验证openssl_verify总是返回0

    我使用以下函数 服务器端 php 来验证 IAB v3 事务 我从 Android 应用程序传递过来 Override protected void onActivityResult int requestCode int resultCo
  • 正则表达式替换混合数字+字符串

    我想删除所有包含数字的单词 示例 LW23 London W98 String 从上面的字符串中我唯一想保留的是 London String 这可以用正则表达式来完成吗 我目前正在使用 Python 但 PHP 代码也很好 Thanks E
  • 获取目录中最后修改的文件

    有没有办法只选择目录中的最后一个文件 扩展名jpg png gif 或者我是否必须解析整个目录并使用进行检查filemtime 是的 你必须通读它们 但由于目录访问已被缓存 因此您不必真正担心它 files array merge glob
  • 如何在PHP中将图像从内存上传到AWS S3?

    所以我目前有一个使用 AWS S3 上传图像的上传系统 这是代码 Upload image to S3 s3 Aws S3 S3Client factory array key gt mykey secret gt myskey try s
  • 计算轮班工作时间并检测

    我有个问题 我的英语很差 我需要用PHP做一个加班计算 已经有一个代码可以实现这一点 但当工作时间超过2天时 计算就会出错 工作开始 2018 09 09 13 43 工作结束 2018 09 11 07 13 结果 07 18 04 00
  • PHP OOP 静态属性语法错误 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 为什么不
  • 将自定义参数传递给 Symfony2 中的自定义 ValidationConstraint

    我正在 Symfony2 中创建一个表单 表格只包含一个book字段允许用户在列表中进行选择Books实体 我需要检查是否选择了Book属于Author我的控制器里有 public class MyFormType extends Abst
  • 使用 PHP 修剪字符串开头的任何零

    用户将在字段中填写与其帐户相关的数字 不幸的是 一些用户会在号码开头添加零来组成六位数字 例如 000123 001234 而其他用户则不会 例如 123 1234 我想 修剪 前面带有零前缀的用户的数字 因此如果用户输入 000123 它
  • WooCommerce 自定义产品类型选项不隐藏自定义产品选项卡

    我刚刚向我的 WC 管理产品页面添加了自定义产品类型选项 add filter product type options this filter product type options 99 1 public function filte
  • 如何根据另一个下拉列表中的选择动态填充下拉列表中的选项?

    我有一个表 其中包含类别信息 例如产品 我已将它们列在下拉菜单中 现在 我需要做的是 在下一个下拉菜单中列出所选类别的子类别 我希望 javascript 是必需的 但我对 javascript 还不太熟悉 将非常感谢您的帮助 你应该使用
  • PHPunit - 错误

    当 PHPunit 框架不希望发生的错误发生时 测试会停止 PHP 会抛出错误 但 PHPunit 不会记录这是一个错误 我如何确保 PHPunit 将其记录为错误 免责声明 我是 PHPUnit 的新手 我也试图弄清楚 发生错误时会发生什
  • 使用 PHP 创建图表并导出为 PDF

    我正在寻找有关使用 PHP 创建图表的建议 我还希望能够将这些图表导出到 PDF 文档 我目前正在使用谷歌图表 但我不喜欢将我的所有信息发送到谷歌的想法 我更喜欢自己的托管解决方案 我见过很多 Flash 解决方案 但我不知道有什么方法可以
  • 准备好的语句需要 0 个参数,给定 1 个参数..,使用 php 手册示例 [重复]

    这个问题在这里已经有答案了 我直接从 php 手册示例中获取了这个 它几乎与我需要的相同 但我仍然收到此错误 有人可以告诉我我错过了什么吗 stmt link gt prepare SELECT obitBody Photo FROM tn
  • 如何检查号码是否是巴基斯坦用户的手机号码而不是固定电话号码

    我所做的是从开头删除 92 或 0092 并使用以下代码检查它是否是巴基斯坦人的有效手机号码 if preg match 3 0 4 0 9 number 1 Pakistani mobile number else not a pakis
  • __callStatic():从静态上下文实例化对象?

    我对 PHP 中的 静态 和 动态 函数和对象如何协同工作感到困惑 特别是在 callStatic 方面 callStatic 的工作原理 您可以有一个普通的班级 MyClass 在班级内您可以 放置一个名为 callStatic 的静态函

随机推荐

  • 有没有办法防止 Tomcat 在加载的 JNI 库损坏内存时崩溃?

    我们有一个在 Tomcat 7 上运行的 Web 应用程序 它加载一个用 C 编码且由第三方开发的 JNI 库模块 基本上 这个库为我们的网络应用程序提供生物识别技术 我们不能为此使用全 java 解决方案 除了使用 JNI 库模块之外别无
  • 具有 StateT[IO, _, _] 的 FS2 Stream,定期转储状态

    我有一个消耗无限数据流的程序 在此过程中 我想记录一些指标 这些指标形成一个幺半群 因为它们只是简单的求和和平均值 我想定期在某处写下这些指标 清除它们 然后返回累积它们 我基本上有 object Foo type MetricsIO A
  • 使用线程反转字符串

    最近 在一次面试中 我被要求使用线程实现一个字符串反转功能 我想出了下面解决方案的大部分内容 被选中与否是另一回事 我尝试在运行 Windows 8 Consumer Preview 的家用电脑上运行以下解决方案 编译器是VC11 Beta
  • 智能指针的三法则?

    我对将 三法则 与智能指针一起使用感到有点困惑 如果我有一个类 其唯一的数据成员是智能指针 我是否需要显式定义析构函数 复制构造函数和赋值运算符 我的理解是 由于智能指针将自动处理资源 所以我不需要显式定义析构函数 因此我不需要根据三规则为
  • 使用 .NET Core 操作图像

    我已将我的项目从 NET 4 5 更新到 NET Core 使用 ASP NET Core 我在以前的版本中有一些非常简单的代码 使用了位图对象System Drawing调整图像大小 我认为System Drawing不能在 NET Co
  • 你现在在做MDA(模型驱动架构)吗?如果是这样,您使用什么工具,效果如何?

    模型驱动架构是这样一种想法 您创建模型 以一种不依赖任何 或至少大多数 实现技术的方式表达您需要解决的问题 然后为一个或多个特定平台生成实现 人们声称 在更高的抽象级别上工作更加强大和高效 此外 您的模型比技术更长寿 因此 当您的第一语言
  • 将 Grails 应用程序移植到 GAE

    我目前正在评估一个 Grails 应用程序是否移植到 Google App Engine 我想了解以下方面的经验 Acegi 安全性 应用程序依赖此库来增强安全性 更新 刚刚了解到它基于 hibernate 因此无法移植 有推荐的替代品吗
  • 通话过程中是否可以拦截语音数据?

    我计划开发 Android 应用程序 对语音数据进行加密 解密 以便各方可以使用安全通道进行通信 那么问题来了 GSM通话时如何拦截语音 音频数据 可能还是不可能 我应该使用 Android NDK 还是其他东西 在 GSM 中 由于信道特
  • 是否可以在执行时查看对对象的所有引用?

    有没有办法查看执行时对某个对象的所有引用 我正在使用 Netbeans 其中是否存在此功能 编辑 使用探查器来执行此操作没有问题 我只需要知道引用 无论如何 好的 Netbeans 显示了对一个对象的所有引用 首先 以调试模式运行项目CTR
  • 如何从js获取zk元素id

    我正在使用 ZK 我想从 js 获取 zk 元素的 id 我使用了不同的方式 像原生 html 一样声明组件 它从 js 获取 id 但它不正确 我已经使用 ZK 的 html 标签声明了该元素 但也不正确 我已经看到了一些像 Compon
  • 可以跳过“不返回”吗?

    我想知道跳过是否是一种不好的方式return None 当不需要时 Example def foo1 x if some condition return Baz x else return None def foo2 x if some
  • 适用于 Visual Studio 2013 的水晶报表 8

    有什么办法可以在 Visual Studio 2013 上运行 Crystal Reports 8 我有一个使用 VS2008 Crystal Reports 8 构建的 Vb Net 项目 现在我正在运行 Visual Studio 20
  • 使用 AFNetworking 发送多张图像

    我正在开发一款消息应用程序 用户还可以互相发送图片 当用户发送多张图片时 我会并行发送它们 在发送第二张图片之前 我不会等待第一张图片完成上传 搬到之前AFNetworking我成功地做到了这一点ASIFormDataRequest 事实上
  • 如何在 Angular 2 中添加表单验证模式?

    我有一个简单的表单 需要验证输入的开头和结尾是否不是空格 在 HTML5 中 我将这样做
  • 如何根据最短距离为经纬度观测值指定名称

    我有两个数据框 df1包含带有经纬度坐标的观测值 df2具有带有纬度坐标的名称 我想创建一个新变量df1 name每个观察值的名称df2到该观测值的距离最短 一些示例数据df1 df1 lt structure list lat c 52
  • 解析对象或对象数组的 JSON 键

    在 Moshi 中 是否可以创建一个类型适配器来解析同一类型的对象或对象列表 例如 有时 JSON 是 person 其他时候是 person 理想情况下 我希望有一个如下所示的 Java 对象 class PersonContainer
  • PyFile_Type 替换为 ..?

    我正在尝试编译Yenc https bitbucket org dual75 yenc对于Python 3 2 我注意到 gcc 抱怨未声明的函数PyString Type 所以我用它的替代品替换了它PyBytes Type正如根据文档 h
  • 如何使用 Visual Studio + ReSharper 禁用不需要的自动完成?

    我正在使用 Visual Studio 2010 和 ReSharper 5 我在 cs 文件的顶部定义了它 if X86 using size t System Int32 else using size t System Int64 e
  • 如何使用 java 开始编码和设置 Web 服务器?

    所以现在我想我已经学习了java的所有基础知识和术语 但我不知道如何使用 Java 中的 Netbeans 编码和显示网页 大多数教程包含大量关于不同技术的讨论 Java 使用 Java Beans JSP 和 servlet 等 我在哪里
  • Laravel 中的魔法方法

    所以我最近意识到 而不是使用 users User all return view home gt with users users 你有能力做到 return view home gt withUsers users 我相信这些被称为 神