🔊 Saber como usar e escrever extensões PHP é uma habilidade crítica de desenvolvimento de PHP que pode economizar um tempo significativo e permitir que você adicione rapidamente novos recursos aos seus aplicativos. Nesse vídeo veremos como criar extensões para o PHP utilizando C/C++.
Dependências:
Exemplo em Sistemas que usam o APT.
sudo apt-get install build-essential php php-dev \
autoconf automake bison flex re2c gdb \
libtool make pkgconf valgrind git libxml2-dev libsqlite3-dev
Arquivo terminalroot.cpp
:
Diferentemente do vídeo em ~
ZEND_GET_MODULE(terminalroot_php)
~ tem de ser:ZEND_GET_MODULE(terminalroot)
.
extern "C"{
#include <php.h>
}
#define PHP_TERMINALROOT_EXTNAME "terminalroot"
#define PHP_TERMINALROOT_VERSION "0.0.1"
PHP_FUNCTION(terminalroot_php);
ZEND_BEGIN_ARG_INFO(arginfo_terminalroot_php, 0)
ZEND_END_ARG_INFO()
zend_function_entry terminalroot_php_functions[] = {
PHP_FE(terminalroot_php, arginfo_terminalroot_php)
{NULL, NULL, NULL}
};
zend_module_entry terminalroot_php_module_entry = {
STANDARD_MODULE_HEADER,
PHP_TERMINALROOT_EXTNAME,
terminalroot_php_functions,
NULL,
NULL,
NULL,
NULL,
NULL,
PHP_TERMINALROOT_VERSION,
STANDARD_MODULE_PROPERTIES
};
ZEND_GET_MODULE(terminalroot)
PHP_FUNCTION(terminalroot_php){
printf("Minha Primeira Extensão PHP com C++\n");
}
Arquivo config.m4
:
PHP_ARG_ENABLE(terminalroot, Somente um exemplo Básico de Extensão PHP com C++, [ --enable-terminalroot Habilite o Suporte dessa Ext])
if test "$TERMINALROOT" != "no"; then
PHP_NEW_EXTENSION(terminalroot, terminalroot.cpp, $ext_shared)
PHP_REQUIRE_CXX() # Se estiver escrevendo em C, ignore essa linha
fi
Para compilar:
phpize
./configure --enable-terminalroot
make
sudo make install
Arquivo script.php
:
<?php
terminalroot_php();
Rodar o arquivo PHP com a extensão:
php -dextension=terminalroot script.php