Разработка расширений PHP не сильно отличается от других разработок на C / C ++. Единственное, что является особенным, - это то, что вы должны связать мир сценариев PHP с вашими функциями C / C ++. Эта задача не тривиальна, и здесь нужны странные макросы, такие как PHP_FUNCTION.
Например, если вы хотите вызвать функцию «helloWorld» из PHP, интерпретатору необходимо найти «helloWorld» и сопоставить ее с функцией C. Эта функция должна иметь определенную подпись, это означает, что она должна принимать определенный набор параметров и должна возвращать определенное значение. Это не произвольно, и интерпретатор не может просто вызвать любую функцию C / C ++.
Именно так работают языки низкого уровня, такие как C, вы не можете «проверить», какие аргументы принимает функция.
В частности, все значения в интерпретаторе PHP являются специальными структурами, которые не могут быть преобразованы в типы C ++. Строка PHP - это нечто иное, чем строка C ++ std :: string. PHP API предоставляет все виды инструментов для преобразования значений, но вы должны знать, как их использовать.
Когда вы знаете, как написать функцию C, которую можно вызывать из PHP, вы попадаете в «мир C / C ++», где вы можете вызвать другую функцию C / C ++ и использовать типы C / C ++. С этого момента это так же, как написание приложений на чистом C / C ++. Ну, пока вам не придется возвращать значения обратно в мир PHP, где вам придется снова использовать инструменты PHP API.
Существуют инструменты, которые могут упростить вашу жизнь, помогая в создании необходимого «связующего кода» для взаимодействия с языками сценариев, такими как PHP и «чистые» проекты C ++. Взгляните на SWIG , который, вероятно, является наиболее ярким примером.