Расширения
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().