skeleton.c 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. %HEADER%
  2. #ifdef HAVE_CONFIG_H
  3. # include "config.h"
  4. #endif
  5. #include "php.h"
  6. #include "ext/standard/info.h"
  7. #include "php_%EXTNAME%.h"
  8. /* For compatibility with older PHP versions */
  9. #ifndef ZEND_PARSE_PARAMETERS_NONE
  10. #define ZEND_PARSE_PARAMETERS_NONE() \
  11. ZEND_PARSE_PARAMETERS_START(0, 0) \
  12. ZEND_PARSE_PARAMETERS_END()
  13. #endif
  14. /* {{{ void %EXTNAME%_test1()
  15. */
  16. PHP_FUNCTION(%EXTNAME%_test1)
  17. {
  18. ZEND_PARSE_PARAMETERS_NONE();
  19. php_printf("The extension %s is loaded and working!\r\n", "%EXTNAME%");
  20. }
  21. /* }}} */
  22. /* {{{ string %EXTNAME%_test2( [ string $var ] )
  23. */
  24. PHP_FUNCTION(%EXTNAME%_test2)
  25. {
  26. char *var = "World";
  27. size_t var_len = sizeof("World") - 1;
  28. zend_string *retval;
  29. ZEND_PARSE_PARAMETERS_START(0, 1)
  30. Z_PARAM_OPTIONAL
  31. Z_PARAM_STRING(var, var_len)
  32. ZEND_PARSE_PARAMETERS_END();
  33. retval = strpprintf(0, "Hello %s", var);
  34. RETURN_STR(retval);
  35. }
  36. /* }}}*/
  37. /* {{{ PHP_RINIT_FUNCTION
  38. */
  39. PHP_RINIT_FUNCTION(%EXTNAME%)
  40. {
  41. #if defined(ZTS) && defined(COMPILE_DL_%EXTNAMECAPS%)
  42. ZEND_TSRMLS_CACHE_UPDATE();
  43. #endif
  44. return SUCCESS;
  45. }
  46. /* }}} */
  47. /* {{{ PHP_MINFO_FUNCTION
  48. */
  49. PHP_MINFO_FUNCTION(%EXTNAME%)
  50. {
  51. php_info_print_table_start();
  52. php_info_print_table_header(2, "%EXTNAME% support", "enabled");
  53. php_info_print_table_end();
  54. }
  55. /* }}} */
  56. /* {{{ arginfo
  57. */
  58. ZEND_BEGIN_ARG_INFO(arginfo_%EXTNAME%_test1, 0)
  59. ZEND_END_ARG_INFO()
  60. ZEND_BEGIN_ARG_INFO(arginfo_%EXTNAME%_test2, 0)
  61. ZEND_ARG_INFO(0, str)
  62. ZEND_END_ARG_INFO()
  63. /* }}} */
  64. /* {{{ %EXTNAME%_functions[]
  65. */
  66. static const zend_function_entry %EXTNAME%_functions[] = {
  67. PHP_FE(%EXTNAME%_test1, arginfo_%EXTNAME%_test1)
  68. PHP_FE(%EXTNAME%_test2, arginfo_%EXTNAME%_test2)
  69. PHP_FE_END
  70. };
  71. /* }}} */
  72. /* {{{ %EXTNAME%_module_entry
  73. */
  74. zend_module_entry %EXTNAME%_module_entry = {
  75. STANDARD_MODULE_HEADER,
  76. "%EXTNAME%", /* Extension name */
  77. %EXTNAME%_functions, /* zend_function_entry */
  78. NULL, /* PHP_MINIT - Module initialization */
  79. NULL, /* PHP_MSHUTDOWN - Module shutdown */
  80. PHP_RINIT(%EXTNAME%), /* PHP_RINIT - Request initialization */
  81. NULL, /* PHP_RSHUTDOWN - Request shutdown */
  82. PHP_MINFO(%EXTNAME%), /* PHP_MINFO - Module info */
  83. PHP_%EXTNAMECAPS%_VERSION, /* Version */
  84. STANDARD_MODULE_PROPERTIES
  85. };
  86. /* }}} */
  87. #ifdef COMPILE_DL_%EXTNAMECAPS%
  88. # ifdef ZTS
  89. ZEND_TSRMLS_CACHE_DEFINE()
  90. # endif
  91. ZEND_GET_MODULE(%EXTNAME%)
  92. #endif
  93. %FOOTER%