Heim > Backend-Entwicklung > PHP-Tutorial > Schreiben Sie die erste PHP-Erweiterung, um die Anzahl der Arrays zu berechnen

Schreiben Sie die erste PHP-Erweiterung, um die Anzahl der Arrays zu berechnen

WBOY
Freigeben: 2016-08-08 09:20:35
Original
800 Leute haben es durchsucht

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
Nach dem Login kopieren

#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
Nach dem Login kopieren

#Ö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])
Nach dem Login kopieren

#Fügen Sie

vim php_maxwelldu.h

PHP_FUNCTION(maxwelldu);
Nach dem Login kopieren

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}
};
```
Nach dem Login kopieren

#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
Nach dem Login kopieren
#Starten Sie Apache oder PHP-FPM neu

#Installierte Erweiterungen anzeigen

#Maxwelldu kann in phpinfo angezeigt werden
extension=maxwelldu.so
service httpd restart
service php-fpm restart
Nach dem Login kopieren

#Dann können Sie es in PHP-Skripten verwenden

php -m
Nach dem Login kopieren

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函数返回值一样
Nach dem Login kopieren
http ://www.360doc.com/content/13/1226/17 /14452132_340319333.shtml

http://www.nowamagic.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

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.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage