70-类的原型zend_class_entry

原创 2016年04月27日 13:28:23

70-类的原型zend_class_entry

zend_class_entry是内核中定义的一个结构体,是内核实现PHP语言中类与对象的一个非常基础、关键的结构类型。他就相当于我们定义的类的原型。

如果我们想获得一个名字为myclass的类该怎么做呢?首先我们定义一个zend_class_entry变量,并为它设置名字,最后注册到runtime中去。

zend_class_entry *myclass_ce;


static zend_function_entry myclass_method[] = {
    { NULL, NULL, NULL }
};

ZEND_MINIT_FUNCTION(sample3)
{
    zend_class_entry ce;

    //"myclass"是这个类的名称。
    INIT_CLASS_ENTRY(ce, "myclass",myclass_method);
    myclass_ce = zend_register_internal_class(&ce TSRMLS_CC);
    return SUCCESS;
}

这样我们便定义了一个类myclass,而且我们可以正常的在PHP语言中使用它,比如:

<?php
$obj = new myclass();
?>

我们上面还定义了一个myclass_ce指针,他是干什么用的呢?当我们在扩展中对这个类进行操作,比如生成实例的时候,会使用到它,它的作用就类似与打开文件的操作句柄。

相关文章推荐

开发PHP扩展-提供一个可以被PHP使用的类

· 作者:laruence(http://www.laruence.com/) · 本文地址: http://www.laruence.com/2008/04/16/19.html ·...

JavaScript精炼---类(class)、构造函数(constructor)、原型(prototype)

类 Class 类的概念应该是面向对象语言的一个特色,但是JavaScript并不像Java,C++等高级语言那样拥有正式的类,而是多数通过构造器以及原型方式来仿造实现。在讨论构造器和原型方法前...

duplicate entry: org/apache/commons/codec/DecoderException.class编译不过问题解决

duplicate entry: org/apache/commons/codec/DecoderException.class编译不过问题解决Bug问题描述: compileSdkVersion 2...

【完美解决系列】duplicate entry: com/google/gson/annotations/Expose.class

项目在引入Retrofit2时,运行项目时会报出以下错误:Error:Execution failed for task ':app:transformClassesWithJarMergingFor...

Android程序编译时报错:duplicate entry: android/support/v4/content/res/TypedArrayUtils.class

编写不易,如有转载,请声明出处: 梦回河口:为了解决这个报错,弄到晚上快12点,现在怀着激动的心情记录一下解决过程1,报错全部内容如下:Error:Execution failed for task ...

第三方集成的坑如:java.util.zip.ZipException: duplicate entry: com/ta/utdid2/android/utils/AESUtils.class

集成友盟重新编译: 首先报错: To run dex in process, the Gradle daemon needs a larger heap. It currently has 91...

java.util.zip.ZipException: duplicate entry: org/apache/xmlbeans/xml/stream/Location.class

:ols:incrementalDebugJavaCompilationSafeguard UP-TO-DATE :ols:compileDebugJavaWithJavac UP-TO-DATE :...

Android:打release包时遇到的一个花式报错-ZipException: duplicate entry:xx/xx/xx/xx.class

编译时日志大概是这样的: 还有这样的: 解决过程: 因为项目在两周前刚发布过,所以两周前的时间节点肯定是可以打正式包的。。。reset之后,一样的报错。 那么肯定是开发环境出了问题咯。...
  • jym_ycc
  • jym_ycc
  • 2017年04月07日 10:18
  • 298

在学习使用Maven中碰到的报错Unable to process Jar entry[javassist/bytecode/DoubleInfo.class] from

Unable to process Jar entry[javassist/bytecode/DoubleInfo.class] from SEVERE: Servlet.service() fo...

Zend Smarty Class

  • 2014年02月11日 04:19
  • 2KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:70-类的原型zend_class_entry
举报原因:
原因补充:

(最多只允许输入30个字)