php7에는 많은 확장 클래스가 있습니다. 오늘은 수행 방법과 말하기 방법을 구현하는 사람 클래스를 예로 들어 보겠습니다.
1. 구현해야 할 세부 사항
사람 클래스 구현
행동 방법 및 말하기 방법 구현
2. 첫 번째 확장
2.1 클래스 확장 만들기:
[root@bogon ext]# cd /usr/local/src/php-7.0.3/ext [root@bogon ext]# ./ext_skel --extname=person
2.2 구성 수정
[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])
다음으로 변경:
PHPARGWITH(person, for person support, dnl Make sure that the comment is aligned: [ --with-person Include person support])
2.3 구현 코드
php_person.h 헤더에
extern zend_class_entry *person_ce; PHP_METHOD(person_ce,__construct); PHP_METHOD(person_ce,saying); PHP_METHOD(person_ce,doing);추가
person.c 헤더에
/** * 声明构造函数 * @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; }추가
2.4 컴파일
* [root@bogon hello]# [root@localhost person]# ./configure && make && make install
2.5 확장 설치
php.ini 변경 추가
[person] extenstion=person.so
2.6의 확장된 사용
[root@bogon tests]# cat test.php <?php $n = new person(); echo $n->saying(); echo $n->doing(); [root@localhost tests]# php test.phpconstructsayingdoingdestruct
권장 학습: php 비디오 튜토리얼
위 내용은 php7 확장 클래스 작성 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!