Как мне получить код PHP, если установлено расширение PECL?
Я хочу, чтобы обработать случай, когда расширение не установлено.
Я думаю, что обычным способом было бы использовать расширенную загрузку .
if (!extension_loaded('gd')) { // If you want to try load the extension at runtime, use this code: if (!dl('gd.so')) { exit; } }
get_loaded_extensions подходит для счета.
Используйте следующее:
$ext_loaded = in_array('redis', get_loaded_extensions(), true);
Вы посмотрели на get_extension_funcs ?
Пара разных способов. Вы можете просто проверить наличие класса или даже функцию: class_exists
, function_exists
и get_extension_funcs
:
<?php if( class_exists( '\Memcached' ) ) { // Memcached class is installed } // I cant think of an example for `function_exists`, but same idea as above if( get_extension_funcs( 'memcached' ) === false ) { // Memcached isn't installed }
Вы также можете получить супер сложный и использовать ReflectionExtension
. Когда вы его создадите, он выкинет ReflectionException
. Если он не генерирует исключение, вы можете проверить другие вещи о расширении (например, версию).
<?php try { $extension = new \ReflectionExtension( 'memcached' ); } catch( \ReflectionException $e ) { // Extension Not loaded } if( $extension->getVersion() < 2 ) { // Extension is at least version 2 } else { // Extension is only version 1 }