2010-06-24 23 views
0

PHP有Zend引擎.. Zend引擎提供的fopen .. PHP還提供的fopen ...Zend引擎和PHP ext文件夾

但是,當我們調用fopen,PHP的FOPEN被稱爲..我有三個問題這裏

  1. /php -nn/ext文件夾的用途是什麼。
  2. ext文件夾中的函數每次更改時都需要重新編譯它們嗎?
  3. 不要在ext文件夾(如果他們碰巧有相同的名稱,Zend的功能)過騎了Zend函數功能..

回答

1

什麼/ PHP的目的 - NN/ext文件夾

它包含PHP擴展,即構建在Zend引擎上的實際提供PHP函數和內置對象的東西。

ext文件夾中的函數每次更改都需要重新編譯嗎?

是的,如果你想改變反映在二進制文件。

不要在ext文件夾(如果他們碰巧有相同的名稱,Zend的功能)過騎了Zend函數功能..

你錯了,Zend引擎沒有定義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擴展。

+1

ZE不提供用戶級PHP功能。可以使用ZEND_FUNCTION()宏聲明這些函數。Zend/zend_builtin_functions.c包含其中的一些,比如get_declared_classes(),func_num_args()等。 – 2010-06-24 18:40:26

+0

@Daniel你說得對,我會編輯答案。 – Artefacto 2010-06-24 19:18:18

+0

夥計..我din的意思是,zend提供的PHP函數..但不zend提供文件打開功能?? – 2010-06-25 01:53:23