<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/language.functions.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ru',
  ),
  'this' => 
  array (
    0 => 'functions.internal.php',
    1 => 'Внутренние, или встроенные, функции',
    2 => 'Внутренние, или встроенные, функции',
  ),
  'up' => 
  array (
    0 => 'language.functions.php',
    1 => 'Функции',
  ),
  'prev' => 
  array (
    0 => 'functions.variable-functions.php',
    1 => 'Функции переменных',
  ),
  'next' => 
  array (
    0 => 'functions.anonymous.php',
    1 => 'Анонимные функции',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ru',
    'path' => 'language/functions.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="functions.internal" class="sect1">
  <h2 class="title">Внутренние, или встроенные, функции</h2>

  <p class="para">
   PHP поставляется с набором языковых конструкций и встроенных функций.
   Отдельные функции требуют, чтобы PHP собрали с конкретными модулями,
   иначе PHP генерирует фатальные ошибки о неизвестной функции.
   Например, чтобы использовать <a href="ref.image.php" class="link">функции для работы с изображениями</a>
   наподобие <span class="function"><a href="function.imagecreatetruecolor.php" class="function">imagecreatetruecolor()</a></span>, требуется собрать PHP
   с поддержкой модуля <span class="productname">GD</span>.
   Требуется собрать PHP с поддержкой модуля <a href="book.mysqli.php" class="link">MySQLi</a>,
   чтобы использовать функцию <span class="function"><a href="function.mysqli-connect.php" class="function">mysqli_connect()</a></span>.
   Ядро каждой версии PHP включает
   <a href="ref.strings.php" class="link">функции обработки строк</a>
   и <a href="ref.var.php" class="link">функции для работы с переменными</a>.
   Вызов функции <span class="function"><a href="function.phpinfo.php" class="function">phpinfo()</a></span> или <span class="function"><a href="function.get-loaded-extensions.php" class="function">get_loaded_extensions()</a></span>
   покажет, какие модули загрузил PHP.
   Часть модулей PHP включает по умолчанию. Документация описывает каждый модуль отдельно.
   О настройке PHP подробнее рассказывают разделы «<a href="configuration.php" class="link">Конфигурация</a>»,
   «<a href="install.php" class="link">Установка</a>»
   и разделы, которые описывают отдельные модули.
  </p>
  <p class="para">
   Раздел
   «<a href="about.prototypes.php" class="link">Как читать определения функции</a>»
   объясняет, как читать и интерпретировать прототипы функций.
   Программист должен понимать, что возвращает функция, или как функция модифицирует аргументы,
   которые передали в функцию. Функция <span class="function"><a href="function.str-replace.php" class="function">str_replace()</a></span>, например,
   вернёт изменённую строку, тогда как функция <span class="function"><a href="function.usort.php" class="function">usort()</a></span>
   работает непосредственно с переменной, которую передали в функцию.
   О каждой функции рассказывает отдельная страница документации: описывает параметры,
   изменения поведения, значения, которые возвращает функция в случае успешного выполнения
   или когда возникает ошибка, доступность функции в одной или другой версии PHP.
   Знание важных и часто тонких различий — ключ к правильному PHP-коду.
  </p>
  <blockquote class="note"><p><strong class="note">Замечание</strong>: 
   <span class="simpara">
    Неясно, какое значение вернёт функция, если аргументы, которые передали в функцию,
    не соответствуют ожиданиям функции; например, передали
    массив (<span class="type"><a href="language.types.array.php" class="type array">array</a></span>) вместо строки (<span class="type"><a href="language.types.string.php" class="type string">string</a></span>).
    Скорее всего, функция вернёт <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>, но это только соглашение,
    на него нельзя полагаться.
    Начиная с PHP 8.0.0 в таком случае требуется выбрасывать исключение <span class="classname"><a href="class.typeerror.php" class="classname">TypeError</a></span>.
   </span>
  </p></blockquote>

  <blockquote class="note"><p><strong class="note">Замечание</strong>: 
   <p class="para">
    В нестрогом режиме типизации скалярные типы встроенных функций по умолчанию обнуляемы, —
    принимают значение <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>.
    Начиная с PHP 8.1.0 передача значения <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> в параметр встроенной функции,
    который не объявили обнуляемым, не рекомендуется, и в принудительном режиме
    выдаёт уведомление об устаревании, чтобы соответствовать поведению пользовательских функций,
    в которых требуется явно помечать скалярные типы как обнуляемые.
   </p>

   <p class="para">
    Функция <span class="function"><a href="function.strlen.php" class="function">strlen()</a></span>, например, ожидает, что параметр
    <code class="literal">$string</code> будет необнуляемой строкой (<span class="type"><a href="language.types.string.php" class="type string">string</a></span>).
    По историческим причинам в принудительном режиме PHP разрешает передавать
    значение <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> для этого параметра,
    и параметр неявно приводится к строке (<span class="type"><a href="language.types.string.php" class="type string">string</a></span>). В результате
    получается значение <code class="literal">&quot;&quot;</code>.
    В строгом режиме выбрасывается исключение <span class="classname"><a href="class.typeerror.php" class="classname">TypeError</a></span>.
   </p>

   <div class="informalexample">
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br />var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #0000BB">null</span><span style="color: #007700">));<br /></span><span style="color: #FF8000">// "Deprecated: Passing null to parameter #1 ($string) of type string is deprecated" начиная с PHP 8.1.0<br />// int(0)<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">str_contains</span><span style="color: #007700">(</span><span style="color: #DD0000">"foobar"</span><span style="color: #007700">, </span><span style="color: #0000BB">null</span><span style="color: #007700">));<br /></span><span style="color: #FF8000">// "Deprecated: Passing null to parameter #2 ($needle) of type string is deprecated" начиная с PHP 8.1.0<br />// bool(true)</span></span></code></div>
    </div>

   </div>
  </p></blockquote>

  <div class="sect2">
   <h3 class="title">Смотрите также</h3>
   <p class="para">
    <ul class="simplelist">
     <li><span class="function"><a href="function.function-exists.php" class="function">function_exists()</a></span></li>
     <li><a href="funcref.php" class="link">справочник функций</a></li>
     <li><span class="function"><a href="function.get-extension-funcs.php" class="function">get_extension_funcs()</a></span></li>
     <li><span class="function"><a href="function.dl.php" class="function">dl()</a></span></li>
    </ul>
   </p>
  </div>
 </div><?php manual_footer($setup); ?>