PHP 手册中的“用户区”是什么意思?

Lal*_*han 8 php

我正在浏览 PHP 手册,并多次发现“userland”这个词。这通常意味着什么?我在这个页面找到了它;我认为这是源代码本身,但我不确定。

来自 PHP 手册:

在使用 --enable-debug 配置的调试环境中执行时,下一个示例中使用的泄漏函数实际上由引擎实现,并且可以在用户态中调用。

Cub*_*oft 8

由于这个问题还没有正确的答案(尽管选择了一个答案),所以我将继续回答这个问题。

PHP 核心开发团队在提及 PHP 时做出了三个主要区别:

  1. PHP 核心。这是指为 PHP 提供支持的 Zend 引擎。它执行诸如标记用户态代码、处理内存管理、处理内置关键字(if-else、while、isset 等)等操作。最后一点就是为什么内置函数比函数调用快很多倍的原因。PHP 核心一般不会实现 substr()、fopen() 等函数,这就留给了......

  2. PHP 扩展。这指的是大部分 PHP 源代码,但也包括 PECL 扩展和其他用 C(有时是 C++)编写的 PHP 扩展。PHP 始终可用的所有核心函数和类实际上都是在扩展中实现的,最大的扩展是“ext/standard”。

  3. PHP 用户区。这是指 PHP 用户通常编写的利用各种 PHP 扩展和核心的代码。

当您看到短语“纯 PHP 用户区”通常指的是某人编写的 PHP 用户区库时,它们通常意味着不依赖于 PHP 内置函数之外的任何内容、主机上可能无法编译或可用的扩展,或者不在 PHP 生态系统中的外部软件。

使用任何这些短语都可能表明此人倾向于潜伏在PHP 内部邮件列表中。大多数 PHP 开发人员都是用户态开发人员,对 PHP 本身的内部工作原理知之甚少甚至一无所知。


Gri*_*... 5

这不是一个 PHP 术语,而是一个通用计算术语:

术语用户空间(或用户空间)是指在操作系统内核之外运行的所有代码。

https://en.wikipedia.org/wiki/User_space

  • 虽然 _userland_ 是一个通用术语,但由于 PHP 的全局命名空间,应用程序代码标识符(用户区)可能与语言自身的标识符发生冲突,因此它在 PHP 中似乎具有特定含义。有一个[指南](http://php.net/manual/en/userlandnaming.php)可以帮助防止这种情况发生,[命名空间](http://php.net/manual/en/language.namespaces.php )的引入是为了帮助解决这个问题。 (2认同)