From: Marcus Boerger Date: Mon, 20 Feb 2006 23:01:27 +0000 (+0000) Subject: - Add ReflectionExtension::getDependencies() to retrieve all dependencies X-Git-Tag: RELEASE_1_2~147 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0184485812069b6fb427df4fe271b59a734a6794;p=php - Add ReflectionExtension::getDependencies() to retrieve all dependencies of an extension as associative array "ModuleNeme" > "Relation" --- diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c index d27f2a75cc..aa7644f723 100644 --- a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c @@ -4076,6 +4076,57 @@ ZEND_METHOD(reflection_extension, getClassNames) } /* }}} */ +/* {{{ proto public array ReflectionExtension::getDependencies() + Returns an array containing all names of all extensions this extension depends on */ +ZEND_METHOD(reflection_extension, getDependencies) +{ + reflection_object *intern; + zend_module_entry *module; + zend_module_dep *dep; + + METHOD_NOTSTATIC_NUMPARAMS(reflection_extension_ptr, 0); + GET_REFLECTION_OBJECT_PTR(module); + + array_init(return_value); + + dep = module->deps; + + if (!dep) + { + return; + } + + while(dep->name) { + char *relation; + char *rel_type; + + switch(dep->type) { + case MODULE_DEP_REQUIRED: + rel_type = "Required"; + break; + case MODULE_DEP_CONFLICTS: + rel_type = "Conflicts"; + break; + case MODULE_DEP_OPTIONAL: + rel_type = "Optional"; + break; + default: + rel_type = "Error"; /* shouldn't happen */ + break; + } + + int len = spprintf(&relation, 0, "%s%s%s%s%s", + rel_type, + dep->rel ? " " : "", + dep->rel ? dep->rel : "", + dep->version ? " " : "", + dep->version ? dep->version : ""); + add_assoc_stringl(return_value, dep->name, relation, len, 0); + dep++; + } +} +/* }}} */ + /* {{{ method tables */ static zend_function_entry reflection_exception_functions[] = { {NULL, NULL, NULL} @@ -4234,6 +4285,7 @@ static zend_function_entry reflection_extension_functions[] = { ZEND_ME(reflection_extension, getINIEntries, NULL, 0) ZEND_ME(reflection_extension, getClasses, NULL, 0) ZEND_ME(reflection_extension, getClassNames, NULL, 0) + ZEND_ME(reflection_extension, getDependencies, NULL, 0) {NULL, NULL, NULL} }; /* }}} */