PHP - пишем свое расширение (extension)

Первые шаги

Под windows расширение php удобнее всего компилировать из под MS Visual Studio. Это вызвано тем, что сам PHP компилируется в этой среде и его заголовки под windows заточены для VS.

1 Сначала необходимо скачать исходники PHP

. У меня раскрылся только файл запакованный bz. tgz почему-то упрямо выдавал ошибку CRC (скорее всего из-за разной реализации распаковщика под windows и linux).

2 Далее, проще всего взять проект skeleton из подкаталога ext. Скопировать его в новый каталог (лучше всего рядом в каталоге ext). Переименовать все слова extname и EXTANAME на название своего расширения, в соответствующем регистре.

4 Для компиляции понадобяться файлы библиотек php4ts.lib и php4ts_debug.lib. Первый можно скопировать из любого работающего дистрибутива PHP, а вот второй получиться только при компиляции всего проекта PHP. lib-файлы кладем в каталог проекта или в каталоги Release_TS и Debug_TS соответственно

5 Компилируем проект. В случае удачи подкладываем полученную dll в каталог extensions рабочего дистрибутива PHP. И запускаем из командной строки простой скрипт проверки (с подправленными именами) tests/001.phpt

Пример:

php -q F:/Libraries/PHP/php-4.3.8/ext/skeleton/tests/001.phpt 

Он нам покажет загрузилось ли расширение и какие его функции зарегистрированы

5 Одна тонкость способная подпортить много нервов и потратить кучу времени. Имена публичных функций в расширении должны быть написаны в нижнем регистре. Если вы напишете имена с большими буквами все отлично откомпилируется. Скрипт покажет, что в расширении все зарегистрированно. Но при попытке вызова функции будет выдано сообщение об ошибке: вызов необъявленной функции. Поскольку php не разбирает регистр, можно не придать внимания тому факту, что в сообщении об ошибке функция указана в нижнем регистре. В действительности, имена всех функций перед выполнением приводятся к нижнему регистру