Let’s first assume that the business scenario requires such an extension to provide a function called ccvita_string. Its main function is to return a period of characters. (This business scenario is too fake, just take a look at it) The corresponding PHP code may be like this:
<span>function</span> ccvita_string(<span>$str</span><span>){ </span><span>$result</span> = '<a href="'.<span>$str</span>.'">Link</a>'<span>; </span><span>return</span><span>$result</span><span>; }</span>
The first step is to generate the code
PHP provides a code generator-like code generator for the convenience of extended development Tool ext_skel, please refer to the description for details.
First we create a file ccvita.skel, its content is
<span>string</span> ccvita_string(<span>string</span> str)
, which tells ext_skel that there is a function called ccvita_string in the extension we want to do. Then execute
cd MooENV/src/php-<span>5.3</span>.<span>8</span>/ext/<span>.</span>/ext_skel --extname=ccvita --proto=<span>ccvita.skel cd ccvita</span>/
At this time, the extended code framework of ccvita has come out.
Second step, modify the configuration
Then modify the config.m4 file to delete the first dnl of the three lines 10, 11, and 12, that is, change
dnl PHP_ARG_WITH(ccvita, for ccvita support,<span>dnl Make sure that the comment is aligned: dnl </span><span>[</span><span> --with-ccvita Include ccvita support</span><span>]</span>)
to
PHP_ARG_WITH(ccvita, for ccvita support,<span>Make sure that the comment is aligned: </span><span>[</span><span> --with-ccvita Include ccvita support</span><span>]</span>)
The third step, implement the function
Modify the source code ccvita.c file
Find and modify the ccvita_string function to
<span>PHP_FUNCTION(ccvita_string) { </span><span>char</span> *str =<span> NULL; </span><span>int</span> argc =<span> ZEND_NUM_ARGS(); </span><span>int</span><span> str_len; </span><span>char</span> *<span>result; </span><span>if</span> (zend_parse_parameters(argc TSRMLS_CC, <span>"</span><span>s</span><span>"</span>, &str, &str_len) ==<span> FAILURE) </span><span>return</span><span>; str_len </span>= spprintf(&result, <span>0</span>, <span>"</span><span><a href=\"%.78s\">Link</a></span><span>"</span><span>, str); RETURN_STRINGL(result, str_len, </span><span>0</span><span>); }</span>
The fourth step, compile the extension
After saving, start compiling
/usr/local/php/bin/<span>phpize .</span>/configure --with-php-c/local/php/bin/php-<span>config </span><span>make</span>
The fifth step, add the extension
At this time, if everything goes well , the extension is already in modules/ccvita.so. The following is to add this extension to PHP so that our PHP program can call it.
<span>cp</span> modules/ccvita.so /usr/local/php/ext/<span>vim </span>/usr/local/php/etc/<span>php.ini extension</span>=/usr/local/php/ext/<span>ccvita.so #在php.ini文件最后增加这一行 service php</span>-<span>fpm restart #重启PHP服务 </span><span>cp</span> ccvita.php /data/www/wwwroot/default/
The relevant code can be cloned on my github, address: https://github.com/KimiChen/PHP-EXTThen you can access the ccvita.php file to test the extension. The next article will cover some more in-depth content.
Reposted from blog (http://www.ccvita.com/496.html)
The above introduces PHP extension development 01: the first extension, including aspects of content. I hope it will be helpful to friends who are interested in PHP tutorials.