Intereting Posts

Как построить расширение PHP, которое выполняется во многих версиях PHP?

Я создал расширение PHP, используя C ++. Я хочу отправить свое расширение своим клиентам в двоичной форме. Это означает, что мне нужно создать отдельную версию для каждой версии PHP (5.2, 5.3, 5.4, 5.5) и каждой архитектуры процессора.

Мои вопросы:

  1. почему они продолжают обновлять метку времени API, в то время как сам API, по-видимому, не меняется? Разве это не удалит много головной боли при обновлении вашей системы, чтобы использовать следующую версию PHP? Просто для сравнения, у меня также есть версия моего расширения для MS Excel с использованием XLL API, и этот API остался обратно совместимым с 2003 года, что позволяет мне иметь всего два бинарных файла (32 и 64 бит) для всех моих клиентов.

  2. Есть ли способ обойти эту проблему? Т.е. есть ли способ построить расширение PHP, которое можно запустить в нескольких версиях PHP?

Возможно, вы можете попробовать гибридный подход. Скомпилируйте вашу библиотеку C ++ отдельно, а затем создайте для нее оболочку расширения PHP с открытым исходным кодом. У расширения PHP практически нет собственной логики. Он преобразует типы данных из PHP в C / C ++ назад и вперед и передает аргументы функциям / методам, реализованным в вашей библиотеке C ++.

Затем вы просто поддерживаете двоичную версию своей библиотеки на платформу, а принятие определенной версии PHP выполняется с помощью расширения PHP с открытым исходным кодом.

Это, конечно, требует, чтобы в системах ваших клиентов были установлены пакеты разработки PHP, а также компилятор.