Zend 引擎和 Php Ext 文件夹

问题描述 投票:0回答:1

Php 有一个 Zend 引擎.. zend 引擎提供了 fopen.. Php 也提供了 fopen...

但是当我们调用fopen时,会调用php的fopen..我这里有三个问题

  1. /php--Nn/ext 文件夹的用途是什么。
  2. ext文件夹中的函数每次改变都需要重新编译吗?
  3. ext 文件夹中的函数(如果它们碰巧与 zend 函数同名)是否覆盖 zend 函数..
php zend-framework
1个回答
1
投票

/php--Nn/ext 文件夹的用途是什么

它包含 PHP 扩展,即构建在 Zend Engine 之上、实际提供 PHP 函数和内置对象的东西。

ext文件夹中的函数每次改变都需要重新编译吗?

是的,如果您希望更改反映在二进制文件中。

ext 文件夹中的函数(如果它们碰巧与 zend 函数同名)是否覆盖 zend 函数..

你错了,Zend Engine 没有定义 PHP 函数

fopen
事实上,Zend Engine 不提供 PHP 函数。 它可以独立编译并用于与 PHP 完全无关的东西。 Zend 引擎实际上提供了一些 PHP 函数(用
ZEND_FUNCTION
),参见
zend_builtin_functions.c
PHP_FUNCTION
实际上是
ZEND_FUNCTION
的同义词,但依赖
ZEND_FUNCTION
来声明 PHP 函数是一种抽象违规。

您可能会将 PHP 函数 function(内部声明为

PHP_FUNCTION(fopen)
)与其他一些名为
fopen
的 C 函数(如标准 C 库中的函数)混淆。


至于Zend是否提供文件打开功能...我能找到的是:

  • 一个真正的全局,它是指向zend.c中打开函数的指针。这是由
    zend_stream_open
    使用的,其调用层次结构建议在打开
    include
    文件时使用。
  • 标准 C 库的一个小包装,用于所述全局的后备值。

我想为全局提供函数指针的原因是为了可以用它来代替,例如TSRM 或 Phar 扩展。

© www.soinside.com 2019 - 2024. All rights reserved.