如何从字符串创建类的新实例



在我的PHP扩展(用C编写)中,我有一个带有类名的字符串。更准确地说,我有名称空间+类名。例如:Dumb \ Factory

这个类实现了在我的扩展中定义的接口,它有一个类条目

 zend_class_entry *garlic_servicemanager_factoryinterface_ce;

并实现了一个名为createService 的公共方法

在另一个类中,我有一个名为get的方法,我检查参数是否是字符串。当它是String时,我想实例化该类并调用该方法,但我不知道如何从C代码中实例化PHP类。

如何从字符串实例化类,以便调用接口定义的方法?

你必须从字符串中找到class_entry,你可以像下面这样做。。。

zend_class_entry *ce = NULL;
char *className = "DumbFactory";
zend_class_entry **pce;
if (zend_lookup_class(className, strlen(className ), &pce TSRMLS_CC) == FAILURE) {
    zend_throw_exception_ex(NULL, 0 TSRMLS_CC, "Class %s does not exist", className);
    return;
}
ce = *pce;
// Now you have got "zend_class_entry" and 
// now you can create N number of objects out of it.
// Check the Reflection API for more info.

相关内容

  • 没有找到相关文章

最新更新