Расширения

PHP поставляется с около 86 расширениями (расширения ядра для массивов, классов, объектов и тд), каждое из которых в дополнение имеет в среднем около 30 функций.

Расширения статично скомпилируемые в PHP могут быть активированы с помощью –enable-extname или –with- extname. Другие должны быть добавленые и сконфигурированы в php.ini файле.

PEAR (PHP Extension and Application Repository) - это репозиторий/библиотека исходников, написанных на PHP для общих функций. С тех пор он превратился в систему пакетов, которая может распространять библиотеки 3их лиц, такие как PECL.

PECL (PHP Extension Community Library) - это репозиторий расширений PHP, написанный на С, доступ к которым предоставляется через систему PEAR. PECL делает процесс создания и распространения расширений PHP легким. Чтобы установить расширения, необходимо выполнить команду:

$ pecl install extname

Эта команда скачает исходники для extname, скомпилирует их и установит файл extname.so в вашу директорию для расширений extension_dir. Затем файл extname.so может быть загружен с помощью файла php.ini (добавив строчку extension=extname.so).

Для того, чтобы расширение можно было использовать, оно должно быть собрано, установлено и загружено. Расширения могут быть загружены с помощью директивы extension в файле php.ini, или путем использования функции dl().

Получение информации о расширениях

bool extension_loaded ( string $name ) Определяет загружено ли расширение.

<?php
if (!extension_loaded('gd')) {
    if (!dl('gd.so')) {
        exit;
    }
}
?>

Чтобы посмотреть все имена расширений, воспользуйтесь функцией phpinfo() или get_loaded_extensions().

array get_loaded_extensions ([ bool $zend_extensions = false ] ) Возвращает массив имен всех скомпилированных и загруженных модулей.

<?php
print_r(get_loaded_extensions());
/*
Array
(
   [0] => xml
   [1] => wddx
   [2] => standard
   [3] => session
   [4] => posix
   [5] => pgsql
   [6] => pcre
   [7] => gd
   [8] => ftp
   [9] => db
   [10] => calendar
   [11] => bcmath
)
*/
?>

Ядро PHP состоит из двух разных частей. На низком уровне выполняется Zend Engine (ZE).ZE занимается парсингом читабельного скрипта в машинный код и затем исполняет его на процессоре. ZE так же занимается управлением памяти, областями видимости переменных и вызовами функций.

На другой стороне этого разделения находится само ядро PHP.PHP занимается связью с уровнем SAPI (Server Application Programming Interface - Apache, IIS, CLI, CGI). Ядро также предоставляет слой для контроля проверок safe_mode и open_basedir, слой потоков для файлов и ввода/вывода сети с такими файлами как fopen(), fread() и fwrite().