Zend Engine和Php Ext文件夹

时间:2010-06-24 17:34:23

标签: php zend-framework compiler-construction

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

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

  1. / php - Nn / ext文件夹的目的是什么。
  2. 每次更改ext文件夹中的函数时都需要重新编译吗?
  3. 执行ext文件夹中的函数(如果它们碰巧与zend函数同名)覆盖zend函数。

1 个答案:

答案 0 :(得分:1)

  

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

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

  

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

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

  

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

你错了,Zend Engine没有定义PHP函数fopen实际上,Zend引擎不提供PHP函数。它可以独立编译并用于与PHP完全无关的东西。 Zend引擎实际上提供了一些PHP函数(用 ZEND_FUNCTION),请参阅zend_builtin_functions.cPHP_FUNCTION实际上是ZEND_FUNCTION的同义词,但依赖ZEND_FUNCTION来声明PHP函数是违反抽象的行为。

您可能会将PHP函数函数(在内部声明为PHP_FUNCTION(fopen))与其他一些名为fopen的C函数(如标准C库中的函数)混淆。


关于Zend是否提供文件打开功能......我能找到什么:

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

我认为提供具有函数指针的全局的原因是它可以替代例如TSRM或Phar扩展。