Heim > Backend-Entwicklung > PHP7 > Wie schreibe ich eine PHP7-Erweiterungsklasse?

Wie schreibe ich eine PHP7-Erweiterungsklasse?

醉折花枝作酒筹
Freigeben: 2023-02-18 06:54:01
nach vorne
2557 Leute haben es durchsucht

In PHP7 gibt es viele Erweiterungsklassen. Heute nehmen wir die Personenklasse als Beispiel, um die Methode „Freunde in Not“ zu implementieren.

Wie schreibe ich eine PHP7-Erweiterungsklasse?

1. Details, die implementiert werden müssen

Eine Personenklasse implementieren

Eine Doing-Methode und eine Sprichwortmethode implementieren

2. Die erste Erweiterung

2.1 Eine Erweiterung der Klasse erstellen:

[root@bogon ext]# cd /usr/local/src/php-7.0.3/ext
[root@bogon ext]# ./ext_skel --extname=person
Nach dem Login kopieren

2.2 Ändern Sie die Konfiguration

[root@bogon ext]# vim person/config.m4
dnl PHPARGWITH(person, for person support,
dnl Make sure that the comment is aligned:
dnl [ --with-person Include person support])
Nach dem Login kopieren

Ändern Sie zu:

PHPARGWITH(person, for person support,
dnl Make sure that the comment is aligned:
[ --with-person Include person support])
Nach dem Login kopieren

2.3 Implementierungscode

Fügen Sie

extern zend_class_entry *person_ce;
PHP_METHOD(person_ce,__construct);
PHP_METHOD(person_ce,saying);
PHP_METHOD(person_ce,doing);
Nach dem Login kopieren
im php_person.h-Header hinzu.

Fügen Sie

/** * 声明构造函数 * 
@param * @return */
ZEND_METHOD(person,__construct){        
zval *pThis;        
pThis = getThis();    
zend_printf("construct\n");
}
/** * 声明析造函数 *
 @param * @return */
ZEND_METHOD(person,__destruct){    
zend_printf("destruct\n");
}
ZEND_METHOD(person,doing){    
zend_printf("doing\n");
}
ZEND_METHOD(person,saying){    
zend_printf("saying\n");
}
//这个函数需要加上声明,去掉了没用的test函数const zend_function_entry person_functions[] = {    
ZEND_ME(person, __construct, global_config_arg, ZEND_ACC_PUBLIC|ZEND_ACC_CTOR)    
ZEND_ME(person,doing,NULL,ZEND_ACC_PUBLIC) ZEND_ME(person,saying,NULL,ZEND_ACC_PUBLIC)    
ZEND_ME(person,__destruct,NULL,ZEND_ACC_PUBLIC|ZEND_ACC_DTOR)    
PHP_FE_END  
/* Must be the last line in person_functions[] */
};
//将类和方法注册到zendPHP_MINIT_FUNCTION(person){       
zend_class_entry ce;       
INIT_CLASS_ENTRY(ce, "person", person_functions);       
person_ce = zend_register_internal_class(&ce TSRMLS_CC);       
zend_declare_property_null(person_ce,"saying",strlen("saying"),ZEND_ACC_PUBLIC);       
zend_declare_property_null(person_ce,"doing",strlen("doing"),ZEND_ACC_PUBLIC);    
return SUCCESS;
}
Nach dem Login kopieren
im person.c-Header hinzu

php.ini hinzufügen hinzufügen Erweiterte Verwendung von

* [root@bogon hello]# [root@localhost person]# ./configure && make && make install
Nach dem Login kopieren

2.6

[person] extenstion=person.so
Nach dem Login kopieren
Empfohlenes Lernen:

php-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWie schreibe ich eine PHP7-Erweiterungsklasse?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:imooc.com
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