<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/about.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'es',
  ),
  'this' => 
  array (
    0 => 'about.prototypes.php',
    1 => 'C&oacute;mo leer la definici&oacute;n de una funci&oacute;n (prototipo)',
    2 => 'C&oacute;mo leer la definici&oacute;n de una funci&oacute;n (prototipo)',
  ),
  'up' => 
  array (
    0 => 'about.php',
    1 => 'Acerca del manual',
  ),
  'prev' => 
  array (
    0 => 'about.notes.php',
    1 => 'Acerca de las notas de los usuarios',
  ),
  'next' => 
  array (
    0 => 'about.phpversions.php',
    1 => 'Versiones de PHP documentadas en este manual',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    'path' => 'appendices/about.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="about.prototypes" class="sect1">
  <h2 class="title">Cómo leer la definición de una función (prototipo)</h2>
  <p class="para">
   Cada función en el manual está documentada para permitir una
   comprensión rápida. Saber descifrar el texto facilitará su aprendizaje. En lugar de depender de ejemplos listos para copiar/pegar, es más útil saber leer la definición de una función (prototipo).
   Así es cómo:
  </p>
  <blockquote class="note"><p><strong class="note">Nota</strong>: 
   <strong>
    Prerrequisitos: Conocimientos básicos de los
    <a href="language.types.php" class="link">tipos</a>.
   </strong><br />
   <p class="para">
    Aunque PHP es un lenguaje sin tipado fuerte, un conocimiento
    básico de los <a href="language.types.php" class="link">tipos</a> es esencial,
    ya que tienen significados importantes.
   </p>
  </p></blockquote>
  <p class="para">
   Las definiciones de funciones indican qué tipo de datos es
   <a href="functions.returning-values.php" class="link">devuelto</a>. Examinemos
   la función <span class="function"><a href="function.strlen.php" class="function">strlen()</a></span> como ejemplo:
  </p>
  <p class="para">
   <div class="example-contents screen">
<div class="cdata"><pre>
strlen

(PHP 4, PHP 5, PHP 7)
strlen -- Devuelve el tamaño de la cadena

Descripción
strlen ( string $string ) : int

Devuelve el tamaño de la cadena $string.
</pre></div>
   </div>
  </p>
  <p class="para">
   <table class="doctable table">
    <caption><strong>Explicaciones de la definición de la función</strong></caption>
    
     <thead>
      <tr>
       <th>Parte</th>
       <th>Descripción</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>
        strlen
       </td>
       <td>
        El nombre de la función.
       </td>
      </tr>

      <tr>
       <td>
        (PHP 4, PHP 5, PHP 7)
       </td>
       <td>
        strlen() está presente en todas las versiones de PHP 4, 5 y 7.
       </td>
      </tr>

      <tr>
       <td>
        ( string $string )
       </td>
       <td>
        El primer (y aquí el único) parámetro a proporcionar a esta función es el parámetro <code class="parameter">string</code>, que debe ser del tipo
        <span class="type"><a href="language.types.string.php" class="type string">string</a></span>.
       </td>
      </tr>

      <tr>
       <td>
        int
       </td>
       <td>
        Tipo de valor devuelto por esta función, que es, en este caso,
        un <span class="type"><a href="language.types.integer.php" class="type int">int</a></span> (es decir, el tamaño de una cadena se mide por
        un número).
       </td>
      </tr>

     </tbody>
    
   </table>

  </p>
  <p class="para">
   Podríamos reescribir este prototipo con una versión más genérica:
  </p>
  <p class="para">
   <div class="example-contents screen">
<div class="cdata"><pre>
      nombre de la función    ( tipo del parámetro   nombre del parámetro ) : tipo de retorno
</pre></div>
   </div>
  </p>
  <p class="para">
   Varias funciones necesitan varios parámetros,
   como <span class="function"><a href="function.in-array.php" class="function">in_array()</a></span>.
   Su prototipo es el siguiente:
  </p>
  <p class="para">
   <div class="example-contents screen">
<div class="cdata"><pre>
      in_array ( mixed $needle, array $haystack , bool $strict = false ) : bool
</pre></div>
   </div>
  </p>
  <p class="para">
   ¿Qué significa esto? in_array() devuelve
   un <a href="language.types.boolean.php" class="link">booléano</a> <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> en
   caso de éxito (el parámetro
   <code class="parameter">needle</code> se encontró en el array
   <code class="parameter">haystack</code>) o <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> si ocurre un error
   (el parámetro <code class="parameter">needle</code> no se encontró
   en el array <code class="parameter">haystack</code>). El primer
   parámetro se llama <code class="parameter">needle</code> y puede ser
   de diferentes <a href="language.types.php" class="link">tipos</a>: por lo tanto, lleva la mención <em>mixed</em>.
   El parámetro <code class="parameter">needle</code> (lo que estamos buscando)
   puede ser un valor escalar ( <span class="type"><a href="language.types.string.php" class="type string">string</a></span>, <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>,
   o <a href="language.types.float.php" class="link">float</a>), o incluso un <a href="language.types.array.php" class="link">array</a>.
   <code class="parameter">haystack</code> (el array,
   en el que estamos buscando) es
   el segundo parámetro. El tercer parámetro, <em>opcional</em>,
   <code class="parameter">strict</code>,
   es opcional. Todos los parámetros opcionales tienen un valor por defecto;
   si el valor por defecto es desconocido, se muestra como <code class="literal">?</code>.
   El manual indica que el parámetro <code class="parameter">strict</code> vale por
   defecto <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>. Consulte el manual de cada función para saber
   cómo funciona.
  </p>
  <p class="para">
   Además, el signo &amp; (e comercial) añadido al principio del parámetro de
   una función permite pasar este parámetro por
   <a href="language.references.pass.php" class="link">referencia</a>, como en este ejemplo:
  </p>
  <p class="para">
   <div class="example-contents screen">
<div class="cdata"><pre>
       preg_match ( string $pattern , string $subject , array &amp;$matches = null,
       int $flags = 0 , int $offset = 0 ) : int|false
</pre></div>
     </div>
  </p>
  <p class="para">
   En este ejemplo, se puede ver que el tercer parámetro opcional
   <code class="parameter">&amp;$matches</code> será pasado por referencia.
  </p>
  <p class="para">
   También hay funciones con información más compleja
   sobre las versiones de PHP. Tomemos
   <span class="function"><a href="function.html-entity-decode.php" class="function">html_entity_decode()</a></span> como ejemplo:
  </p>
  <p class="para">
   <div class="example-contents screen">
<div class="cdata"><pre>
(PHP 4 &gt;= 4.3.0, PHP 5, PHP 7)
</pre></div>
   </div>
  </p>
  <p class="para">
   Esto significa que esta función solo está disponible
   desde PHP 4.3.0.
  </p>
 </div><?php manual_footer($setup); ?>