Your SlideShare is downloading. ×
0
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
第1回PHP拡張勉強会
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

第1回PHP拡張勉強会

13,665

Published on

第1回PHP拡張勉強会用資料 …

第1回PHP拡張勉強会用資料
http://events.php.gr.jp/event.php/event_show/34
http://d.hatena.ne.jp/i_ogi/20080115/ExtStudyVol1

Published in: Technology
1 Comment
4 Likes
Statistics
Notes
  • If you want to check out a cool Drupal/PHP based site visit OracleLink.com - The Oracle Community Network

    http://www.oraclelink.com



    Built by CTISN
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
13,665
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
89
Comments
1
Likes
4
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. 1 PHP 2008/01/22 at photo by Sara Golemon (flickr.com/photos/pollita/2093670535/)
  • 2. ... (01/05 18:46)
  • 3. 10
  • 4. PHP • • » •
  • 5. •CodeGen_PECL Extension •
  • 6. • PC • http://phpext.g.hatena.ne.jp/i_ ogi/20080119/1200758118
  • 7. PHP (Extension)
  • 8. PHP Extension •C/C++ •PHP
  • 9. •C PHP » (PHP) •C USB »libusb
  • 10. •C • •
  • 11. ... C
  • 12. Extension ( ) •mysql DB PHP PDO •imagick •Xdebug PHP
  • 13. Extension ( ) PHP C •json (JSON ) •syck (YAML )
  • 14. Extension ( ) Extension •SimpleXML
  • 15. Extension ( ) •runkit •operator PHP
  • 16. • • » »Sara »PHP
  • 17. Extending and Embedding PHP • Sara Golemon • Yahoo! Inc runkit • •4 5
  • 18. PHP5 • , () • •
  • 19. PHP4 / 5
  • 20. C • PHP • 5.2 »5.1 5.2.2 »5.2.1 •C
  • 21. PHP4 is DEAD!!! • PHP4 •PHP4 PHP5 »
  • 22. welcome PHP5 •PHP5 OOP » »interface •SPL •SimpleXML
  • 23. PHP6 •Unicode • •
  • 24. CodeGen_PECL Extension
  • 25. • CodeGen_PECL XML • pecl-gen • • •
  • 26. CodeGen_PECL ? • XML PECL • XML • PHP5 PEAR PHP4/5 4 »5
  • 27. ext_skel • PHP4 ext_skel • • • CodeGen_PECL IF
  • 28. • CodeGen_PECL » » http://www.m-takagi.org/ docs/php/CodeGen_PECL/ • PHP 2 gihyo.jp » » http://gihyo.jp/dev/serial/01/php- module/0002
  • 29. CodeGen_PECL XML(Spec file)
  • 30. XML ( ) • ( ) • PECL » • » C or C++, platform(unix, win,all) » --with (header, lib path) Extension »
  • 31. XML ( ) • (function) ) code »proto( • »MINIT, RINIT »MSHUTDOWN, RSHUTDOWN »MINFO • OOP PHP4 OOP »CodeGen
  • 32. XML ( ) • (constant) • ini • • XML
  • 33. • • quot;study1quot; »
  • 34. PHP • : study1 • : study1_func() • ini : study1.ini • : STUDY1_CONSTANT
  • 35. • hello world • <?php function study1_greeting($name = quot;quot;) { if (strlen($name)) { echo quot;Hello, $name!quot;, PHP_EOL; } else { echo quot;Hello, World!quot;, PHP_EOL; } } ?>
  • 36. • »PHP // void funcname(void); // int int int funcname(int param); Example 12.
  • 37. // 1 2 // string funcname(string param1 [[, string param2], string param3]); // int funcname([int param = 42]); // int funcname(string param1, ...); // object foo funcname(resource bar param1); Example 12.
  • 38. • • » » •
  • 39. • 1 • • void study1_greeting([string name])
  • 40. XML(Spec )
  • 41. • XML <extension> • name → quot;study1quot; » <?xml version=quot;1.0quot; ?> <!DOCTYPE extension SYSTEM quot;../extension.dtdquot;> <extension name=quot;study1quot;> </extension>
  • 42. (function ) • name → • <proto> <function name=quot;study1_greetingquot;> <proto>void study1_greeting([string name])</proto> <code> </code> <test> </test> </function>
  • 43. (code ) •C •
  • 44. • PHP • : string name • »const char *name int name_len » • »
  • 45. • http://www.m- takagi.org/docs/php/CodeGen_P ECL/x304.html#AEN377
  • 46. <code> if (name_len) { //php_printf(quot;Hello, %s%squot;, name, PHP_EOL); php_printf(quot;Hello, quot;); PHPWRITE(name, name_len); php_printf(quot;!%squot;, PHP_EOL); } else { php_printf(quot;Hello, World!%squot;, PHP_EOL); } </code>
  • 47. (function test ) • • test <test> <code> </code> <result mode=quot;plainquot;> </result> </test>
  • 48. (function test ) • <test> <code>study1_greeting();study1_gre eting(quot;Japanquot;);</code> <result mode=quot;plainquot;>Hello, World! Hello, Japan!</result> </test>
  • 49. <?xml version=quot;1.0quot; ?> <!DOCTYPE extension SYSTEM quot;../extension.dtdquot;> <extension name=quot;study1quot;> <function name=quot;study1_greetingquot;> <proto>void study1_greeting([string name])</proto> <code> if (name_len) { //php_printf(quot;Hello, %s%squot;, name, PHP_EOL); php_printf(quot;Hello, quot;); PHPWRITE(name, name_len); php_printf(quot;!%squot;, PHP_EOL); } else { php_printf(quot;Hello, World!%squot;, PHP_EOL); } </code> <test> <code>study1_greeting();study1_greeting(quot;Japanquot;);</code> <result mode=quot;plainquot;>Hello, World! Hello, Japan!</result> </test> </function> </extension>
  • 50. XML specfile.xml
  • 51. pecl-gen
  • 52. pecl- pecl-gen specfile.xml
  • 53. OK $ pecl-gen specfile.xml Warning: no 'version' attribute given for <extension>, assuming 1.1.0 this may lead to compile errors if your spec file was created for an older version Creating 'study1' extension in './study1' Your extension has been created in directory ./study1. See ./study1/README and/or ./study1/INSTALL for further instructions.
  • 54. study1 cd $ cd study1
  • 55. •phpize ( ) •./configure •make •make test •sudo make install
  • 56. phpize $ phpize Configuring for: PHP Api Version: 20041225 Zend Module Api No: 20060613 Zend Extension Api No: 220060519
  • 57. ./configure $ ./configure checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for a sed that does not truncate output... /bin/sed checking for gcc... gcc checking for C compiler default output file name... a.out ... appending configuration tag quot;F77quot; to libtool configure: creating ./config.status config.status: creating config.h
  • 58. make $ make ... ---------------------------------------------------------------------- Libraries have been installed in: /home/iogiwara/work/extstudy/080122/2/study1/modules If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the `LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the `LD_RUN_PATH' environment variable during linking - use the `-Wl,--rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to `/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- Build complete. Don't forget to run 'make test'.
  • 59. make test • • make test php.ini extension
  • 60. make test $ make test ... ===================================================================== CWD : /home/iogiwara/work/extstudy/080122/2/study1 PHP : /usr/bin/php PHP_SAPI : cli PHP_VERSION : 5.2.3-1ubuntu6.3 ZEND_VERSION: 2.2.0 PHP_OS : Linux - Linux ubuntu-desktop 2.6.22-14-generic #1 ... INI actual : /etc/php5/cli/php.ini More .INIs : Extra dirs : ===================================================================== Running selected tests. PASS study1_greeting() function [tests/study1_greeting.phpt] ===================================================================== Number of tests : 1 1 Tests skipped : 0 ( 0.0%) -------- Tests warned : 0 ( 0.0%) ( 0.0%) Tests failed : 0 ( 0.0%) ( 0.0%) Tests passed : 1 (100.0%) (100.0%) --------------------------------------------------------------------- Time taken : 0 seconds =====================================================================
  • 61. sudo make install $ sudo make install Installing shared extensions: /usr/lib/php5/20060613+lfs/
  • 62. • »-d extension=○ »-r $ php -dextension=study1.so –r 'study1_greeting();' Hello, World!
  • 63. CodeGen_PECL
  • 64. •CodeGen_PECL ext_skel •
  • 65. • »http://gihyo.jp/dev/serial/01/php -module/0002?page=2 • •C • config.m4

×