SlideShare una empresa de Scribd logo
[PHP] Desarrollo de
extensiones en c/c++
CODEMOTION Madrid 2013
Un poquito de SPAM
Un poquito de SPAM
Daniel González
@desarrolla2
Un poquito de SPAM

@phpmad
Objetivo
Objetivo
Introducción
teórica
Desarrollo de extensiones en C/C++
¿Que es PHP?
“PHP is a serverside scripting
language designed
for web
development but
also used as a
general-purpose
programming
language”.
-wikipedia
¿Que es una extensión?
“An extension in PHP is in
fact a module providing
some functionality to the
PHP Engine.” - Shahar
Evron
¿Para que extender PHP?
¿Para que extender PHP?
¿Para que extender PHP?
¿Por que no hacerlo?
¿Por que no hacerlo?

“spaPHPetti code”
¿Por que no hacerlo?
¿Por que no hacerlo?
¿Por que no hacerlo?
¿Por que no hacerlo?
strtoupper
PHP_FUNCTION(strtoupper)
{
char *arg;
int arglen;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg,
&arglen) == FAILURE) {
return;
}
arg = estrndup(arg, arglen);
php_strtoupper(arg, arglen);
RETURN_STRINGL(arg, arglen, 0);
}
strtoupper
PHPAPI char *php_strtoupper(char *s, size_t len)
{
unsigned char *c, *e;
c = (unsigned char *)s;
e = (unsigned char *)c+len;
while (c < e) {
*c = toupper(*c);
c++;
}
return s;
}
strtoupper
<?php
echo "Testing strtoupper: ";
$test = "abCdEfg";
$upper = strtoupper($test);
if ($upper == "ABCDEFG") {
echo("passedn");
} else {
echo("failed!n");
}
?>
strtoupper
--TEST-Test strtoupper on non-ASCII characters
--SKIPIF-<?php
if (!setlocale(LC_CTYPE, "de_DE", "de", "german", "ge", "de_DE.ISO8859-1", "ISO8859-1")) {
die("skip locale needed for this test is not supported on this platform");
}
?>
--FILE-<?php
$chars = "�";
// Not sure which is most portable. BSD's answer to this one. A small array based on PHP_OS
should
// cover a majority of systems and makes the problem of locales transparent for the end user.
setlocale(LC_CTYPE, "de_DE", "de", "german", "ge", "de_DE.ISO8859-1", "ISO8859-1");
echo strtoupper($chars)."n";
?>
--EXPECT--
¿Por que no hacerlo?
github.com/php/php-src
repositorio git desde 1999
140 committers
50,000 commits
~ 10 committers / año
¿Por que no hacerlo?
github.com/symfony/symfony
repositorio git desde 2010
770 committers
15,000 commits
~ 250 committers / año
¿Por que no hacerlo?
¿Que necesito?
código fuente de php
entorno de compilación
conocimientos de c/c++
conocimientos de php ( bajo el capó )
Bajo el capó
Application ( apache, cli, nginx, php-fpm )

SAPI

PHP API
PHP Core
Extensions

Zend API

Zend Extension API

Zend Engine
PHP Architecture
Bajo el capó
SAPI Startup

PHP Startup

Engine
Init

Module Initialization and configuration

MINIT
Signals

Sandboxing

Fork

Child

Exit

Fork

Child

Exit

RINIT
Signals

RSHUTD
OWN
Bajo el capó

PHP Code

LEXER

Expressions

PARSER /
COMPILER

OP Code
Ejemplos
prácticos
Desarrollo de extensiones en C/C++
RelaxingCup();
Desarrollo de extensiones en C/C++
PrimeNumbers
->factorize(1000,10000);
Desarrollo de extensiones en C/C++
afile_put_contents();
Desarrollo de extensiones en C/C++
afile_put_contents
Module Initialization and configuration

Child

Exit

MINIT
Signals

fopen

RINIT
Signals

RSHUTD
OWN

fwrite
fclose
Para terminar ...
Desarrollo de extensiones en C/C++
Conclusiones
Referencias

https://wiki.php.net/internals/references
¿Preguntas?
Desarrollo de extensiones en C/C++
¡Gracias!
Desarrollo de extensiones en C/C++

Más contenido relacionado

PPTX
Merry PH
PDF
Integrando mis librerías C++ con Python
ODP
Extendiendo aplicaciones en C y C++ con Python
PPT
Procesos
PPT
Node js Alt.net Hispano
PDF
IPython notebook + IRuby - RubyConfAR 2013
ODP
Iniciacion a PHP (I)
Merry PH
Integrando mis librerías C++ con Python
Extendiendo aplicaciones en C y C++ con Python
Procesos
Node js Alt.net Hispano
IPython notebook + IRuby - RubyConfAR 2013
Iniciacion a PHP (I)

La actualidad más candente (12)

PPT
PPTX
PHP Merry
PDF
Acceder a C desde Python (O viceversa)
PDF
Introducción a PHPUnit
PDF
Php Con Postgres
PPTX
Ventaja del uso de las Funciones en PHP
PDF
Cambia la forma de desarrollar tus aplicaciones web con groovy y grails
ODP
Introducción a php (es)
PPTX
Introduccion a Ppython
PDF
Composer: Gestionando dependencias en PHP
PDF
Sg conference pusher
PHP Merry
Acceder a C desde Python (O viceversa)
Introducción a PHPUnit
Php Con Postgres
Ventaja del uso de las Funciones en PHP
Cambia la forma de desarrollar tus aplicaciones web con groovy y grails
Introducción a php (es)
Introduccion a Ppython
Composer: Gestionando dependencias en PHP
Sg conference pusher
Publicidad

Destacado (8)

PDF
deSymfony 2013: Anotaciones, no es parte de mi aplicación, pero es mi aplicación
PDF
Monolog - deSymfony unconference 2013
PPTX
Por qué Symfony2 es tan rápido
PDF
Varnish http cache
PDF
Presentación del grupo PHPMad en el codemotion madrid 2014
PDF
Refactoring PHP/Symfony2 apps
PDF
Command-line tools en PHP - deSymfony 2013
PDF
Silex al límite
deSymfony 2013: Anotaciones, no es parte de mi aplicación, pero es mi aplicación
Monolog - deSymfony unconference 2013
Por qué Symfony2 es tan rápido
Varnish http cache
Presentación del grupo PHPMad en el codemotion madrid 2014
Refactoring PHP/Symfony2 apps
Command-line tools en PHP - deSymfony 2013
Silex al límite
Publicidad

Similar a Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++ (20)

PDF
Programacion
PPTX
Tutorial de cómo crear una pagina web
PPTX
DOCX
PDF
Tema7 php
DOCX
Tutorial php basico
DOCX
Aprendiendo php my sql, javascript, css, html5 capitulo 3 (introduccion a php
PDF
Introducción a PHP - Programador PHP - UGR
PPTX
PDF
Programacion en php a traves de ejemplos
PDF
Apuntes php.pdf ejemplos
PDF
Ejemplos en php
PDF
Apuntes php
PDF
Apuntes php
PDF
Apuntes php
PPTX
Programación Server-Side - Intro PHP.pptx
PDF
Introducción a php
ODP
Introducción a PHP5
PPTX
Introducción a PHP
Programacion
Tutorial de cómo crear una pagina web
Tema7 php
Tutorial php basico
Aprendiendo php my sql, javascript, css, html5 capitulo 3 (introduccion a php
Introducción a PHP - Programador PHP - UGR
Programacion en php a traves de ejemplos
Apuntes php.pdf ejemplos
Ejemplos en php
Apuntes php
Apuntes php
Apuntes php
Programación Server-Side - Intro PHP.pptx
Introducción a php
Introducción a PHP5
Introducción a PHP

Último (20)

PPT
El-Gobierno-Electrónico-En-El-Estado-Bolivia
PPT
introduccion a las_web en el 2025_mejoras.ppt
PDF
Diapositiva proyecto de vida, materia catedra
PDF
Plantilla para Diseño de Narrativas Transmedia.pdf
PPTX
Presentación de Redes de Datos modelo osi
PDF
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
PPTX
Power Point Nicolás Carrasco (disertación Roblox).pptx
PDF
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
PPTX
Presentación PASANTIAS AuditorioOO..pptx
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PPT
Que son las redes de computadores y sus partes
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
PDF
taller de informática - LEY DE OHM
PPTX
REDES INFORMATICAS REDES INFORMATICAS.pptx
PDF
CyberOps Associate - Cisco Networking Academy
PDF
clase auditoria informatica 2025.........
PDF
Estrategia de apoyo tecnología grado 9-3
PPTX
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
PPTX
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
El-Gobierno-Electrónico-En-El-Estado-Bolivia
introduccion a las_web en el 2025_mejoras.ppt
Diapositiva proyecto de vida, materia catedra
Plantilla para Diseño de Narrativas Transmedia.pdf
Presentación de Redes de Datos modelo osi
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
Power Point Nicolás Carrasco (disertación Roblox).pptx
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
Presentación PASANTIAS AuditorioOO..pptx
historia_web de la creacion de un navegador_presentacion.pptx
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Que son las redes de computadores y sus partes
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
taller de informática - LEY DE OHM
REDES INFORMATICAS REDES INFORMATICAS.pptx
CyberOps Associate - Cisco Networking Academy
clase auditoria informatica 2025.........
Estrategia de apoyo tecnología grado 9-3
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...

Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++