php扩展开发2--添加类

Posted 小小de细菌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php扩展开发2--添加类相关的知识,希望对你有一定的参考价值。

1.需要实现的细节

  • 实现一个person类
  • 实现一个doing方法和saying方法

2.第一个扩展

2.1创建类的扩展:

[[email protected] ext]# cd /usr/local/src/php-7.0.3/ext

[[email protected] ext]# ./ext_skel --extname=person   //运行ext_skel创建扩展的开发包

2.2 修改配置

[[email protected] 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])
  • ****dnl  在这是注释的意思。去掉dnl 就是打开 这一行的意思

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头中加上

/*定义类*/
zend_class_entry *person_ce;
/**
 * 声明构造函数
 * @param
 * @return
 */
ZEND_METHOD(person,__construct){
    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");

}

/*NULL  表示不传参数
*
*  ZEND_ACC_PUBLIC  说明是public  方法
* ZEND_ACC_CTOR  说明是构造函数
* ZEND_ACC_DTOR 说明是析构函数
*/ const zend_function_entry person_functions[] = { ZEND_ME(person, __construct,NULL, 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[] */ }; //将类和方法注册到zend PHP_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; }

执行  命令  phpize   

./configure

make 

make install  或者 手动cp

改更php.ini 加上[person] extenstion=person.so

 

使用扩展:

[[email protected] tests]# cat test.php
<?php

$n = new person();
echo $n->saying();
echo $n->doing();

[[email protected] tests]# php test.php
construct
saying
doing
destruct

 

 

 

该文章参考与:

原链接:http://www.djhull.com/phpext/php-ext-2.html

  • 请尊重本人劳动成功,可以随意转载但保留以下信息
  • 作者:岁月经年
  • 时间:2016年03月

以上是关于php扩展开发2--添加类的主要内容,如果未能解决你的问题,请参考以下文章

在扩展片段活动android的类中加载soundpool

PHP扩展开发之数字参数传递

运行/调试你的PHP代码

PHP必用代码片段

VS2015 代码片段整理

如何在linux安装php开发环境