Александр Календарев
Это
намного проще, чем кажется с первого раза
Расширение в PHP – это набор дополнительных функций, не входящих в ядро PHP-engine.
Расширения, как и само ядро PHP-engine, написаны на С, что значительно повышает
быстродействие системы, а также позволяет осуществлять доступ к внешним
библиотекам и создавать более эффективные веб-приложения. Так как же
быстро и надежно разработать расширение?
Вполне закономерный вопрос – зачем нужны дополнительные расширения? Казалось
бы, все что нужно скриптовому языку, в PHP уже охвачено. В последний
дистрибутив четвертой версии входит 74 РНР-расширения. На официальном сайте www.php.net есть раздел, специально посвященный
этой теме: www.pecl.php.net. На данноме
ресурсе находится библиотека исходных текстов еще 132х дополнительных
расширений. Не стоит забывать, что PHP относится к языкам интерпритируемого
типа, т.е. каждая команда языка интерпритируется во время исполнения, что
заметно проигрывает в скорости языкам компилируемого типа. Практика
показывает, что для ускорения части функционала (написание функций с
использованием битовых операций, т.к. они медленно отрабатываются на PHP
и очень замедляют работу скрипта) приходится писать расширения, а также
если необходимо обратиться к уже существующим C-библиотекам (например,
криптографические или ГИСбиблиотеки). Наверное, у каждого из вас найдется
своя причина, чтобы написать новое расширение.
Данная статья поможет вам понять основы
построения расширений и освоить технику написания расширений
под *nix-системы. Написание расширений под Windows отличается только
способом компилирования и обращения к внешним библиотекам.
В двух словах, под расширением понимается часть
PHP-функций, которые реализованы в виде отдельного модуля, написанного на С.
Данные функции могут либо подключаться, как внешний модуль, либо скомпилированы
статически в исходный код PHP. Простым примером расширения является модуль php_mysql,
который реализует интерфейс с БД MySql. Интерфейсом взаимодействия между
внешними функциями и ядром PHP (PHP-engine) является PHP API, а начиная с
версии 4.1.0 в качестве API используется Zend API.