Zend Engine и Php Ext Папка - PullRequest
       4

Zend Engine и Php Ext Папка

0 голосов
/ 24 июня 2010

Php имеет Zend Engine .. Zend Engine обеспечивает fopen .. Php также обеспечивает fopen ...

Но когда мы вызываем fopen, вызывается php fopen .. У меня есть три вопроса здесь

  1. Какова цель папки / php - Nn / ext.
  2. Нужно ли перекомпилировать функции в папке ext при каждом изменении?
  3. Превышают ли функции в папке ext (если они имеют то же имя, что и функции Zend), приоритет над функциями Zend ..

1 Ответ

1 голос
/ 24 июня 2010

Для чего нужна папка / php - Nn / ext

Он содержит расширения PHP, то есть вещи, построенные поверх Zend Engine, которые фактически предоставляют функции PHP и встроенные объекты.

Нужно ли перекомпилировать функции в папке ext при каждом изменении?

Да, если вы хотите, чтобы изменение было отражено в двоичных файлах.

Превышают ли функции в папке ext (если они имеют то же имя, что и функции Zend), приоритет над функциями Zend.

Вы ошибаетесь, Zend Engine не определяет функцию PHP fopen. На самом деле Zend Engine не предоставляет функций PHP. Он может быть скомпилирован независимо и использован для чего-то совершенно не связанного с PHP. Zend Engine на самом деле предоставляет несколько функций PHP (объявлено с ZEND_FUNCTION), см. zend_builtin_functions.c. PHP_FUNCTION на самом деле является синонимом ZEND_FUNCTION, но полагаться на ZEND_FUNCTION для объявления функций PHP является нарушением абстракции.

Возможно, вы путаете функцию PHP-функции (объявленную внутри как PHP_FUNCTION(fopen)) с другой функцией C, называемой fopen (например, в стандартной библиотеке C).


Относительно того, предоставляет ли Zend функцию открытия файла ... Что я мог найти:

  • A true global это указатель на открытую функцию в zend.c . Это используется zend_stream_open, чья иерархия вызовов предлагает использовать при открытии include файлов.
  • Небольшая оболочка вокруг стандартной библиотеки C, которая использует запасное значение для указанного глобала.

Я предполагаю, что причина предоставления глобала указателем на функцию заключается в том, что его можно заменить, например, на TSRM или расширение Phar.

...