codemotion madrid 2013 - [php] desarrollo de extensiones en c c++
DESCRIPTION
¿Que es PHP? “PHP is a serverside scripting language designed for web development but also used as a general-purpose programming language”. -wikipedia 9. ¿Que es una extensión? “An extension in PHP is in fact a module providing some functionality to the PHP Engine.” - Shahar EvronTRANSCRIPT
![Page 1: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/1.jpg)
[PHP] Desarrollo de extensiones en c/c++CODEMOTION Madrid 2013
![Page 2: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/2.jpg)
Un poquito de SPAM
![Page 3: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/3.jpg)
Un poquito de SPAM
Daniel González@desarrolla2
![Page 4: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/4.jpg)
Un poquito de SPAM
@phpmad
![Page 5: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/5.jpg)
Objetivo
![Page 6: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/6.jpg)
Objetivo
![Page 7: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/7.jpg)
Introducción teóricaDesarrollo de extensiones en C/C++
![Page 8: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/8.jpg)
¿Que es PHP?
“PHP is a server-side scripting language designed for web development but also used as a general-purpose programming language”. -wikipedia
![Page 9: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/9.jpg)
¿Que es una extensión?
“An extension in PHP is in fact a module providing some functionality to the PHP Engine.” - Shahar Evron
![Page 10: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/10.jpg)
¿Para que extender PHP?
![Page 11: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/11.jpg)
¿Para que extender PHP?
![Page 12: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/12.jpg)
¿Para que extender PHP?
![Page 13: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/13.jpg)
¿Por que no hacerlo?
![Page 14: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/14.jpg)
¿Por que no hacerlo?
“spaPHPetti code”
![Page 15: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/15.jpg)
¿Por que no hacerlo?
![Page 16: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/16.jpg)
¿Por que no hacerlo?
![Page 17: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/17.jpg)
¿Por que no hacerlo?
![Page 18: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/18.jpg)
¿Por que no hacerlo?
![Page 19: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/19.jpg)
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);}
![Page 20: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/20.jpg)
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;}
![Page 21: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/21.jpg)
strtoupper
<?phpecho "Testing strtoupper: ";$test = "abCdEfg";$upper = strtoupper($test);if ($upper == "ABCDEFG") { echo("passed\n");} else { echo("failed!\n");}?>
![Page 22: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/22.jpg)
strtoupper
--TEST--Test strtoupper on non-ASCII characters--SKIPIF--<?phpif (!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--
![Page 23: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/23.jpg)
¿Por que no hacerlo?
github.com/php/php-srcrepositorio git desde 1999140 committers50,000 commits ~ 10 committers / año
![Page 24: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/24.jpg)
¿Por que no hacerlo?
github.com/symfony/symfonyrepositorio git desde 2010770 committers15,000 commits ~ 250 committers / año
![Page 25: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/25.jpg)
¿Por que no hacerlo?
![Page 26: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/26.jpg)
¿Que necesito?
código fuente de phpentorno de compilaciónconocimientos de c/c++conocimientos de php ( bajo el capó )
![Page 27: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/27.jpg)
Bajo el capó
Zend Engine
Zend Extension APIZend API
PHP Core
Extensions
PHP API
SAPI
Application ( apache, cli, nginx, php-fpm )
PHP Architecture
![Page 28: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/28.jpg)
Bajo el capó
PHP Startup
Module Initialization and configuration
Child
Exit
Fork Child
Exit
Fork
SAPI Startup
MINIT Signals
RINIT Signals
RSHUTDOWN
Engine Init
Sandboxing
![Page 29: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/29.jpg)
Bajo el capó
PHP Code LEXER Expressions PARSER /COMPILER OP Code
![Page 30: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/30.jpg)
Ejemplos prácticosDesarrollo de extensiones en C/C++
![Page 31: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/31.jpg)
RelaxingCup();Desarrollo de extensiones en C/C++
![Page 32: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/32.jpg)
PrimeNumbers->factorize(1000,10000);Desarrollo de extensiones en C/C++
![Page 33: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/33.jpg)
afile_put_contents();Desarrollo de extensiones en C/C++
![Page 34: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/34.jpg)
afile_put_contents
Exit
ChildRINIT
Signals
Module Initialization and configurationMINIT
Signals fopen
fwritefclose
RSHUTDOWN
![Page 35: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/35.jpg)
Para terminar ...Desarrollo de extensiones en C/C++
![Page 36: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/36.jpg)
Conclusiones
![Page 37: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/37.jpg)
Referencias
https://wiki.php.net/internals/references
![Page 38: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/38.jpg)
¿Preguntas?Desarrollo de extensiones en C/C++
![Page 39: Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++](https://reader034.vdocuments.us/reader034/viewer/2022051610/548f6409b479590d2b8b50da/html5/thumbnails/39.jpg)
¡Gracias!Desarrollo de extensiones en C/C++