要件: maxwelldu という関数を含む最初の PHP 拡張機能を作成します。maxwelldu は配列の長さを計算できます (count と同じ)。
要件: C/C++ プログラミングを理解し、PHP プログラミングに精通していること
システム: CentOS6 .5
環境: LNMP (yum インストール)
最初のステップを踏んで PHP 拡張機能の作成を開始するには、ツールを使用します。このツールは PHP ソース コードに含まれているため、PHP ソース コードをダウンロードします。http: //php.net /downloads.php
cd ~ mkdir software cd software wget http://cn2.php.net/distributions/php-5.6.11.tar.gz tar zxvf php-5.6.11.tar.gz cd php-5.6.11/ext
#拡張機能プロジェクトを作成します。作成が完了すると、ext ディレクトリに追加の Sayhello フォルダーが作成されます。このフォルダーは拡張機能プロジェクトです
./ext_skel --extname=maxwelldu cd maxwelldu vim config.m4
#アクセス権を開き、削除します。 dnl と [PHP_ARG_ENABLE 行の前 --enable-maxwelldu ] この行の前の dnl
PHP_ARG_ENABLE(maxwelldu, whether to enable maxwelldu support, dnl Make sure that the comment is aligned: [ --enable-maxwelldu Enable maxwelldu support])
#ファイルの最後に
vim php_maxwelldu.h PHP_FUNCTION(maxwelldu);
を追加 #ファイルの最後に
vim maxwelldu.c ``` PHP_FUNCTION(maxwelldu){ zval *arr; //声明一个变量来接受数组参数 HashTable *arr_hash; //声明一个HashTable的变量 int array_count; //声明一个数组长度的变量 if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a", &arr)==FAILURE){ //判断接受的数组是>否是数组, 并把值放入arr中 return; } arr_hash = Z_ARRVAL_P(arr); //将数组转换成HashTable array_count = zend_hash_num_elements(arr_hash);//通过zend提供的函数获取一共有多少个元素 RETURN_LONG(array_count); //返回元素的个数 } ``` #然后修改zend_function_entry maxwelldu_functions[] = { 的内容如下 ``` const zend_function_entry maxwelldu_functions[] = { PHP_FE(maxwelldu,NULL) {NULL,NULL,NULL} }; ```
を追加 #Package
#php-configのディレクトリはPHPのインストール方法によって異なる場合があるので注意してください
phpize ./configure --with-php-c/bin/php-config make make test make install
#このとき、拡張機能は対応する拡張機能ディレクトリに自動的に配置されます
#追加するのと同じようにphp設定ファイルを変更しますmysql、memcache、その他の拡張機能を通常どおりに
#Apache または php-fpm を再起動します
extension=maxwelldu.so service httpd restart service php-fpm restart
#インストールされている拡張機能を表示します
php -m
#phpinfo で maxwelldu を表示できます
# その後、PHP スクリプトで使用できるようになります
<?php $arr = [ 1, 2, 3, 4, 5 ]; echo maxwelldu($arr) == count($arr), PHP_EOL; //打印出1就表示函数返回的数组个数和系统的count函数返回值一样
参考アドレス:
http://blog.csdn.net/heiyeshuwu/article/details/3453854
http://www.360doc.com/content/13/1226/17/14452132_340319333.shtml
http: //www.nowmagic.net/librarys/veda/detail/1467
http://blog.csdn .net/super_ufo/article/details/3863731
http://www.phppan.com/2010/02/ php-source-12-return_value/
http://www.ccvita.com/496.html
上記は、配列の数を計算するための最初の PHP 拡張機能の作成方法を内容も含めて紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。