Anforderungen: Schreiben Sie die erste PHP-Erweiterung, die eine Funktion namens maxwelldu enthält. maxwelldu kann die Länge eines Arrays berechnen (dasselbe wie count)
Anforderungen: C/C-Programmierung verstehen und vertraut sein mit PHP-Programmierung
System: CentOS6.5
Umgebung: LNMP (Yum-Installation)
Um den ersten Schritt zu machen und mit dem Schreiben von PHP-Erweiterungen zu beginnen, verwenden Sie ein Tool, und dieses Tool befindet sich im PHP-Quellcode, also laden wir einen PHP-Quellcode herunter, 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
#Erstellen Sie ein Erweiterungsprojekt, nachdem die Erstellung abgeschlossen ist. Es wird eine zusätzliche Sayhello-Datei im ext-Ordner geben. Dieser Ordner ist unser Erweiterungsprojekt
./ext_skel --extname=maxwelldu cd maxwelldu vim config.m4
#Öffnen Sie die Berechtigung, entfernen Sie die dnl vor der Zeile PHP_ARG_ENABLE und die dnl vor der [. --enable-maxwelldu ] Zeile
PHP_ARG_ENABLE(maxwelldu, whether to enable maxwelldu support, dnl Make sure that the comment is aligned: [ --enable-maxwelldu Enable maxwelldu support])
#Fügen Sie
vim php_maxwelldu.h PHP_FUNCTION(maxwelldu);
am Ende der Datei hinzu. Es kann anders sein
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} }; ```
#Zu diesem Zeitpunkt , die Erweiterung wird automatisch im entsprechenden Erweiterungsverzeichnis abgelegt
#Ändern Sie die PHP-Konfigurationsdatei, genau wie das normale Hinzufügen von MySQL, Memcache und anderen Erweiterungen
phpize ./configure --with-php-c/bin/php-config make make test make install
#Installierte Erweiterungen anzeigen
#Maxwelldu kann in phpinfo angezeigt werdenextension=maxwelldu.so service httpd restart service php-fpm restart
#Dann können Sie es in PHP-Skripten verwenden
php -m
Referenzadresse:
http://blog.csdn.net/heiyeshuwu/article/details/3453854
<?php $arr = [ 1, 2, 3, 4, 5 ]; echo maxwelldu($arr) == count($arr), PHP_EOL; //打印出1就表示函数返回的数组个数和系统的count函数返回值一样
Das Obige stellt das Schreiben der ersten PHP-Erweiterung zur Berechnung der Array-Anzahl vor, einschließlich des Inhalts. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.