第1回PHP拡張勉強会

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

2 comments

Comments 1 - 2 of 2 previous next Post a comment

  • + OracleLink.com OracleLink.com 2 years ago
    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
  • + guest7684d4 guest7684d4 2 years ago
    Thankk you soo m :)



    -----

    دردشة

    شات

    منتديات

    دردشه سعوديه

    تحميل

    صور ابها
Post a comment
Embed Video
Edit your comment Cancel

3 Favorites

第1回PHP拡張勉強会 - Presentation 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. • • \"study1\" »
  34. PHP • : study1 • : study1_func() • ini : study1.ini • : STUDY1_CONSTANT
  35. • hello world • <?php function study1_greeting($name = \"\") { if (strlen($name)) { echo \"Hello, $name!\", PHP_EOL; } else { echo \"Hello, World!\", 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 → \"study1\" » <?xml version=\"1.0\" ?> <!DOCTYPE extension SYSTEM \"../extension.dtd\"> <extension name=\"study1\"> </extension>
  42. (function ) • name → • <proto> <function name=\"study1_greeting\"> <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(\"Hello, %s%s\", name, PHP_EOL); php_printf(\"Hello, \"); PHPWRITE(name, name_len); php_printf(\"!%s\", PHP_EOL); } else { php_printf(\"Hello, World!%s\", PHP_EOL); } </code>
  47. (function test ) • • test <test> <code> </code> <result mode=\"plain\"> </result> </test>
  48. (function test ) • <test> <code>study1_greeting();study1_gre eting(\"Japan\");</code> <result mode=\"plain\">Hello, World! Hello, Japan!</result> </test>
  49. <?xml version=\"1.0\" ?> <!DOCTYPE extension SYSTEM \"../extension.dtd\"> <extension name=\"study1\"> <function name=\"study1_greeting\"> <proto>void study1_greeting([string name])</proto> <code> if (name_len) { //php_printf(\"Hello, %s%s\", name, PHP_EOL); php_printf(\"Hello, \"); PHPWRITE(name, name_len); php_printf(\"!%s\", PHP_EOL); } else { php_printf(\"Hello, World!%s\", PHP_EOL); } </code> <test> <code>study1_greeting();study1_greeting(\"Japan\");</code> <result mode=\"plain\">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 \"F77\" 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

+ ogiogi, 2 years ago

custom

11137 views, 3 favs, 5 embeds more stats

第1回PHP拡張勉強会用資料
http://events.ph more

More info about this document

© All Rights Reserved

Go to text version

  • Total Views 11137
    • 11039 on SlideShare
    • 98 from embeds
  • Comments 2
  • Favorites 3
  • Downloads 80
Most viewed embeds
  • 87 views on http://d.hatena.ne.jp
  • 8 views on http://stoic.jp
  • 1 views on http://mgw.hatena.ne.jp
  • 1 views on http://mura.stoic.jp
  • 1 views on http://localhost

more

All embeds
  • 87 views on http://d.hatena.ne.jp
  • 8 views on http://stoic.jp
  • 1 views on http://mgw.hatena.ne.jp
  • 1 views on http://mura.stoic.jp
  • 1 views on http://localhost

less

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

Cancel
File a copyright complaint
Having problems? Go to our helpdesk?

Categories

Tags