<?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 => 'es',
  ),
  'this' => 
  array (
    0 => 'functions.internal.php',
    1 => 'Funciones internas',
    2 => 'Funciones internas',
  ),
  'up' => 
  array (
    0 => 'language.functions.php',
    1 => 'Las funciones',
  ),
  'prev' => 
  array (
    0 => 'functions.variable-functions.php',
    1 => 'Funciones variables',
  ),
  'next' => 
  array (
    0 => 'functions.anonymous.php',
    1 => 'Funciones an&oacute;nimas',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    '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">Funciones internas</h2>

  <p class="para">
   PHP dispone de numerosas funciones y estructuras estándar. También
   hay funciones que requieren extensiones específicas de PHP, sin
   las cuales se obtendrán errores fatales &quot;undefined function&quot;. Por ejemplo, para utilizar las
   funciones <a href="ref.image.php" class="link">de imágenes</a>,
   tales como <span class="function"><a href="function.imagecreatetruecolor.php" class="function">imagecreatetruecolor()</a></span>, se necesitará el
   soporte de <span class="productname">GD</span> en PHP. O bien, para utilizar
   <span class="function"><a href="function.mysqli-connect.php" class="function">mysqli_connect()</a></span>, se necesitará la extensión
   <a href="book.mysqli.php" class="link">MySQLi</a>. Hay funciones básicas que
   están incluidas en todas las versiones de PHP, tales como las funciones de
   <a href="ref.strings.php" class="link">strings</a> y las funciones de <a href="ref.var.php" class="link">variables</a>. Utilice
   <span class="function"><a href="function.phpinfo.php" class="function">phpinfo()</a></span> o
   <span class="function"><a href="function.get-loaded-extensions.php" class="function">get_loaded_extensions()</a></span> para saber qué extensiones están
   compiladas con su PHP. Tenga en cuenta también que
   numerosas extensiones están activadas por defecto, y que el manual de PHP está
   compartimentado por extensión. Véase los capítulos de
   <a href="configuration.php" class="link">configuración</a>,
   <a href="install.php" class="link">instalación</a> así como los
   detalles particulares de cada extensión, para saber cómo ponerlas en marcha.
  </p>
  <p class="para">
   Leer y comprender el prototipo de una función se describe en el apéndice
   <a href="about.prototypes.php" class="link">Cómo leer la definición de una
    función (prototipo)</a>.
   Es importante comprender qué devuelve una función, o si una
   función trabaja directamente sobre el valor de los parámetros proporcionados. Por
   ejemplo, <span class="function"><a href="function.str-replace.php" class="function">str_replace()</a></span> devolverá una string modificada,
   mientras que <span class="function"><a href="function.usort.php" class="function">usort()</a></span> trabaja directamente sobre la variable
   pasada como parámetro. Cada página del manual tiene información específica
   sobre cada función, como el número de parámetros, las evoluciones de
   especificaciones, los valores devueltos en caso de éxito o fracaso, y la
   disponibilidad según las versiones. Conocer bien estas diferencias,
   a veces sutiles, es crucial para programar bien en PHP.
  </p>
  <blockquote class="note"><p><strong class="note">Nota</strong>: 
   <span class="simpara">
    Si los parámetros dados a una función no son correctos, como pasar un <span class="type"><a href="language.types.array.php" class="type array">array</a></span> cuando se espera un <span class="type"><a href="language.types.string.php" class="type string">string</a></span>, el valor devuelto
    de la función es indefinido. En este caso, la función devolverá la mayoría de las veces un valor <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> pero esto es solo una convención y
    no puede ser considerado como una certeza.
    A partir de PHP 8.0.0, normalmente se lanza una excepción <span class="classname"><a href="class.typeerror.php" class="classname">TypeError</a></span>
    en este caso.
   </span>
  </p></blockquote>
  <blockquote class="note"><p><strong class="note">Nota</strong>: 
   <p class="para">
    En modo coercitivo, los tipos escalares de las funciones internas son nullables por defecto.
    A partir de PHP 8.1.0, pasar <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> a un parámetro de función interna que no está declarado
    como nullable está deprecado y emite una advertencia de deprecación en modo coercitivo para alinearse
    con el comportamiento de las funciones definidas por el usuario, donde los tipos escalares deben
    ser marcados como nullables explícitamente.
   </p>
   <p class="para">
    Por ejemplo, la función <span class="function"><a href="function.strlen.php" class="function">strlen()</a></span> espera que el parámetro <code class="literal">$string</code>
    sea de tipo <span class="type"><a href="language.types.string.php" class="type string">string</a></span> y no <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>.
    Por razones históricas, PHP permite pasar <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> para este parámetro en modo coercitivo.
    El parámetro es entonces convertido implícitamente a <span class="type"><a href="language.types.string.php" class="type string">string</a></span>, resultando en un valor <code class="literal">&quot;&quot;</code>.
    Tenga en cuenta que una <span class="classname"><a href="class.typeerror.php" class="classname">TypeError</a></span> es emitida en modo estricto.
   </p>
   <div class="informalexample">
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<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" a partir de 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" a partir de PHP 8.1.0<br />// bool(true)<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p></blockquote>
  <div class="sect2">
   <h3 class="title">Ver también</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">el índice de funciones</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); ?>