gpt4 book ai didi

php - "resolved"/"resolving"术语在 PHP 中的实际含义是什么?

转载 作者:可可西里 更新时间:2023-10-31 23:08:36 29 4
gpt4 key购买 nike

我仍在学习 PHP,我认为我不是母语人士,这并不难理解。

此时,看了一大堆文档,跳入了深水区,于是打开Laravel源文件,一个接一个地看,试图更好地理解MVC的整个实现,包括路由、中间件如何组合成一个高级代码。

我看到了很多以前不知道的术语,但有些术语很容易理解,而“Resolved”和“Resolving”这两个术语让我有些头疼。

这到底是什么意思?

文件中文档中的几个示例:

  1. “刷新所有绑定(bind)和已解析实例的容器。”

  2. “已解析类型的数组。”

  3. “所有全局解析回调。”

  4. “所有按类类型解析后的回调。”

  5. “所有按类类型解析后的回调。”

现在我有点困惑,解决和解决在我的语言中的简单翻译意味着安定下来,决定,确定,分离,崩溃,但在代码中对我来说没有任何意义.

能否请您澄清一下解析的含义?我觉得一旦我理解了这个词,一切都会变得更加顺利。

最佳答案

so I opened Laravel source files and went file after file, trying understand better how the whole implementation of MVC include routing, Middlewares getting together into a high level piece of code.

有更好的方法来理解框架源码。使用调试器。

以任何简单的应用程序为例,设置 XDebug 并完成请求处理的整个过程。

先跳过细节,找出请求处理中涉及到哪些类和方法,然后再往下深入。

至少对我来说,这种方式比只阅读源代码要好得多。您会很快找到重要的和次要的,并能够专注于重要部分。

现在让我们回到您的解决方案问题:

"Flush the container of all bindings and resolved instances."

这是源文件 - Illuminate/Container/Container.php .以及相关文档:https://laravel.com/docs/5.0/container .

其实,要看懂源码,首先要看懂文档中的概念。在这种情况下,他们谈论的是依赖注入(inject)容器,您需要了解它是如何工作的:

  • 我们定义依赖,例如public function __construct(FooBar $dependency)
  • 我们不直接传递这些依赖关系:我们不做 $foo = new FooBar; $object = new MyObject($foo);;相反,我们配置 Laravel 的服务容器,它为我们解决这些依赖关系
  • 所以这里的解析是我们询问服务容器时的过程:“请给我们FooBar”,它通过它的内部注册表并找出(解析)实际应该创建什么对象

我们为什么要这样做?因为我们不想对依赖项进行硬编码。

例如,您可以有一个依赖于 Mailer 的类。在生产中,您希望此 Mailer 成为 SMTPMailer,而在测试时,您希望使用 MockMailer 将电子邮件写入文件。

因此,您将 Laravel 服务容器配置为在本地将 Mailer 解析为 MockMailer,并在生产环境中将其解析为 SMTPMailer

                                  ---  resolution process ------
| |
---------------------
| | ----------------
-------------------------------- | Container | ---->| SMTPMailer |
| MyObject | | | / ----------------
| | | | internal | | /
| __construct(Mailer $mailer) -|---->| | registry |------- ----------------
| | | | | | | MockMailer |
------------------------------- | | ----------------
---------------------

MyObject 中,我们定义了一些抽象的 Mailer 依赖项,然后由 Container 将其解析为 SMTPMailerMockMailer,取决于配置。

Laravel docs 中查看更多使用示例和解释.

"An array of the types that have been resolved."

这是我们之前请求的类型(如 FooBar)的数组,这些类型已经被解析(我们已经知道什么实际类映射到 FooBar)。

"All of the global resolving callbacks."

这是一个回调数组,用于解决依赖关系 - 这是 Laravel 内部注册表的一部分。

"All of the after resolving callbacks by class type."

这些是解析完成时调用的回调。可能这与文档中的这一部分有关 - container events .

关于php - "resolved"/"resolving"术语在 PHP 中的实际含义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35184751/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com