4.1.1. Variables y constantes

Las variables en PHP no necesitan, a diferencia de otros lenguajes de programación ser declaradas específicamente dado que cuando a una variable se le asigna un valor esta se inicializa en forma automática determinando la cantidad de memoria necesaria para dicha variable.

Los nombres de las variables van precedidas del signo '$'. Los nombres de las variables son sensibles al uso de las mayúsculas y minúsculas. De tal forma que la sintaxis correcta es:

$nombreVariable = valor;

Por ejemplo, las siguientes asignaciones serían perfectamente validas

$miNovia = 'Gabriela Vergara <br>';
$nacio = 'Caracas, Venezuela<br>';
$cumple = '29 de Mayo <br>';
$signo = 'Géminis <br>'

El nombre de una variable también se conoce como identificador y debe cumplir las siguientes normas:

Ahora observe el siguiente código, después de ejecutarlo, use la opción ver código fuente de su navegador y encontraras solo código html.

<?php
 $foto = '<img src='../img/artistas/gabrielaVergara.jpg' />';
 $miNovia = 'Gabriela Vergara'; 
 $nacio = 'Caracas, Venezuela'; 
 $cumple = '29 de Mayo'; 
 $signo = 'Géminis'; 
 echo $foto;
 echo 'Mi novia: '.$miNovia.'<br />';
 echo 'Nacio: '.$nacio.'<br />';
 echo 'Cumpleaños: '.$cumple.'<br />';
 echo 'Signo: '.$signo.'<br />';
?>

Tipos de datos

PHP soporta los siguientes tipos y son definidos en tiempo de ejecución

Para forzar una variable a un tipo concreto use la función settype()

Dado que las variables no se declaran, el tipo se adquiere en tiempo de ejecución al tipo que usted quiera. Dependiendo de la información que contenga, una variable puede ser considerada de uno u otro tipo:

Usos de las variables
Tipo Asignación Resultado
Entero $edad = 45; Números sin decimales
Real $pi = 3.1415; Números en punto flotante.
Octal $a = 0123; Número octal (equivalente al 83 decimal).
Hexadecimal $b = 0x12; Número hexadecimal (equivalente al 18 decimal).
Alfanuméricas $c = 'a'; Variable alfanumérica

Ejemplos:

Expresión Resultado
$algo = 1 + 5; 6
$algo = 1 + '5'; 6
$algo = 3 + '4 es basura'; 7!!!
$algo = '4 es basura' + 7; 11!!!
$algo = '4.2 es basura' + 7.2 11.4!!!!!

Las cadenas (string) de caracteres se especifican entre uno de dos tipos de delimitadores (' o '). Encerrada entre doble comillas ' es posible emplear los siguientes caracteres especiales.

Caracteres protegidos

Secuencia Significado
\n Nueva línea
\r Retorno de carro
\t Tabulación horizontal
\\ Barra invertida
\$ Signo de dólar
\' Comillas dobles
\[0-7]{1,3} La secuencia de caracteres que coincide con la expresión regular es un carácter en notación octal
\x[0-9A-Fa-f]{1,2} La secuencia de caracteres que coincide con la expresión regular es un carácter en notación hexadecimal

Nuevamente, si intenta escapar cualquier otro carácter, la barra invertida será impresa también! Antes de PHP 5.1.1, la barra invertida en \{$var} no venía imprimiéndose.

A diferencia de otros lenguajes, PHP posee una gran flexibilidad a la hora de operar con variables. En efecto, cuando definimos una variable asignándole un valor, el computador le atribuye un tipo. Si por ejemplo definimos una variable entre comillas, la variable será considerada de tipo cadena:

$variable = '5'; //esto es una cadena

Sin embargo si pedimos en nuestro script realizar una operación matemática con esta variable, no obtendremos un mensaje de error sino que la variable cadena se tomara como numérica:


<?php
 //esto es una cadena
 $cadena = '25'; 
 //esto es un entero
 $entero = 15; 
 echo '$cadena + $entero = ';
 echo $cadena + $entero
?>

Este script dará como resultado '40'. La variable cadena ha sido asimilada en entero (aunque su tipo sigue siendo cadena) para poder realizar la operación matemática. Del mismo modo, podemos operar entre variables tipo entero y real.

PHP se encarga durante la ejecución de interpretar el tipo de variable necesario para el buen funcionamiento del programa. Esto podría parecer una ventaja pero en la práctica es un dolor de cabeza.

Sin embargo, en contraste, hay que tener cuidado en no cambiar mayúsculas por minúsculas ya que, en este sentido, PHP es sensible. Conviene por lo tanto trabajar ya sea siempre en mayúsculas o siempre en minúsculas para evitar este conflicto regularmente difícil de identificar.

Variables predefinidas

PHP dispone de una gran cantidad de variables que ya están definidas, y que tenemos a disposición para usarlas dentro de nuestros script. Para ver todas las variables que tenemos disponibles en nuestro servidor y versión de PHP, es necesario hacer un llamado a la función predefinida phpinfo().

Por ejemplo:

<?php
 echo phpinfo();
?>

Para obtener las variables predifinidas usaremos . $_SERVER. El cual es un array que contiene información, tales como cabeceras, rutas y localizaciones del código. Las entradas en este array son creadas por el servidor web. No existe garantía que cada servidor web proporcione todas estas entradas, ya que existen servidores que pueden omitir algunas o proporcionar otras que no se encuentran recogidas aquí. Un gran número de estas variables se encuentran recogidas en » especificación CGI 1.1, así que al menos debe esperar encontrar estas entradas. continuación se presentan algunas de las variables predefinidas. El resto de las variables las puede obtener de la página resultado del programa anterior.

Indice Descripción
DOCUMENT_ROOT Nombre del subdirectorio donde se ejecuta el script
HTTP_ACCEPT_LANGUAGE Idioma utilizado
HTTP_CONNECTION Indica los contenidos de la cabecera Conecction.
HTTP_REFERER Dirección de la página (si la hay) que emplea el agente de usuario para la página actual. Es definido por el agente de usuario. No todos los agentes de usuarios lo definen y algunos permiten modificar HTTP_REFERER como parte de su funcionalidad. En resumen, es un valor del que no se puede confiar realmente.
PHP_SELF Nombre del archivo donde se está ejecutando el script
QUERY_STRING Si existe, la cadena de la consulta de la petición de la página.
REMOTE_ADDR IP del host
REQUEST_METHOD Método de petición con el cual se accedio a la página
SCRIPT_FILENAME La ruta del script ejecutándose actualmente en forma absoluta
REMOTE_PORT Puerto desde donde se ejecuta el scipt
SERVER_SOFTWARE Nombre del servidor Web que está corriendo el script

Con los índices de la variable $_SERVER se pueden hacer cosas interesantes, como por ejemplo pedir la HTTP_ACCEPT_LANGUAGE y dependiendo de su contenido, enviar a los usuarios a sitios en su idioma. Para visualizar el contenido de cualquiera de estas variables predefinidas de PHP, use el siguiente código:

<?php
   echo '<b>Idioma utilizado:</b> '. $_SERVER['HTTP_ACCEPT_LANGUAGE'].'<br>';
   echo '<b>Cabecera:</b>         '. $_SERVER['HTTP_CONNECTION'].'<br>';
   echo '<b>IP HOST:</b>          '. $_SERVER['REMOTE_ADDR'].'<br>';
   echo '<b>Método de envio: </b>'.$_SERVER['REQUEST_METHOD'].'<br>';
   echo '<b>Versión Apache:</b>      '.$_SERVER['SERVER_SOFTWARE'].'<br>';
   echo '<b>Puerto: </b>              '.$_SERVER['REMOTE_PORT'].'<br>'; 
   echo '<b>Nombre Servidor: </b>       '.$_SERVER['SERVER_NAME'];
?>

Expansión de variables

Propiedad de PHP de incluir el valor de la variables en una cadena. Y funciona si la cadena se dilimita con ".

<?php
 $estado = 'VERACRUZ DE IGNACIO DE LA LLAVE';
 $escudo = '../img/escudoVeracruz.jpg';
 $capital = 'Xalapa'; 
 echo "<img src='$escudo'>";
 echo "El nombre oficial de nuestro Estado es ,$estado"; 
 echo ' su origen se';
 echo ' enmarca en una serie de acontecimientos históricos ';
 echo 'que marcaron un hito en la vida política, económica y ';
 echo 'social ';
 echo "de nuestro país. Su capital es $capital."; 
?>

Variables de variables

PHP puede reconocer y manejar variables que se refieran a otras variables. Se trata de variables cuyo contenido es el nombre de otras variables. Por ejemplo: Las líneas 4, 7 y 10 hacen uso de la propiedad de referenciar variables.

<?php
 $saludo = 'Programmation en PHP';
 $mensaje = 'saludo'; 
 echo $$mensaje.'<br>'; 
 $saludo = 'Programming in PHP';
 $mensaje = 'saludo'; 
 echo $$mensaje.'<br>'; 
 $saludo = 'Programacion en PHP';
 $mensaje = 'saludo'; 
 echo $$mensaje.'<br>';
?>

Otra forma de hacer uso de las variables de variables es:

<?php
 $estado1 = 'Aguascalientes';
 $estado2 = 'Baja California';
 $estado3 = 'Baja California Sur';
 $estado4 = 'Campeche';
 . . .
 $estado30 = 'Veracruz';
 $estado31 = 'Yucatan';
 $estado32 = 'Zacatecas';
 include('0303Variables10Funciones.php');
 $html = '';
 for($i = 1;$i <= 32; $i++) {
 $estado = ${'estado'.$i};
 $ncadena= acentos($estado);
 $html.= "<p><img src='estados/".$ncadena;
 $html.=".jpg'></p>";
 $html.= '<p>'.${'estado'.$i}.'</p>';
 }
 echo $html;
?>

Constantes

Importante: Un nombre de constante válido empieza con una letra o el carácter de subrayado, seguido por una serie letras, números, o subrayados. Los nombres de constantes en PHP no admiten espacios en blanco, signos de puntuación (acentos, ¡!, ¿?, etc), ni caracteres especiales(%, ñ, etc).

Sintaxis

Diferencias entre constantes y variables:

Ejemplo: Definición de constantes

<?php
 define('YARDA', 0.9144 );
 define('RECORD', 5048 );
 $cadena = 'El record de Dan Marino en Yardas ';
 $cadena .= 'por pase en una temporada es de ';
 $cadena .= RECORD. 'Yardas';
 $record = RECORD * YARDA; 
 $cadena .= 'Es decir $record metros';
 echo $cadena;
?>

Constantes predifinicas

En PHP exiten algunas constantes predefinidas que no requieren la instrucción: define('Nombre','Valor'). A continuación se presenta un ejemplo del uso de estas variables.

<? 
 $cadena = 'Ruta: '.__FILE__.'<br />';
 $cadena .= 'Esta es la línea: ';
 $cadena .= __LINE__.' del archivo<br />';
 $cadena .= 'Versión PHP: '.PHP_VERSION;
 $cadena .= 'Sistema operativo: '.PHP_OS;
 echo $cadena;
?>

Funciones de manejo de variables

PHP proporciona funciones para manipular las variables que se usaran intensivamente en secciones posteriores. Como por ejemplo:

Función Descripción Sintaxis
isset Determina si una variable tiene valor. Su argumento es un nombre de variable isset($var)
unset Elimina el contenido de una variable. El resultado es un NULL unset($var)
empty Regresa un true si la variable todavía no ha recibido valor empty($var)
gettype Permite conocer el tipo de datos de la variable gettype($var)
settype Permite modificar el tipo de dato de una variable settype($var, 'tipo')
lowercase Convierte el contenido de una variable alfanumérica en minúscula lowercase($var)
uppercase Convierte el contenido de una variable alfanumérica en mayúscula uppercase($var)
is_int Esta función regresa true si la variable pasada como argumento es entera; en caso contrario devuelve false. is_int($var)
is_float Regresa true si la variable pasada como argumento es de tipo float; en caso contrario regresa false. is_float($var)
is_number Regresa true si la variable pasada como argumentp es un número o una cadena numérica; en caso contrario, devuelve false. is_number($var)

Recuperar datos de un formulario mediante AJAX

En este ejemplo tenemos un formulario muy simple que recibe unos cuantos datos. Nada del otro mundo.

Si observa el código jQuery encontraras una línea cuya sintaxis es:

$post( url, data, función)

donde:

<!DOCTYPE html>
<html lang='es'>
<head>
  <meta charset='utf-8'>
  <meta name='viewport' content='width=device-width, initial-scale=1'>
  <meta http-equiv='x-ua-compatible' content='ie=edge'>
  <title>The jQuery Example</title>
  <link href='http://netdna.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
<div class='container'>	 		
  <form class='form-horizontal' id = "testform">
    <div class='form-group'>
      <label class='control-label col-sm-3' for='name'>Nombre </label>
      <div class='col-sm-3'>
        <input id='name' class='form-control' name='name' type='text'>
      </div>
    </div>

    <div class='form-group'>
      <label class='control-label col-sm-3' for='age'>Edad </label>
      <div class='col-sm-3'>
        <input id='age' class='form-control' name='age' type='text'>
      </div>
    </div>

      <div class='form-group'>
        <label class='control-label col-sm-3' for='sex'>Genero </label>
        <div class='col-sm-3'>
          <select name = "sex" class="form-control">
            <option value = "Femenino" selected>Femenino</option>
            <option value = "Masculino" selected>Masculino</option>
          </select></td>
        </div>
      </div>
      <div class="form-group"> 
        <div class="col-sm-offset-3 col-sm-1">
         <input class="btn btn-primary" id = "driver" type = "button" value = "Load Data" />
        </div>
      </div>   
   </form>
  <br>
  <div class='row'>
    <div class='col-sm-3 col-xs-offset-3 verde' id = "stage1"></div>  
  </div>
  <br>
  <div class='row'>
    <div class='col-sm-3 col-xs-offset-3 negro' id = "stage2"></div>  
  </div>     
</div>
  <!-- Coloca aquí tu código jQuery -->	
</body>
</html>
    .verde {
		background: green;
		font-size: 18px;
		color: white;
	} 
    .negro {
		background: black;
		font-size: 18px;
		color: white;
	}
<script src = "http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script>
  $(document).ready(function() {		
    $('#driver').click(function(event){
      $.post( 
        'serializeArray02.php',
        $("#testform").serializeArray(),
        function(data) {
          $('#stage1').html(data);
        }
      );
      var fields = $("#testform").serializeArray();
      $("#stage2").empty();
      jQuery.each(fields, function(i, field){
        $("#stage2").append(field.value + " ");
      });	
    });
  });
</script>
<?php
if( $_REQUEST["name"] ) {
   $name = $_REQUEST['name'];
   echo "Bienvenido ". $name.'
"; $age = $_REQUEST['age']; echo "Su edad : ". $age; $sex = $_REQUEST['sex'].'
'; echo "Su genero : ". $sex; } ?>