Нужна ли мне структура Zend для написания расширения PHP на C?

Нужны ли мне расширения Zend или Zend Engine более низкого уровня для создания ext.so из ext.c, ext.h и config.m4? Достаточно ли написать файлы ext.h, ext.c и config.m4?

старый вопрос: нужна ли мне структура Zend для написания расширения php в c?

Этот учебник объясняет ZEND. https://docstore.mik.ua/orelly/webprog/php/ch14_01.htm

В этом примере не используется ZEND: Компиляция библиотеки расширений PHP в Ubuntu (Кармическая коала)


person Gintare Statkute    schedule 04.02.2021    source источник
comment
Вам не нужен zend framework. Однако PHP работает на движке zend, и любое расширение, которое вы пишете, вероятно, должно будет в некоторой степени использовать API движка zend.   -  person apokryfos    schedule 05.02.2021
comment
Помимо общего имени, Zend Framework (пользовательская среда PHP, которая теперь была переименована в Laminas), абсолютно ничего общего с Zend Engine (или Zend Extensions), которые связаны с самим языком.   -  person iainn    schedule 05.02.2021
comment
Нужны ли мне расширения Zend или Zend Engine более низкого уровня для создания ext.so из ext.c, ext.h и config.m4?   -  person Gintare Statkute    schedule 05.02.2021
comment
Зависит от того, что расширение должно делать. В большинстве случаев достаточно просто использовать API движка Zend (например, методы, которые он предоставляет для создания/управления объектами PHP и т. д.). Однако, если вам нужно расширить сам движок zend, вам нужны расширения zend.   -  person apokryfos    schedule 05.02.2021


Ответы (1)


Вопрос на самом деле не имеет смысла; вы неправильно поняли некоторые термины.

Таким образом, чтобы создать расширение PHP, вы используете набор API-функций и макросов C, определенных для этой цели, и компилируете результат с копией исходного кода PHP (который включает Zend Engine). . Если вы делаете что-то более низкоуровневое для языка, вы можете вместо этого использовать набор API, определенный для расширений Zend, и скомпилировать его.

person IMSoP    schedule 15.02.2021
comment
Большое спасибо за разъяснения. Действительно, я очень запутался между множеством разных способов создания расширения PHP, а также между движком Zend и Zend Framework, которые совершенно разные вещи. Я нашел очень полезные примеры в папках для разработчиков PHP, таких как php-8.0.2-src/ext/standard/, и большинство функций в php-8.0.2-src/Zend/. Мой вывод таков, что по соображениям совместимости лучше иметь только одну функцию, принимающую и возвращающую параметры, написанную на Zend Extension, остальные я пишу на чистом C. Но пока ничего не работает. - person Gintare Statkute; 18.02.2021
comment
@GintareStatkute ​​Возможно, вы уже заметили это, но есть также ext/skeleton, который является всего лишь образцом очень простого расширения. Также может быть полезно взглянуть на несколько простых примеров из PECL. Удачи! - person IMSoP; 18.02.2021