PHP extension development 01: The first extension [transfer], php01_PHP tutorial

WBOY
Release: 2016-07-12 08:57:16
Original
1106 people have browsed it

PHP extension development 01: The first extension [redirected], php01

Let’s first assume that the business scenario requires such an extension and provides 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>
Copy after login

The first step is to generate code
In order to facilitate extended development, PHP provides a code generator-like 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)
Copy after login

Just tell 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>/
Copy after login

At this time, the extended code framework of ccvita has come out.

The second step is to modify the configuration
and then modify the config.m4 file to delete the first dnl of the three lines 10, 11 and 12, that is,

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>)
Copy after login

Modify 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>)
Copy after login

The third step is to 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>
Copy after login

The fourth step is to compile the extension
After saving, start compiling

/usr/local/php/bin/<span>phpize
.</span>/configure --with-php-config=/usr/local/php/bin/php-<span>config
</span><span>make</span>
Copy after login

The fifth step is to 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/
Copy after login

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)

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1109450.htmlTechArticlePHP extension development 01: The first extension [transfer], php01 Let’s first assume that the business scenario requires such An extension that provides a function called ccvita_string. Its main function is to return a...
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template