Your SlideShare is downloading. ×
0
Build your own PHP extension
Build your own PHP extension
Build your own PHP extension
Build your own PHP extension
Build your own PHP extension
Build your own PHP extension
Build your own PHP extension
Build your own PHP extension
Build your own PHP extension
Build your own PHP extension
Build your own PHP extension
Build your own PHP extension
Build your own PHP extension
Build your own PHP extension
Build your own PHP extension
Build your own PHP extension
Build your own PHP extension
Build your own PHP extension
Build your own PHP extension
Build your own PHP extension
Build your own PHP extension
Build your own PHP extension
Build your own PHP extension
Build your own PHP extension
Build your own PHP extension
Build your own PHP extension
Build your own PHP extension
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Build your own PHP extension

2,815

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,815
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
40
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Build your own PHP Extension Hanoi PHP Day 2010                      Bui Dinh Ngoc AiTi-Aptech - CAH Trường đào tạo Lập trình viên Quốc tế  AiTi-Aptech
  • 2. PHP Extension ?
  • 3. PHP Extension
      • You've used extensions ?
      • php_mysql , gd , pdo , curl ,  ...
      •  
  • 4. PHP Extension  (Zend Engine)
      • PHP language  written in  C
      • PHP interpreter written in  C too
      • And PHP Extension must   written in  C
      • Another PHP implement may be using diffrence language
  • 5. Why and When need  PHP extension ?
      • Buildin PHP function are not enough 
      • Existing PHP extension are not enough
      • Pure PHP function are more slow
      • Have C lib can do this for you
  • 6. Prepare 
      • Ubuntu Linux 
      • GNU C Compiler , build , make utils 
      •   PHP 5 Dev package : sudo apt-get install php5-dev
      • PHP source code 
        • sudo svn checkout  http://svn.php.net/viewvc/php/php-src/trunk
        •  
  • 7. PHP-Src-5.3 tree directory
    •  
  • 8. ext_skel.sh script
    •  
  • 9. Write Hello World  Extension
    • //Example function call
    • <?php function hello_world () {     return 'Hello World' ; } ?>
  • 10.  
      • Run ext_skel script : sudo ./ext_skel –extname=hello
      •  
  • 11. Result
    •  
  • 12. phpize
    • The phpize command is used to prepare the build environment for a PHP extension.
    •  
    •  
  • 13.  
    •  
  • 14. Edit header file php_hello.h
  • 15. Insert your function  to header file
    • PHP_FUNCTION(hello);  /*My function here*/
  • 16. Edit C source file  - pre declare
    • const zend_function_entry simhash_functions[] = { PHP_FE(confirm_hello_compiled,    NULL)        /* For testing, remove later. */ PHP_FE( hello , NULL) {NULL, NULL, NULL}    /* Must be the last line in hello_functions[] */ };
  • 17. Implement function
    • PHP_FUNCTION(hello) { php_printf(“Hello, world!n”); }
  • 18. Build - Run some script
      • sudo ./configure
      • sudo make
      • ls modules -> hello.so
  • 19. Test
      • Deploy file hello.so
      • Check new extension is loaded by phpinfo function 
      • You also can test using existed hello.php script in ext dir
  • 20. Advance !
      • Build php function with parameter
      • Return value
      • Memory allocation 
      • Anti Memory leak
      • Array
      • String
      • Global variable
      • PHP.INI variable
      • ........
  • 21. Function with parameter
    • function hello_add ( $a , $b ) {      $sum = (int) $a + (float) $b ;     return $sum ; }
  • 22. Function with parameter
    • PHP_FUNCTION(hello_add) {     long a;     double b;      if ( zend_parse_parameters (ZEND_NUM_ARGS() TSRMLS_CC, &quot; ld&quot;, &a, &b ) == FAILURE) {         RETURN_NULL();     }             RETURN_DOUBLE(a + b);     }
  • 23. Return value
      • bool
      • int
      • double
      • resource
      • array
      • object
    Only 6 return type
  • 24. Return value (macro)
    • RETURN_LONG() for integer values
    • RETURN_DOUBLE() for floating point values
    • RETURN_BOOL() for true/false values
    • RETURN_NULL() for null value
    • .....
    •  
  • 25. Memory allocation
    •  
  • 26. Anti Memory leak
      • In C, memory management always very hard  .
      • Wrapper functions provides you with a safety net and some helpful debugging facilities
      • But convert existing C source can't use wrapper functions
    •  
  • 27. Reference
      • http://i-php.net/2010/10/t-build-extension-cho-php/
      • http://devzone.zend.com/article/1021
      • &quot;Programming PHP&quot; by Rasmus Lerdorf and Kevin 
    •  

×