Php 有一个 Zend 引擎.. zend 引擎提供了 fopen.. Php 也提供了 fopen...
但是当我们调用fopen时,会调用php的fopen..我这里有三个问题
/php--Nn/ext 文件夹的用途是什么
它包含 PHP 扩展,即构建在 Zend Engine 之上、实际提供 PHP 函数和内置对象的东西。
ext文件夹中的函数每次改变都需要重新编译吗?
是的,如果您希望更改反映在二进制文件中。
ext 文件夹中的函数(如果它们碰巧与 zend 函数同名)是否覆盖 zend 函数..
你错了,Zend Engine 没有定义 PHP 函数
fopen
。 ZEND_FUNCTION
),参见zend_builtin_functions.c
。 PHP_FUNCTION
实际上是 ZEND_FUNCTION
的同义词,但依赖 ZEND_FUNCTION
来声明 PHP 函数是一种抽象违规。
您可能会将 PHP 函数 function(内部声明为
PHP_FUNCTION(fopen)
)与其他一些名为 fopen
的 C 函数(如标准 C 库中的函数)混淆。
至于Zend是否提供文件打开功能...我能找到的是:
zend_stream_open
使用的,其调用层次结构建议在打开 include
文件时使用。我想为全局提供函数指针的原因是为了可以用它来代替,例如TSRM 或 Phar 扩展。