Can't get array of functions for some standard PHP extensions

Viewed 52

I'm trying to get an array of function names for extensions Refletion, mysqlnd, xmlreader, Phar, pdo_mysql, xsl using standard get_extension_funcs() but it returns false instead of array of names. This is strange as it returns names for any other module. For example, it works for xmlwriter. But it does not work for xmlreader.

I have PHP 8.0.2. What am I doing wrong? Sample code:

$ php -r "var_dump(get_extension_funcs('xmlreader'));"
bool(false)

$ php -r "var_dump(get_extension_funcs('xmlwriter'));"
array(42) {
  [0]=>
  string(18) "xmlwriter_open_uri"
  [1]=>
  string(21) "xmlwriter_open_memory"
  [2]=>
  string(20) "xmlwriter_set_indent"
  [3]=>
  string(27) "xmlwriter_set_indent_string"
  [4]=>
  string(23) "xmlwriter_start_comment"
  [5]=>
  string(21) "xmlwriter_end_comment"
  [6]=>
  string(25) "xmlwriter_start_attribute"
  [7]=>
  string(23) "xmlwriter_end_attribute"
  [8]=>
  string(25) "xmlwriter_write_attribute"
  [9]=>
  string(28) "xmlwriter_start_attribute_ns"
  [10]=>
  string(28) "xmlwriter_write_attribute_ns"
  [11]=>
  string(23) "xmlwriter_start_element"
  [12]=>
  string(21) "xmlwriter_end_element"
  [13]=>
  string(26) "xmlwriter_full_end_element"
  [14]=>
  string(26) "xmlwriter_start_element_ns"
  [15]=>
  string(23) "xmlwriter_write_element"
  [16]=>
  string(26) "xmlwriter_write_element_ns"
  [17]=>
  string(18) "xmlwriter_start_pi"
  [18]=>
  string(16) "xmlwriter_end_pi"
  [19]=>
  string(18) "xmlwriter_write_pi"
  [20]=>
  string(21) "xmlwriter_start_cdata"
  [21]=>
  string(19) "xmlwriter_end_cdata"
  [22]=>
  string(21) "xmlwriter_write_cdata"
  [23]=>
  string(14) "xmlwriter_text"
  [24]=>
  string(19) "xmlwriter_write_raw"
  [25]=>
  string(24) "xmlwriter_start_document"
  [26]=>
  string(22) "xmlwriter_end_document"
  [27]=>
  string(23) "xmlwriter_write_comment"
  [28]=>
  string(19) "xmlwriter_start_dtd"
  [29]=>
  string(17) "xmlwriter_end_dtd"
  [30]=>
  string(19) "xmlwriter_write_dtd"
  [31]=>
  string(27) "xmlwriter_start_dtd_element"
  [32]=>
  string(25) "xmlwriter_end_dtd_element"
  [33]=>
  string(27) "xmlwriter_write_dtd_element"
  [34]=>
  string(27) "xmlwriter_start_dtd_attlist"
  [35]=>
  string(25) "xmlwriter_end_dtd_attlist"
  [36]=>
  string(27) "xmlwriter_write_dtd_attlist"
  [37]=>
  string(26) "xmlwriter_start_dtd_entity"
  [38]=>
  string(24) "xmlwriter_end_dtd_entity"
  [39]=>
  string(26) "xmlwriter_write_dtd_entity"
  [40]=>
  string(23) "xmlwriter_output_memory"
  [41]=>
  string(15) "xmlwriter_flush"
}

Even if I assume that some extensions does not have any functions, there are some extensions which SHOULD have functions, eg. mysqlnd should have mysqli_fetch_all() as noted in official docs.

Also, I assure that all those extensions are loaded and working fine.

$ php -r "var_dump(extension_loaded('mysqlnd'));"
bool(true)

$ php -r "var_dump(get_extension_funcs('mysqlnd'));"
bool(false)
1 Answers

FALSE is returned if there are no functions in that extension.

For example;

<?php 
  get_extension_funcs("xmlreader");

Returns;

false

because that extension defines the XMLReader class but not functions.

According JB comment

Related