mirror of
https://github.com/php/php-src.git
synced 2025-08-17 22:48:57 +02:00
- Add additional param to get_loaded_extensions() for returning Zend
extensions (Fixes #41278)
This commit is contained in:
parent
2d3577c84a
commit
c883e25485
2 changed files with 33 additions and 10 deletions
|
@ -10,9 +10,9 @@ var_dump(get_resource_type($fp));
|
|||
fclose($fp);
|
||||
var_dump(get_resource_type($fp));
|
||||
|
||||
var_dump(get_loaded_extensions(true));
|
||||
var_dump(gettype(get_loaded_extensions()));
|
||||
var_dump(count(get_loaded_extensions()));
|
||||
var_dump(count(get_loaded_extensions(true)));
|
||||
|
||||
define("USER_CONSTANT", "test");
|
||||
|
||||
|
@ -50,11 +50,9 @@ Warning: Supplied argument is not a valid resource handle in %s on line %d
|
|||
bool(false)
|
||||
string(6) "stream"
|
||||
string(7) "Unknown"
|
||||
|
||||
Warning: Wrong parameter count for get_loaded_extensions() in %s on line %d
|
||||
NULL
|
||||
string(5) "array"
|
||||
int(%d)
|
||||
int(2)
|
||||
|
||||
Warning: Wrong parameter count for get_defined_constants() in %s on line %d
|
||||
NULL
|
||||
|
@ -88,11 +86,9 @@ Warning: Supplied argument is not a valid resource handle in %s on line %d
|
|||
bool(false)
|
||||
unicode(6) "stream"
|
||||
unicode(7) "Unknown"
|
||||
|
||||
Warning: Wrong parameter count for get_loaded_extensions() in %s on line %d
|
||||
NULL
|
||||
unicode(5) "array"
|
||||
int(%d)
|
||||
int(2)
|
||||
|
||||
Warning: Wrong parameter count for get_defined_constants() in %s on line %d
|
||||
NULL
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
#include "zend_builtin_functions.h"
|
||||
#include "zend_constants.h"
|
||||
#include "zend_ini.h"
|
||||
#include "zend_extensions.h"
|
||||
|
||||
#undef ZEND_TEST_EXCEPTIONS
|
||||
|
||||
|
@ -1644,6 +1645,14 @@ static int add_extension_info(zend_module_entry *module, void *arg TSRMLS_DC) /*
|
|||
}
|
||||
/* }}} */
|
||||
|
||||
static int add_zendext_info(zend_extension *ext, void *arg TSRMLS_DC) /* {{{ */
|
||||
{
|
||||
zval *name_array = (zval *)arg;
|
||||
add_next_index_ascii_string(name_array, ext->name, 1);
|
||||
return 0;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
static int add_constant_info(zend_constant *constant, void *arg TSRMLS_DC) /* {{{ */
|
||||
{
|
||||
zval *name_array = (zval *)arg;
|
||||
|
@ -1658,17 +1667,35 @@ static int add_constant_info(zend_constant *constant, void *arg TSRMLS_DC) /* {{
|
|||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto array get_loaded_extensions(void) U
|
||||
/* {{{ proto array get_loaded_extensions([mixed categorize]) U
|
||||
Return an array containing names of loaded extensions */
|
||||
ZEND_FUNCTION(get_loaded_extensions)
|
||||
{
|
||||
if (ZEND_NUM_ARGS() != 0) {
|
||||
int argc = ZEND_NUM_ARGS();
|
||||
|
||||
if (argc != 0 && argc != 1) {
|
||||
ZEND_WRONG_PARAM_COUNT();
|
||||
}
|
||||
|
||||
array_init(return_value);
|
||||
|
||||
if (argc) {
|
||||
zval *modules;
|
||||
zval *extensions;
|
||||
|
||||
MAKE_STD_ZVAL(modules);
|
||||
array_init(modules);
|
||||
zend_hash_apply_with_argument(&module_registry, (apply_func_arg_t) add_extension_info, modules TSRMLS_CC);
|
||||
add_ascii_assoc_zval_ex(return_value, "PHP Modules", sizeof("PHP Modules"), modules);
|
||||
|
||||
MAKE_STD_ZVAL(extensions);
|
||||
array_init(extensions);
|
||||
zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) add_zendext_info, extensions TSRMLS_CC);
|
||||
add_ascii_assoc_zval_ex(return_value, "Zend Extensions", sizeof("Zend Extensions"), extensions);
|
||||
} else {
|
||||
zend_hash_apply_with_argument(&module_registry, (apply_func_arg_t) add_extension_info, return_value TSRMLS_CC);
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto array get_defined_constants([mixed categorize]) U
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue