SlideShare una empresa de Scribd logo
1 de 39
Descargar para leer sin conexión
[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

La actualidad más candente

La actualidad más candente (12)

Conociendo PHP
Conociendo PHPConociendo PHP
Conociendo PHP
 
PHP Merry
PHP MerryPHP Merry
PHP Merry
 
Acceder a C desde Python (O viceversa)
Acceder a C desde Python (O viceversa)Acceder a C desde Python (O viceversa)
Acceder a C desde Python (O viceversa)
 
Introducción a PHPUnit
Introducción a PHPUnitIntroducción a PHPUnit
Introducción a PHPUnit
 
Php Con Postgres
Php Con PostgresPhp Con Postgres
Php Con Postgres
 
Ventaja del uso de las Funciones en PHP
Ventaja del uso de las Funciones en PHPVentaja del uso de las Funciones en PHP
Ventaja del uso de las Funciones en PHP
 
Cambia la forma de desarrollar tus aplicaciones web con groovy y grails
Cambia la forma de desarrollar tus aplicaciones web con groovy y grailsCambia la forma de desarrollar tus aplicaciones web con groovy y grails
Cambia la forma de desarrollar tus aplicaciones web con groovy y grails
 
Introducción a php (es)
Introducción a php (es)Introducción a php (es)
Introducción a php (es)
 
Introduccion a Ppython
Introduccion a PpythonIntroduccion a Ppython
Introduccion a Ppython
 
Trabajo 7
Trabajo 7Trabajo 7
Trabajo 7
 
Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP
 
Sg conference pusher
Sg conference pusherSg conference pusher
Sg conference pusher
 

Destacado

deSymfony 2013: Anotaciones, no es parte de mi aplicación, pero es mi aplicación
deSymfony 2013: Anotaciones, no es parte de mi aplicación, pero es mi aplicacióndeSymfony 2013: Anotaciones, no es parte de mi aplicación, pero es mi aplicación
deSymfony 2013: Anotaciones, no es parte de mi aplicación, pero es mi aplicaciónaferrandini
 
Por qué Symfony2 es tan rápido
Por qué Symfony2 es tan rápidoPor qué Symfony2 es tan rápido
Por qué Symfony2 es tan rápidoCarlos Granados
 
Presentación del grupo PHPMad en el codemotion madrid 2014
Presentación del grupo PHPMad en el codemotion madrid 2014Presentación del grupo PHPMad en el codemotion madrid 2014
Presentación del grupo PHPMad en el codemotion madrid 2014Daniel González Cerviño
 
Refactoring PHP/Symfony2 apps
Refactoring PHP/Symfony2 appsRefactoring PHP/Symfony2 apps
Refactoring PHP/Symfony2 appsRaul Fraile
 
Command-line tools en PHP - deSymfony 2013
Command-line tools en PHP - deSymfony 2013Command-line tools en PHP - deSymfony 2013
Command-line tools en PHP - deSymfony 2013Adán Lobato Lorenzo
 

Destacado (8)

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

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

PHP Con symfony
PHP Con symfonyPHP Con symfony
PHP Con symfonycsalazart
 
Desarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfonyDesarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfonyJuan Eladio Sánchez Rosas
 
¿Cómo elegir el languaje y el framework de tu próxima aplicación web?
¿Cómo elegir el languaje y el framework de tu próxima aplicación web?¿Cómo elegir el languaje y el framework de tu próxima aplicación web?
¿Cómo elegir el languaje y el framework de tu próxima aplicación web?Antonio Ognio
 
Programacion en php atavez de ejemplos
Programacion en php atavez de ejemplosProgramacion en php atavez de ejemplos
Programacion en php atavez de ejemplosRobert Rodriguez
 
Apuntes php
Apuntes phpApuntes php
Apuntes phpJavi
 
Introducción a PHP
Introducción a PHPIntroducción a PHP
Introducción a PHPjdaniel_7ez
 
Programacion iv sesion6 php
Programacion iv sesion6 phpProgramacion iv sesion6 php
Programacion iv sesion6 phpRoberto Garcia
 
Webinar - Radiografía actual del lenguaje PHP
Webinar - Radiografía actual del lenguaje PHPWebinar - Radiografía actual del lenguaje PHP
Webinar - Radiografía actual del lenguaje PHPArsys
 
Frameworks para Php Adwa
Frameworks para Php AdwaFrameworks para Php Adwa
Frameworks para Php AdwaAndres Karp
 
Desarrollo_web_con_PHP_y_MySQL.pdf
Desarrollo_web_con_PHP_y_MySQL.pdfDesarrollo_web_con_PHP_y_MySQL.pdf
Desarrollo_web_con_PHP_y_MySQL.pdfMauricioGArmoa
 

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

PHP Con symfony
PHP Con symfonyPHP Con symfony
PHP Con symfony
 
Desarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfonyDesarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfony
 
PHP en el 2015
PHP en el 2015PHP en el 2015
PHP en el 2015
 
Merry PHP
Merry PHPMerry PHP
Merry PHP
 
¿Cómo elegir el languaje y el framework de tu próxima aplicación web?
¿Cómo elegir el languaje y el framework de tu próxima aplicación web?¿Cómo elegir el languaje y el framework de tu próxima aplicación web?
¿Cómo elegir el languaje y el framework de tu próxima aplicación web?
 
Pucela testingdays testing_en_php
Pucela testingdays testing_en_phpPucela testingdays testing_en_php
Pucela testingdays testing_en_php
 
Guiacursophp sql
Guiacursophp sqlGuiacursophp sql
Guiacursophp sql
 
Curso introduccionphp sql
Curso introduccionphp sqlCurso introduccionphp sql
Curso introduccionphp sql
 
Introducción a PHP5
Introducción a PHP5Introducción a PHP5
Introducción a PHP5
 
Apuntes php
Apuntes phpApuntes php
Apuntes php
 
Programacion en php atavez de ejemplos
Programacion en php atavez de ejemplosProgramacion en php atavez de ejemplos
Programacion en php atavez de ejemplos
 
Apuntes php
Apuntes phpApuntes php
Apuntes php
 
Introducción a PHP
Introducción a PHPIntroducción a PHP
Introducción a PHP
 
Programacion iv sesion6 php
Programacion iv sesion6 phpProgramacion iv sesion6 php
Programacion iv sesion6 php
 
Clase1:PHP
Clase1:PHPClase1:PHP
Clase1:PHP
 
REPLs
REPLsREPLs
REPLs
 
Webinar - Radiografía actual del lenguaje PHP
Webinar - Radiografía actual del lenguaje PHPWebinar - Radiografía actual del lenguaje PHP
Webinar - Radiografía actual del lenguaje PHP
 
Frameworks para Php Adwa
Frameworks para Php AdwaFrameworks para Php Adwa
Frameworks para Php Adwa
 
Desarrollo_web_con_PHP_y_MySQL.pdf
Desarrollo_web_con_PHP_y_MySQL.pdfDesarrollo_web_con_PHP_y_MySQL.pdf
Desarrollo_web_con_PHP_y_MySQL.pdf
 
Plone en La Jornada
Plone en La JornadaPlone en La Jornada
Plone en La Jornada
 

Último

Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 

Último (10)

Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 

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