Ir al contenido principal

Aprendiendo PHP - Nociones básicas (II)

En este artículo vamos a ver:
  • Qué es un identificador, una variable y una constante.
  • Tipos de datos. Cómo realizar conversiones entre ellos y funciones relacionadas.
  • Los operadores del lenguaje.


Identificador



  • Letras*, números y/o guión bajo. No pueden comenzar con un número.


  • Son sensibles a minúsculas y mayúsculas (case-sensitive), es decir, el identificador valor es distinto a Valor.


  • No pueden ser las palabras clave de PHP.


Color

num2

nombre_y_apellidos

Variable



  • Contienen valores de cualquier tipo de dato. No son fuertemente tipados, con lo que pueden ir cambiando de tipo de datos.


  • Se nombran con un signo dólar ($) seguido de un identificador.


  • Variables variables: cambiar el nombre de una variable de manera dinámica.


  • isset($var) – Función que devuelve true si la variable existe y es distinta de NULL


  • unset($var) – Se elimina la variable


  • empty($var) – Función que devuelve true si $var es “”, 0, “0”, NULL, false o array()


$total = 13;

$nombre = “Ana”;





Ej. Variables variables

$a = 'Nombre';

$$a = 'Carrie';

echo $Nombre; //Carrie

Constante



  • Valor escalar inmutable.


  • Se pueden utilizar desde cualquier parte del programa, son globales.


  • Se nombran con un identificador. Una buena práctica es definirlas con mayúsculas.


define('IS_FULL',true);

define('MAX',50);

define('MIN',13.10);

define('NOMBRE','Ana');

*Se tienen en cuenta los caracteres ASCII desde el 127 a 255

Ejemplo de identificadores:
  • Válidos: aux, _temporal, mi_nombre, var27
  • No válidos: 2aux, tem&poral, mi(nombre
El siguiente código ¿Mostrará 13 por pantalla?
<?php
   $numero = 13;
   echo $Numero;
?>
No, porque los identificadores son case-sensitive. Esto hace que $numero y $Numero sean dos variables distintas.


Las siguientes variables ¿Tienen el mismo valor?
<?php
$a = true;
   $b = True;
?>
Sí porque true, false y null son casos especiales. No son case-sensitive.


TIPOS DE DATOS

CASTING*

ESCALARES

Boolean

true/false (0)

(bool) / (boolean)

Integer

Decimal: 13, -8873

Octal: 0167, 0533

Hexadecimal: 0x3C6, -0x432

(int) / (integer)

$valor = (int)1.7 // 1

Float

Decimal: 4.123525

Exponencial: 2.32e5

(float) / (double) / (real)

$valor = (float)27 // 27.0

String

“Hola a todos”

([3] => 'a')

(string)

COMPUESTOS

Array

$col[0] = “Rojo”;

$col = array(“Rojo”);

(array)

$valor = 13;

$avalor = (array)$valor;

$avalor[0]; // 13

Objetos

$bar = new foo;

(object)

$color = “Rojo”;

$ob = (object)$color;

$color->scalar; // “Rojo”

OTROS

NULL

Variable que no tiene valor

resource

Referencia a recursos externos que no son usados nativamente por PHP (ej. manejar ficheros, imágenes, ...)

*Un casting consiste en convertir valores de un tipo de datos a otro.

Ejemplo de castings
<?php
   $val = 3.9;
   $entero = (int)$val; // 3
   $cadena = (string)$val; // 3.9

   $val = 'doce';
   $entero = (int)$val; // 0

   $val = '3nueve';
   $entero = (float)$val; //3
?>


FUNCIONES RELACIONADAS CON LOS TIPOS DE DATOS

string gettype($var)

Función que devuelve el tipo de datos de la variable $var.

$valor = “Hola”;

echo gettype($valor); // string

boolean settype($var,$type)

Función que convierte la variable $var al tipo $type. Si la conversión se realiza correctamente, devuelve true.

is_array(), is_bool(), is_float(), is_integer(), is_null(), is_numeric(), is_object(), is_resource(), is_string()

Un operador es un símbolo que especifica una acción particular en una operación.


TIPOS DE OPERADORES

Asignación

$a = 13;

$a +=13; $a -=13; $a *=13; $a /=13;

Aritméticos

$a + $b; $a++++$a;

$a - $b; $a----$a;

$a * $b;

$a / $b;

$a % $b; // Módulo

String

$a = “Ho” “la”;

$a .= “ Mundo”; // “Hola Mundo”

A nivel de bit

$a & $b   // Los bits que están activos en ambos

$a | $b    // Los bits activos en $a y $b

$a ^ $b   // Los bits activos en $a o $b, pero no en ambos

~$a         // Se activan los bits desactivados y viceversa

$a << $b // Se desplazan los bits de $a a la izquierda $b veces

$a >> $b // Se desplazan los bits de $a a la derecha $b veces

Lógicos

$a && $b; $a AND $b;  // true si ambos son true

$a || $b; $a OR $b;      // true si uno es true

!$a; NOT $a;                // true si es false; false si es true;

$a XOR $b;                  // true si sólo es true $a o $b

Igualdad

$a == $b     // true si ambos son iguales

$a != $b      // true si ambos son distintos

$a === $b  // true si ambos son iguales y con el mismo tipo

$a !== $b   // true si tienen distinto tipo o son distintos

Comparación

$a < $b; $a <= $b; $a > $b; $a >= $b;

($a == 13) ? 1 : 2;  // Si es 13 devuelve 1, si no devuelve 2

Variables por referencia

$a = 13;

$b = &$a;

$b = 27;  // $a => 27

Control de errores

Se coloca una @ delante de una expresión, para ignorar cualquier mensaje generado por ella.

Ejemplo de concatenación de Strings
<?php
   $nombre = 'Georgina';
   $apellido1 = 'Sparks';
   $apellido2 = 'Waldorf';
   $nombre_completo = $nombre . ' ' . $apellido1;
   $nombre_completo .= $apellido2;
   echo $nombre_completo; // Georgina Sparks Waldorf
?>

EJERCICIOS

1) ¿Qué se mostrará por pantalla al ejecutar el siguiente código?
<?php
   $res = 1 + "3 estaciones";
   echo $res;
?>
a) No se puede ejecutar porque hay un error de sintaxis
b) 4
c) 4 estaciones
d) 13 estaciones

2) ¿Qué valor tendrá $a al final de la ejecución?
<?php
   $a = 'Verde';
   $b = &$a;
   $b = 'Rojo';
   $c = &$a;
   $a = 'Azul';
   $c = 'Amarillo';
?>
a) Verde
b) Rojo
c) Azul
d) Amarillo

3) ¿Cuál es la salida del siguiente código?
<?php
   $a = 2;
   $a *= 3;
   --$a;
   echo $a++;
?>
a) 3
b) 4
c) 5
d) 6

4) ¿Cuál es el resultado de la suma?
<?php
   $a = 0xC;
   $b = 010;
   $c = 5;
   $res = $a + $b + $c;
?>
a) Alguna variable no es válida
b) 9
c) 24
d) 25

5) ¿Qué variable no es válida?
a) $_var
b) $1var
c) $VaR
d) &$var

6) ¿Cuál es el valor de $Rojo?
<?php
   $var = 'Rojo';
   $$var = 'Verde';
   echo $Rojo;
?>
a) Rojo
b) Verde
c) var
d) No se ejecuta por un error de sintaxis

7) Define una constante y una variable de tipo integer. Utiliza la función gettype para mostrar por pantalla el tipo de datos de la variable. Multiplícalas y muestra el resultado.

En los siguientes artículos se seguirá profundizando en estos temas.

Comentarios

Entradas populares de este blog

Leer un fichero properties con java.util.Properties

Los ficheros .properties son simples ficheros de texto que se suelen utilizar para guardar parámetros de configuración, en forma de pares clave-valor. Ejemplo de fichero: configuration.properties #User parameters user.name=Ana user.language=spanish Si estamos usando Java, podemos utilizar la clase java.util.Properties para leer los parámetros de este fichero: private static final String USER_NAME = "user.name"; private static final String USER_LANGUAGE = "user.language"; public void showProperties() throws Exception { Properties p = new Properties(); InputStream is = App.class.getResourceAsStream("/configuration.properties"); p.load(is); is.close(); String userName = p.getProperty(USER_NAME); String userCountry = p.getProperty(USER_LANGUAGE); System.out.println("userName: "+userName); System.out.println("userLanguage: "+userCountry); } Después de ejecutar este método, obtendríamos la siguiente salida: ...

JSF 2.0: Managed Beans (III)

Anteriormente ya hemos visto que cuando se declara un bean, tenemos que darle un scope: application, session, view, request, none. Un scope es un mapeo entre nombres y objetos que se almacena durante un determinado periodo de tiempo. En este post vamos a explicar cada uno de ellos. Si declaramos el bean desde el fichero faces-config.xml, indicamos el scope en <managed-bean-scope> y si queremos hacerlo con anotaciones, utilizaremos @{Application,Session,View,Request,None}Scoped Application Con este scope, se guarda la información durante toda la vida de la aplicación web, independientemente de todas las peticiones y sesiones que se realicen. Este bean se instancia con la primera petición a la aplicación y desaparece cuando la aplicación web se elimina del servidor. Si queremos que el bean se instancie antes de que se muestre la primera página de la aplicación, usamos la propiedad eager a true. @ManagedBean(eager=true) ó <managed-bean eager="true"> Session...

JSF 2.0: Message bundles

Los message bundles son ficheros .properties que guardan mensajes del tipo clave=valor. Si centralizamos todos los mensajes de nuestra aplicación en estos ficheros, es más fácil poder localizarlos si queremos realizar algún cambio y también nos ayuda para la internacionalización de la aplicación. Ejemplo: messages.properties (en src/java/com/examples) con dos mensajes name=Tu nombre: age=Tu edad: ¿Cómo los declaramos? 1) En cada página JSF donde lo necesitemos <f:loadBundle basename="com.examples.messages" var="msgs"/> 2) De manera global en faces-config.xml <application>      <resource-bundle>           <base-name>com.examples.messages</base-name>           <var>msg</var>      </resource-bundle> </application> Esta opción es más eficiente ya que sólo crea el bundle una v...