You are on page 1of 24

Capítulo

PHP
HP, "hijo" del Código Abierto (Open Características del lenguaje
Source), es en la actualidad uno de
los lenguajes de programación que Como todo lenguaje, PHP dispone de sus
cuenta con más adeptos en la Red, propias especificaciones, sintaxis, variables,
que crecen cada día por su sencillez a la hora uso de éstas dentro y fuera de funciones,
de ser programado, su solidez y su constante funciones predefinidas, etc. En este apartado
innovación.
estudiaremos las de mayor relevancia, inten-
tando darle un enfoque práctico a la explica-
ción, por lo que antes de comenzar cree en la
¿Qué es PHP? raíz de su servidor una nueva carpeta con el
nombre phpBasicos. En esta carpeta (que será
PHP son las siglas de PHP Hypertext wwwroot de AppServ o htdocs de Apache, depen-
Preprocessor (Preprocesador de Hipertexto), un diendo de su instalación) alojaremos los
lenguaje interpretado de alto nivel que se distintos documentos .php que iremos crean-
inserta en documentos .html y que se ejecuta do a medida que avanzamos en los conteni-
en el lado del servidor, a diferencia de otros dos de este capítulo.
lenguajes como JavaScript que son interpreta-
dos en el lado del cliente (el navegador del
usuario) Cuando el código de las páginas se Nota: Si en un determinado mo-
interpreta en el servidor el usuario recibe en mento sus documentos PHP no
su navegador el producto de esos procesos sin funcionan o no lo hacen como
poder determinar qué código lo ha producido. debieran puede encontrar los archi-
vos correspondientes a este capítulo
PHP se inserta en los documentos mediante el
del libro en la carpeta material/cap3/
uso de etiquetas especiales, como "<7php", o php/ del CD. Además, tras cada
simplemente "<7"y "7>"para indicar el co- apartado de esta sección que tenga
mienzo y final del código PHP, respectivamen- disponible un archivo de práctica
te. Por ejemplo: encontrará referenciado el nombre
<?php con el que puede encontrarlo en
echo "hola desde PHP"; dicha carpeta.
?>

o bien:

Características generales de PHP


echo "hola desde PHP";
?> Cuando escribimos código en lenguaje PHP es
muy importante recordar que al finalizar cada
Para editar o escribir páginas o código que sentencia ha de agregarse un punto y coma:
incluya PHP puede usar desde un editor de
texto hasta un editor HTML de su preferencia. $miVariable = 5

PHP 109
hola mundo
Esta expresión es incorrecta y generará un
error. En cambio, la expresión:
tal y como puede ver en la figura 3.1. Puede
$miVariable ~ 5; encontrar el documento holaMundo.php en la
I I
carpeta material! capitul03 php del CD.
sí es correcta. A medida que escriba sus
scripts de PHP puede que desee añadir co-
mentarios para una mejor comprensión del
código. Esto puede realizarlo anteponiendo la
cadena de texto "11" al comentario si esté es hola mundo

de una sola línea o bien colocarlo entre los


caracteres "1*" y "* 1" si ocupan más de una
línea:
Done
// esto es un comentario de una sola
línea
Figura 3.1.
/*
esto es Impresión de datos usando PHP.
un comentario
de varias líneas
*/

Utilización de variables
Impresión de datos en PHP
Por "impresión de datos" hacemos referencia a
los datos que, mediante PHP, mostramos por Para crear variables en PHP anteponga el
pantalla, y no a un resultado impreso utili- carácter "$" al nombre de la variable que usted
zando un dispositivo externo. En PHP existen haya elegido:
varias formas de impresión de datos, siendo la $miVariable
más utilizada aquella en la que se utiliza la $GET['miVariable']
función echo, cuya sintaxis es la siguiente:
PHP es un lenguaje case-sensítive, esto es,
<?
echo Hhola mundo 11 ;
sensible a la diferencia entre mayúsculas y
?> minúsculas, por lo que habrá de prestar aten-
ción, puesto que, por ejemplo, $miVariabley
Este código nos mostrará la frase "hola mun- $mívariable son dos variables distintas.
do" en la pantalla. Escriba el código utilizan-
do el editor de texto que desee y guárdelo con
el nombre holaMundo.php. Posteriormente Variables predefinidas
ábralo en su navegador tecleando la dirección
PHP proporciona una enorme cantidad de
http://localhost/flashphp Iphp Basicosl
variables predefinidas que están disponibles
holaMundo.php para comprobar que el texto
para cualquier script de código que se ejecute.
que se muestra en su navegador es:
Muchas de estas variables dependen de la

110 Capítulo 3
function sumar ($n,$m)(
configuración del servidor, pudiendo encon- $resultado = $n + $m;
trar las que vamos a utilizar dentro de matri- return $resultado;
ces y variables almacenadas en cookies y
echo sumar(5,6);
sesiones o enviadas vía POST o GET. La sin-
taxis para acceder a estas variables que se En este ejemplo la variable $resultado es local
encuentran dentro de las matrices es la si-
para la función sumar.
guiente:
Si desea utilizar variables externas a la fun-
$ GET['miVariable'];
ción ha de hacerlas globales previamente,
Donde miVariable es una variable pasada a un para informar a la función de que va a necesi-
script en forma GET. tar valores que están alojados fuera de ella:

$_POST['miVariable'] ; $n = 5;
function sumar ($m){
global $n;
Donde miVariable es una variable pasada a un $resultado = $n + $m;
script en forma POST. return $resultado;

echo sumar(6);
$_COOKIE['miVariable'] ;

Donde miVariable es una variable almacenada En este otro ejemplo, la función sumar toma el
en una cookie. valor de una variable externa ($n) para reali-
zar las operaciones correspondientes.
$ SESSION['miVariable'];
Las variables autoglobales o superglobales
Donde mi Variable es una variable almacenada
son aquellas para las que no es necesario
en una sesión de usuario.
hacer referencia alguna en el interior de la
$_GLOBALS['miVariable'] ;
función puesto que dicho proceso se ha reali-
zado ya de una forma podríamos denominar
Donde miVariable es una variable almacenada "automática". Estas variables son $_GET,
por nosotros en la matriz de variables S_POST, $_COOKIE, $_SESSION Y

globales. $ GLOBALS.

$_GLOBALS['n'] = 5;
function sumar ($m){
Variables locales, globales $resultado = $n + $m;
y superglobales return $resultado;

Podemos clasificar las variables en PHP en echo sumar(6);

función del lugar en el que se utilizan. Por


En la carpeta material/manuales/ del CD
ejemplo, cuando estamos utilizando funcio-
tiene disponible la última versión del manual
nes, las variables que declaramos dentro de
de PHP, donde puede encontrar más informa-
las mismas se conocen como variables locales
ción acerca del modo en que se manejan las
y son eliminadas o borradas cuando la fun-
variables en este lenguaje.
ción termina de ejecutarse:

PHP 111
Concatenación de cadenas concatenacionCadenas.php en la carpeta mate-
de texto rial/capítul03/php/ del eD.

Para concatenar dos cadenas de texto en PHP


se utiliza el carácter ".",por ejemplo:
<? hola
$variablel = "hola"; hola mundo

$variable2 = $variablel. " mundo";


echo $variablel."<br>".$variable2;
?>

Mediante este script asignamos como conteni-


Figura 3.2.
do de $variablella cadena de texto "hola", que
Concatenación de cadenas de texto.
concatenamos con" mundo" para generar el
contenido de $variable2, "hola mundo".

PHP es un lenguaje capaz de acceder al valor Agregando más texto


de las variables que se encuentran en el inte- a una variable ya existente
rior de las cadenas de texto delimitadas por
comillas dobles, por lo que las expresiones: Si desea agregar más información a una varia-
ble ya existente que además ya dispone de
echo $variablel."<br>".$variable2;
contenido puede usar igualmente el carácter
y:
<?
echo "$variablel <br> $variable2";
$variablel = "esto es algo de texto";
echo $variablel."<br>";
son equivalentes. Escriba el script anterior en $variablel.= " ahora variablel también
tiene este texto";
su editor de texto y guárdelo como echo $variablel;
concatenacionCadenas.php para posteriormente ?>

probarlo en su navegador tecleando


http://localhost/flashphp/php Basicos/ En este ejemplo, la expresión:
concatenacionCadenas. php.
$variablel.=" ahora variablel tambien
tiene este texto";
Tal y como puede ver en la figura 3.2 el texto
que aparece es: es equivalente a:
hola $variablel = $variablel. "ahora
hola mundo variablel también tiene este texto";

ya que además de los contenidos de las dos por lo que finalmente el contenido de la varia-
variables el script contiene el texto "<br>", que ble $variablel es "esto es algo de texto ahora
es un tag HTML utilizado para generar un variablel también tiene este texto", lo que
salto de línea. Puede encontrar el documento puede comprobar copiando el código en su

112 Capítulo3
editor de texto, guardarlo con el nombre que Para añadir más elementos al final del array
desee y añadirlo a la carpeta phpBasicos de su utilice la función array-push siguiendo la
servidor para poder posteriormente abrirlo en sintaxis:
su navegador y ver el resultado.
array_push(nombre_del_array,
nuevo_valorl, .oo, nuevo_valorN);

Utilización y manipulación
Por ejemplo, para añadir dos nuevos elemen-
de arrays tos al final del array $miArray utilizaríamos:
Al igual que vimos en el capítulo dedicado a array_push($miArray, 7, 8) ;
Flash las variables tienen el inconveniente de
que sólo pueden almacenar un valor en un Recorriendo los elementos
momento determinado, por lo que PHP tam- de un array
bién dispone de arrays como estructura para
Utilizaremos bucles para recorrer un array,
almacenar datos. Para crear un nuevo array
extrayendo los valores que tiene almacenados
en PHP usaremos la palabra reservada array mediante uno de los dos métodos a nuestra
siguiendo la sintaxis:
disposición. El primero de ellos consiste en
$miArray = array(elementol, utilizar como índice el valor de una variable
elemento2, .. , elementoN);
que se incrementa en cada iteración del bucle,
mientras que el segundo consiste en utilizar
Por ejemplo:
funciones predefinidas de PHP (each, next)
$miArray array(O,1,2,3,4,5,6) ; que extraen los valores mientras incrementan
el apuntador del array.
sirve para crear un array de siete elementos,
en el que el acceso a cada posición se realiza
utilizando un índice cuyo valor está entre O y Nota: Elapuntador de un array en
el número de elementos menos uno, es decir, PHP almacena la posición del
entre O y 6, por lo que registro siguiente al último del que
$miArray[6] almacena el valor 6.
se extrajeron datos.

Sin embargo, también se pueden crear arrays


Para entender mejor qué son los apuntadores
en los que el acceso a cada posición se realice
y cómo funcionan vamos a crear un archivo
mediante una cadena de texto, como por
en el que definiremos un array, del que extrae-
ejemplo:
remos los datos primeramente mediante un
$miArray array ("nombre"=> 11 Juan fI , bucle for y una variable índice, y posterior-
"apellido"=> "Perez") i
mente mediante una función predefinida.

donde los contenidos del array ("Juan" y El cómo recorrer un array utilizando un bucle
"Pérez") se referencian por $miArray["nom- for puede encontrarlo en el documento mate-
bre"] y $miArray["apellido"], respectivamente. rial/ capitul03 / php / recorrerArregloFor. php
delCO:

PHP 113
for ($n=O; $n <sizeOf($myArray); $n++) {
echo $n. ":" . $myArray [$n] . "<br>";

echo ,r<br>segunda vez con for<br>----<br>";

for($n=O; $n <sizeOf($myArray); $n++) {


echo $n. ": " . $myArray ($n] . "<br>";

?>

Teclee el código en un archivo nuevo con su 0:1


editor de texto, guárdelo como recogerArreglo 1:2
2:3
For.php y ábralo en su navegador tecleando
3:4
http://localhost/flashphp/phpBasicos/recoger 4:5
ArregloFor.php. La información que debe 5:6
6:7
aparecer en su pantalla ha de ser la misma
que se muestra en la figura 3.3:
En el ejemplo anterior hemos extraído en dos
!!<>_ lools tjelp
ocasiones los valores almacenados en el array
• ti# g@ iD ht1,"lflO<ai>"t/phpBa.cosfreco",",",,"~oFo"php [:vl @ Go para mostrar que el apuntador no fue alterado
0:1 tras la primera vez.
1:2
2:3
3:4 Ahora vamos a recorrer el array usando each,
4:5
5:6 pero antes vamos a analizar esta función;
6:7
each devuelve dos pares de valores en un
segunda vez con for
arraya cuyos campos se puede acceder de dos
0:1 formas, usando los índices Oy 1 o bien las
1:2
2:3 claves key y value. Este array suele asignarse a
3:4
4:5 una variable que es la que se maneja para
5:6
6:7
extraer los datos. Por ejemplo, si creamos la
siguiente variable:

Figura 3.3. $temp each ($myArray) ;

Extrayendo datos de un array usando


temp dispondrá de los siguientes valores:
un bucle foro
$temp [O]; (índice)
$temp (1]; (valor)
0:1
$temp('key']; (índice)
1:2
$temp('value']; (valor)
2:3
3:4
4:5 Copie el siguiente código en un nuevo docu-
5:6
mento de su editor de texto y guárdelo con el
6:7
nombre recogerArregloEach.php:
segunda vez con for

114 Capítulo 3
<7
$myArray = array(1,2,3,4,5,6,7);
while($temp = each($myArray)) (
echo $temp['key'J. ":".$temp['value'] ."<br>";

echo "<br>segunda vez con each<br>----<br>";


while($temp = each($myArray)) {
echo $temp ['key' J. ":". $temp ['value'] ."<br>";

7 >

Abra el documento en su navegador tecleando Puede encontrar el código de este script en el


http://localhost/flashphp/php Basicos/ documento material/capitulo3/php/
recogerArregloEach.php.La información que recorrerArregloEach.php del CD.
debe aparecer en su pantalla ha de ser la
misma que se muestra en la figura 3.4: La solución a este inconveniente nos la pro-
0:1
porciona la función reset, que sirve para
1:2 reiniciar la posición del apuntador mediante
2:3 la sintaxis:
3:4
4:5
5:6
6:7
Cree un documento de nombre
segunda vez con each recorrer ArregloEachReset.php y teclee de nuevo
el código (puede encontrarlo en el documento
En este caso sólo se muestra el contenido del material! capitul03 / php / recorrerArreglo
array una vez, ya que al recorrerla la primera EachReset.php), añadiendo la línea que con-
vez se iba modificando el apuntador. Al inten- tiene la función reset antes de recorrer el array
tar recorrer la estructura por segunda vez, el por segunda vez:
apuntador ya se encontraba al final del array,
por lo que no se encuentra ningún contenido
que mostrar.

<7
$myArray = array(1,2,3,4,5,6,7);
while($temp = each($myArray)) (
echo $temp['key']. ":".$temp['value'] ."<br>";

echo "<br>segunda vez con each<br>----<br>";

reset ($myArray) ;

while($temp = each($myArray)) {
echo $temp['key']. ":".$temp['value'] ."<br>";

7 >

PHP 115
segunda vez con each
~dit yjew !io !lookmarks 100Is t!e1p Ó
..$ - & lO 8':l ~LJ http:/"'ocalhost/php8asicosfrecorrerArregjoEach,~p El @ Go
0:1
0:1
1:2
1:2 2:3
2:3 3:4
3:4
4:5
4:5
5:6
5:6
6:7 6:7

segunda vez con each Existe una alternativa a la de utilizar las


Done claves key y value, y es la de asignar el resulta-
do a variables que definiremos en una lista:
Figura 3.4.
<?
Extrayendo datos de un arreglo usando each. $myArray = array{1,2,3,4,5,6,7);
while(list ($clave, $valor)
each($myArray)) {
Abra el documento en su navegador tecleando echo "$clave: $valor <br>";
http://localhostlflashphp/php Basicos/ ?>
recogerArregloEachReset.php.La información
que debe aparecer en su pantalla ha de ser la Copie el código en un nuevo documento de su
misma que se muestra en la figura 3.5: editor de texto y guárdelo con el nombre
recorrerArregloEachList.php, para posteriormen-
te abrirlo en su navegador tecleando
Elle ~t '{ie'N ~ ~rks looIs !::fclp
http://localhos tlflashphp /php Basicos/
Vi •... ~ ~ =LbJ=_-~=_~=ttp=~!=P~=.
=- =oo="-=Ph=pBa="="=i!..="'=<>T=..:c="'='='~=oE='=""'='''=t=.ph=p=~= @Go
0:1 recorrerArreglo EachList.php (Este código se
1:2
23
encuentra disponible en el documento mate-
3:4
4:5
rial/ capitulo3 / php /
5:6 recorrerArregloEachList.php del CD)
6:7

segunda vez con each La información que debe aparecer en su pan-


0:1 talla ha de ser la misma que se muestra en la
1:2
2:3 figura 3.6:
3:4
4:5
5:6
6:7
i__ EiIe ¡;:di~_~~ __ ~ !~_~
__ , _
~ ..$ ~€i ú eJ [[~;~-;fl~~t;~~~~¿~~~i~~6E~~~t;~-=_=-lTd
Q) Go

o: 1
Figura 3.5. 1:2
2.3
Extrayendo datos de un arreglo usando each y 3 -4
4 5
reiniciando el apuntador. 5:6
6: 7
0:1
1:2
2:3
Figura 3.6.
3:4
4:5 Extrayendo datos de un arreglo usando each
5:6
6:7
y list.

116 Capítulo 3
0:1
Este código divide la cadena de texto contenida
1:2
2:3 en la variable $fecha por el carácter especificado
3:4 como separador ("-"),con lo que se obtienen tres
4:S
S:6 elementos ("2003","05 Y"25") que se almacenan
6:7 en el array $arrayFecha. Posteriormente se
muestra por pantalla el contenido de la posi-
Transformaciones de cadenas ción 1 del array, en la que se ha almacenado el
de texto en arrays y viceversa texto correspondiente al mes, por lo que si crea
un documento PHP de nombre explode.php con
En numerosas ocasiones habrá de extraer
este código; para abrirlo posteriormente en su
fragmentos de cadenas de texto para conver- navegador debe obtener el mensaje:
tirlas en números y viceversa, como puede
el mes es OS
ocurrirle cada vez que haya de utilizar fechas
habiendo extraído la información de una base
Puede encontrar el documento explode.php en
de datos. En estos casos el formato de los
la carpeta material!capitul03/php/ del CD.
datos puede ser aaaa-mm-dd (por ejemplo,
"2003-07-25") y tal vez usted desee trabajar La sintaxis para usar la función implode es la
con el mes. También puede ocurrir que dis- siguiente:
ponga de un array y quiera convertirlo en una
$cadena;implode(separador,
cadena, uniendo los elementos contenidos con &nombre array);
algún carácter que usted determine.
Por ejemplo:
Las funciones que vamos a utilizar para realizar
<?php
las conversiones serán explode (para convertir $arrayFecha ; array
un array en una cadena de texto) e implode (para (1I200311[110511{ 112511) i
$fecha ; implode("-",$arrayFecha);
convertir una cadena de texto en un array) echo "esta es la fecha" $fecha;
Veamos un ejemplo de uso de cada una de ellas. ?>

La sintaxis para usar la función explode es la El código, que puede encontrar en el documen-
siguiente: to material! capitul03 /php / implode.php del
CD, realiza el proceso inverso al del ejemplo de
$nombre array;explode(separador,
cadena texto); uso de explode. Disponemos de un array con
tres posiciones cuyos contenidos vamos a
Puede encontrar un ejemplo en el documento concatenar mediante el carácter especificado en
material!capitul03/php/explode.php del el separador, por lo que generaremos una
CD, en el que encontrará el siguiente código: nueva cadena de texto almacenada en la varia-

<?php ble $fecha. Copie el código en un nuevo docu-


$fecha;"2003-0S-2S"; mento de su editor de texto y guárdelo con el
$arrayFecha ; explode("-",$fecha); nombre de implode.php para abrirlo con su
//el mes se encuentra en el índice 1
?> navegador, en el que obtendrá el mensaje:

esta es la fecha 2003-0S-2S

PHP
Función para manejar fechas (date) Copie este código en un nuevo archivo y
guárdelo con el nombre jechaSimple.php. Cuan-
La función date retorna una cadena de texto
do lo abra en su navegador verá en su panta-
con un formato que se asigna según los lla la fecha en el formato aaaa-mm-dd
parámetros que se especifiquen y que pueden hh:mm:ss am/pm. Puede encontrar el docu-
ser los mostrados en la tabla 3.1. Por ejemplo: mento jechaSimple.php en la carpeta material!
<?php capitul03/php/ del CD.
echo date("Y-m-d h:m:s a");
?>

Tabla 3.1.

Parámetros para formatear las cadenas de texto generadas con la función date

Parámetro Descripción

a "amI! o "pm"

A "AM" o "PM"

d Día del mes, usando dos dígitos con un cero a la izquierda, desde "01" a "31"

D Día de la semana, usando un texto de tres letras, por ejemplo "Fri" para indicar
Viernes

F Mes del año, usando un texto, por ejemplo "January" para indicar Enero

h Hora, usando dos dígitos con un cero a la izquierda, desde "01" a "12"

H Hora, usando dos dígitos con un cero a la izquierda, desde "00" a "23"

9 Hora, sin ceros a la izquierda, desde "1" a "12"

G Hora, sin ceros a la izquierda, desde "O" a "23"

Número de minutos, usando dos dígitos con un cero a la izquierda, desde "00" a
"59"

Día del mes, sin cero a la izquierda, desde "1" a "31"

Día de la semana, usando un texto, por ejemplo "Friday" para indicar Viernes

L "1" or "O", para indicar si el año es bisiesto o no

118 Capítulo 3
Parámetro Descripción

m Mes del año, usando dos dígitos con un cero a la izquierda, desde "01" a "12"

n Mes del año, sin cero a la izquierda, desde "1" a "12"

M Mes del año, usando un texto de tres letras, por ejemplo "Jan" para indicar Enero

s Número de segundos, usando dos dígitos con un cero a la izquierda, desde "00"
a "59"

s Sufijo ordinal en inglés, usando un texto de dos caracteres, por ejemplo "th" o "nd"

Número de días del mes especificado, usando dos dígitos, desde "28" a "31"

u Número de segundos desde el valor de la fecha Epoch (las 00:00:00 horas del día
01-01-1970)

w Día de la semana, usando un dígito, desde "O" (Domingo) a "6" (Sábado)

y Año, en formato de cuatro cifras, por ejemplo "1999"

y Año, en formato de dos cifras, por ejemplo "99"

z Día del año, desde "O" a "365"

z Diferencia horaria en segundos (de "-43200" a "43200")

Imprimir la fecha en castellano habríamos de escribir el siguiente código PHP:


<?php
Cuando se desea escribir la fecha en castella- echo date("d \de F, Y, h:m:s a");
no hay que tener en cuenta varios aspectos. ?>

donde el anteponer el carácter "\" a la "d" de


Evitar que partes del texto "de" sirve para indicarle a PHP que no inter-
se interpreten como parámetros prete la segunda letra "d" como un parámetro
Si va utilizar alguna letra de las anteriormente para la fecha, puesto que dicha letra pertenece
específicadas en la tabla 3.1 dentro de una a la cadena de texto "de". En la carpeta mate-
palabra ha de anteponerle el carácter "\" para rial/capitulo3/php/ del CD encontrará el
que no sea interpretada, es decir, si deseamos documento fechaEscape.php con este script.
mostrar la fecha en un formato como el si- Pruébelo en su navegador para leer la fecha en
castellano.
guiente:
"27 de julio, 2003, 5:00:00 am"

PHP 119
Convertir los nombres de meses siendo éste día el que tenga asociado el núme-
y días a castellano ro de índice O:

Los nombres para los meses están disponibles $dias = array


(IlDomingoll, IlLunesll, IIMartesll, IIMiercolesll,
en inglés, así que disponemos de varias alter- lIJuevesll, rrViernesll¡ IISabado");
nativas si queremos mostrarlos en otro idio-
ma. Una de las más comunes es la de crear un Utilizamos date("w") para obtener el índice del
array con los nombres de los meses en caste- día actual, obteniendo un número entre Oy 6,
llano sabiendo que Enero es el mes número 1, que usamos como índice en el array $dias para
así que como los arrays se comienzan a nume- obtener el nombre del día en castellano,
rar desde el índice Ono utilizaremos el primer almacenándolo en la variable $dia. Para obte-
campo del array de meses que creemos: ner la fecha en el formato "Domingo 27 de julio,
2003,5:00:00 am" utilizando el nombre del mes
$meses = array(null, "Enero",
"Febreroll, IIMarzoll, llAbrilll, f'Mayor'¡ (almacenado en $mes) y el nombre del día
"Junio", IlJulioll fIlAgostoll, (almacenado en $dia) hemos de dividir la fecha
"Septiembrell¡ "Octubre" 1 IlNoviembreH I

"Diciembre") ; en varias partes:


Valor de variable $dia + espacio +
El siguiente paso sería el de obtener el número "día del mes" + "de" + Valor de
del mes, y utilizarlo como índice en nuestro variable $mes + espacio + " año,
hh:mm:ss am/pm"
array para así obtener el nombre de dicho mes
en castellano.
Los espacios podemos añadirlos a las varia-
Utilizando date("n") obtendremos un número bles o escribirlos por separado. Añadiéndolos
a las variables se utilizaría:
que utilizaremos como índice en el array $meses,
y así conseguiremos el nombre del mes en caste- echo "$dia "
llano, que almacenamos en la variable $mes:
Para escribirlos por separado utilizaríamos:
$mes $meses [date ("n")] ;
echo $dia.
Para obtener los nombres de los días operare-
mos de forma similar, con la diferencia de que Reuniendo todo el código que hemos escrito
el array $dias ha de comenzar en Domingo, hasta ahora (y que puede encontrar en el
documento material! capitul03 / php /
fechaEsp.php del CD) obtenemos este script:

<?php
$meses = array(O, IIEnero11, llFehreroll, "Marzo", "Abril!',
IIMayolt 1 flJunioll, llJulioll I IIAgostoll , "Septiembre" f llOctubrell¡
IINoviembre II f IlDiciembre n) ;

$dias = array (1IDomingoll,IILunes1', "Martes",'fMiércolesll, "Jueves",


IIViernes 11, 11Sábado 11) ;
$mes = $meses [date ("n")] ;
$dia = $dias [date ("w") ] ;
echo "$dia " date("j"). " de $mes " date(" Y, h:m:s a");
?>

120 Capítulo 3
Copie el código en un nuevo documento de su Por ejemplo, vamos a hacer uso de mktime
editor de texto, guárdelo con el nombre para obtener el día siguiente (mañana):
fechaEsp.php y ábralo en su navegador teclean-
<?php
do http://localhostlflashphp/php Basicos/ $manana = mktime(O,O,O,date("m")
fechaEsp.php. El resultado debe ser similar al ,date ("d") +1, date ("y") ) ;
echo date ("Y-m-d", $manana) ;
que se muestra en la figura 3.7. ?>

~~M~zii¡;F¡;f~x En el código anterior, que encontrará en el


Elle ~dit ~ew §o
documento material! capitul03 /php /
$ .$ . fj g e'l [j http:ífiocalho[;..J @ Go

Sábado 27 de Agosto 2005, 11:08:30 1llll


fechaMktimeManana.php del CD, puede ver
cómo la expresión date("m") retorna el mes
actual, la expresión date("d")+ 1 retorna el día
Done
siguiente al actual y la expresión date("Y")
retorna el año en curso.
Figura 3.7.
Impresión de la fecha en castellano
Manipulación de ficheros
Impresión de fechas pasadas
Las funciones más comunes para trabajar con
o futuras
ficheros son las de abrir,leer, escribir y cerrar,
Para imprimir fechas pasadas o futuras pode- lo que veremos con detalle en este apartado. El
mos utilizar la función mktime, que se pasa proceso normal para trabajar con un fichero es
como parámetro a la función date. El formato el siguiente:
de mktime es el siguiente:
1. Abrir elfichero.
int mktime (int hora, int minutos, int
segundos, int mes, int día, int año); 2. Leer datos del fichero / Escribir datos en
el fichero.
Por ejemplo:
3. Cerrar el fichero.
<?php
echo IIFin de año 11.

echo date("Y-m- Abrir un fichero


d" , mktime (O, ° , ° , 12 , 31 , 2° ° 3 ) ) ;
?> Cuando trate de abrir un fichero pueden
ocurrir dos cosas, que exista y se abra normal-
Este código se corresponde con el del docu-
mente, o bien que no exista, con lo que PHP
mento material! capítul03 / php / tratará de crear un nuevo archivo con el nom-
fechaMktime.php del CD. Para generar una bre del fichero que usted deseaba abrir. La
fecha futura en base a la fecha actual puede
función que se utiliza para abrir / crear archi-
utilizar la función date para obtener los datos. vos es fopen y su sintaxis es:

fopen(nombre fichero, modo, usar


include_path) ;

PHP 121
Esta función retorna un valor booleano false si "C:\\carpeta\\archivos\\fichero.txt"¡

no es capaz de abrir / crear el fichero. El primer


parámetro (nombreJichero) contiene la direc- Los posibles valores para el parámetro modo
puede observados en la tabla 3.2.
ción absoluta o relativa del directorio en el que
se encuentra el fichero que desea abrir / crear.
El tercer parámetro se utiliza cuando hay una
Si es usted usuario de Windows recuerde que a
ruta asignada en la variable include_path y se
la hora de utilizar rutas absolutas es necesario
pretende aplicar. El resultado de la apertura
añadir el carácter "\" antes de cada uno de los
de un fichero es asignado a una variable que
caracteres "\" que la ruta del fichero contenga.
permitirá referenciar el fichero con posteriori-
Por ejemplo:
dad. Algunos ejemplos de apertura de fiche-
"C:\carpeta\archivos\fichero.txt"¡
ros:

La anterior declaración de la ruta es incorrec- $fichero = fopen("/www-root/pepe/


datos.txtll, "rll) i
ta, al contrario que la que mostramos a conti- $fichero = fopen("http://localhost/
nuación: fichero.txtll, IIrll) i

Tabla 3.2.

Valores para el parámetro modo cuando se desea abrir/crear ficheros

Parámetro Descripción

"r"
Abre el fichero únicamente para su lectura situando su apuntador al comienzo
del mismo

"r+" Abre el fichero para lectura y escritura situando su apuntador al comienzo del
mismo

"w"
Abre el fichero únicamente para su escritura situando su apuntador al comien-
zo del mismo y elimina los contenidos que el fichero tuviera almacenados. Si
el fichero no existe, trata de crearlo

"w+" Abre el fichero para lectura y escritura situando su apuntador al comienzo del
mismo y elimina los contenidos que el fichero tuviera almacenados. Si el
fichero no existe, trata de crearlo

"a" Abre el fichero sólo para añadir contenido situando su apuntador al final del
mismo. Si el fichero no existe, trata de crearlo

"a+"
Abre el fichero para lectura y escritura (añadiendo contenido) situando su
apuntador al final del mismo. Si el fichero no existe, trata de crearlo

122 Capítulo 3
Lectura de un fichero La diferencia de este modo de acceder a la
información con respecto a la anterior radica
Una vez que hemos abierto el fichero podemos en que file retorna el contenido del fichero
leer sus contenidos usando la función fread, como un array, en el que cada uno de los
cuya sintaxis es: elementos se corresponde con cada una de las
fread (referencia, largo); líneas del fichero.

donde referencia es la variable que contiene el


Escribir en un fichero
resultado obtenido con fopen y sirve para
referenciar el fichero, mientras que largo es la
Una vez que está abierto el fichero podemos
cantidad en bytes que deseamos leer. fread escribir en él. Para tal tarea haremos uso de
retorna los resultados leídos hasta que alcan-
las funciones fwrite o fputs, cuyo funciona-
ce el número de bytes indicado en largo o miento es el mismo:
hasta que se alcance el final del fichero. Lo
más común es establecer como valor para el fwrite (referencia, cadena, largo);
parámetro largo la cantidad total en bytes del
archivo, que se obtiene mediante la función donde referencia es una variable que referencia
filesize, cuya sintaxis es: al fichero, cadena es el contenido que desea-
mos escribir en el fichero y largo es un
parámetro opcional que se corresponde con el
peso en bytes. Si utilizamos éste último
Ejemplo de lectura de un fichero:
parámetro la escritura se realizará hasta el
<7 punto especificado en largo o cuando la cade-
$ruta = "ficherol.txt"; na se finalice. Por ejemplo:
$fp = fopen($ruta,"r");
$datos = fread($fp, filesize($ruta)); <7
fclose ($fp); $datos = "Hola de nuevo \n";
echo $datos;
7>
$ruta = "fichero2.txt";
$fp - fopen($ruta,"a+");
fwrite ($fp, $datos);
Este código puede encontrarlo en el documen- fclose ($fp) ;
7>
to material! capitul03 / php /leerFichero.php
del CD. Si lo abre en su navegador podrá
Este código, que puede encontrar en el docu-
observar cómo se imprime en la pantalla el
mento material! capitul03 / php /
contenido del documento jicherol.txt.
escribirFichero.php agrega la línea "Hola de
nuevo" al documento fichero2. txt cada vez que
También puede leer directamente los conteni-
es llamado.
dos de un fichero mediante la función file,
cuya sintaxis es:
Cerrar un fichero
file ($fichero, include path) ;
Tal y como habrá podido observar en los
ejemplos anteriores, para cerrar un fichero se

PHP 123
~ ------- -------.----------

utiliza la función ¡clase, pasando la referencia // Cerramos de nuevo el fichero


fclose ($fp) ;
al fichero como parámetro: // Imprimimos en pantalla la cantidad
de impresiones.
fclose (referencia) ; echo "hits=". $datos;
?>

Ejemplo práctico: contador basado Este código puede encontrado en el documen-


en fichero de texto to material/capítul03/php/contador.php del
CD. Ábralo en su navegador para comprobar
Como ejemplo práctico de los conocimientos cómo se modifica el valor contenido en el
adquiridos en este apartado vamos a utilizar el documento contador.txt cada vez que accede al
ejemplo por excelencia de uso de manipulación documento .php.
de ficheros a través del tiempo, la creación de
un contador de visitas que escriba datos en un
archivo de texto y despliegue el número de Envío de correos utilizando
impresiones que se han obtenido. Esta tarea PHP
puede descomponerse en seis etapas:

1. Abrir elfichero. mail es una de las funciones más útiles y


sencillas de que dispone PHP. Su utilidad
2. Leer el contenido. reside en que permite enviar correos y su
sintaxis es la siguiente:
3. Incrementar en una unidad el valor leído.
mail (destinatario, asunto,
4. Escribir en el fichero el nuevo dato. mensaj e, cabeceras_adicionales 1 ;

5. Cerrar elfichero. destinatario es la dirección de correo electróni-


co a la que se quiere enviar el mensaje, asunto
6. Imprimir el nuevo dato. se corresponde con el subject o tema del correo
<? y mensaje es el cuerpo del correo. Un ejemplo
// Especificamos la ruta del fichero sencillo de envío:
que contiene la cantidad de
impresiones mail("pepe@pepe.net", "Sobre este
$ruta = "contador.txt"; tema", "Línea 1\nLínea 2\n") ;
// Abrimos el fichero para lectura
$fp = fopen($ruta,"r+");
// Leemos su informacion Como parámetro adicional se cuenta con lo
$datos = fread ($fp,filesize ($ruta)) ; que se denominan cabeceras en las que se
// Lo cerramos
fclose ($fp) ; pueden incluir el remitente del correo, una
// Aumentamos en una unidad la dirección para la respuesta o el formato del
cantidad de impresiones almacenadas
$datos++;
correo (texto plano o formato HTML) Si por
// Abrimos el fichero para escritura ejemplo desea enviar un correo con varias
$fp = fopen($ruta, "w+"1 ; cabeceras puede utilizar:
// Escribimos el nuevo dato
fputs ($fp, $datosl;

124 Capítulo 3
mail("pepe@pepe.net", "Sobre este tema", "Linea l\nLinea 2\n",
"From: webmaster@$SERVER NAME\nReply-To: webmaster@$SERVER NAME\nX-Mailer: PHP/"
phpversion()) ;

Si además de varias cabeceras también quiere


especificar formato HTML:

mail ("pepe@pepe.net", "Sobre este tema", "Linea l\nLinea 2\n",


"From: webmaster@$SERVER NAME\nReply-To: webmaster@$SERVER_NAME\n Content-Type:
text/html; charset=iso-8859-15\nX-Mailer: PHP /" phpversion ()) ;

Cambios en PHP5 3. El uso de índices de cadena inválidos


generan errores de tipo E_ERROR en
(Fuente: http://www.php.net/manual/es/ lugar de E_WARNING.
migration5.php)
4. Se modificó arraLmergeO para que acepte
únicamente matrices. Si una variable de
PHP 5 Yel Motor Zend 2 integrado han mejora-
do significativamente el rendimiento y las un tipo diferente a matriz es pasada, se
capacidades de PHP, al mismo tiempo que se genera un error de tipo E_ WARNING para
han tomado precauciones para evitar al máxi- cada uno de esos parámetros. Tenga
mo incompatibilidades con el código existente. cuidado, ya que su código puede comen-
zar a emitir anuncios E_WARNING de la
Por lo tanto, migrar su código desde PHP 4 a la
nada.
versión 5 debe resultar bastante fácil. La mayo-
ría de código PHP 4 existente debe estar listo
5. La variable de servidor PATH_TRANSLA-
para funcionar sin modificaciones, pero sigue
TED ya no es definida de forma implícita
siendo buena idea que conozca las pocas
bajo la SAPI de Apache2, a diferencia del
diferencias existentes y que se tome sus precau-
comportamiento de PHP 4, en donde se
ciones para probar el código antes de actuali- define con el mismo valor de la variable de
zar versiones en entornas en producción.
servidor SCRIPT ]ILENAME cuando no
se define por Apache. Este cambio fue
Cambios Incompatibles realizado para seguir la especificación
con Versiones Anteriores CGI. Por favor refiérase al bug #23610
para más información.
Aunque la mayoría de código PHP 4 existente
debe funcionar sin modificaciones, es impor- 6. La constante T_ML_ COMMENT ya no es
tante que preste atención a los siguientes cam- definida por la extensión Tokenizer. Si el
bios incompatibles con versiones anteriores: valor de error_reporting es E_ALL, PHP
generará una noticia. Aunque la constante
1. Existen algunas palabras clave nuevas. T_ML_COMMENTnunca fue usada,
estaba definida en PHP 4. Tanto en PHP 4
2. strrposO y strriposO ahora usan la cadena
como en PHP 5/ / y /* */ son resueltos
entera como aguja.

PHP 125
como la constante T_COMMENT. Sin constantes predefinidas mágicamente
embargo, los comentarios estilo PHPDoc / _CLASS_, _METHOD _, Y
** */, que son interpretados a partir de _FUNCTION_. Los valores son devuel-
PHP 5, se reconocen como tos exactamente igual que como son decla-
T_DOC_COMMENT. rados (sensibles a mayúsculas y minúscu-
las).
7. $_SERVER debe poblarse con argc y argv
si variables_order incluye "S". Si ha confi- 10. ip21ongO ahora devuelve FALSE cuando
gurado su sistema específicamente para una dirección IP inválida es pasada como
no crear $_SERVER, entonces dé por argumento a la función, y no -1.
seguro que no aparecerá. El cambio fue
hecho para lograr que argc y argv siempre 11. Si hay funciones definidas en el archivo
estuvieran disponibles en la versión CLI incluido, éstas pueden ser usadas en el
independientemente del parámetro archivo principal, sin importar que estén
variables_order. Es decir, ahora la versión antes de una sentencia returnO o después.
Si el archivo es incluido dos veces PHP 5
CLI define siempre las variables globales
$argc y $argv. produce un error fatal, ya que las funcio-
nes ya han sido declaradas, mientras que
8. Un objeto sin propiedades ya no es consi- PHP 4 no se queja al respecto. Se recomien-
derado "vacío". da usar include_onceO en lugar de revisar
si el archivo ya había sido incluido y
9. En algunos casos, las clases deben ser retornar condicionalmente al interior del
declaradas antes de ser utilizadas. Esto archivo incluido.
sólo ocurre si algunas de las nuevas ca-
racterísticas de PHP 5 son usadas. De otro 12. include_onceO y require_onceO normali-
modo el comportamiento antiguo se con- zan primero la ruta del archivo incluido
serva. en Windows de modo que incluir A.php y
a.php incluyen el archivo solo una vez.
geCclassO, getj)arenCclassO y get_
c1ass_methodsO devuelven ahora el nom- Migración de Archivos
bre de las clases / métodos como ellos
de Configuración
fueron declarados (siguiendo las mayús-
culas y minúsculas) lo cual puede llevar a Dado que los módulos ISAPI cambiaron sus
problemas en scripts viejos que dependían nombres, de php4xxx a php5xxx, es necesario
del comportamiento anterior (el nombre de hacer algunos cambios en los archivos de
la clase/método era devuelto en minúscu- configuración. También ocurrieron cambios
las siempre). Una posible solución es en los nombres de archivos CLI y CGI. Por
buscar las funciones mencionadas en favor refiérase a la sección correspondiente
todos sus scripts y usar strtolowerO. para más información.

Este cambio en la sensibilidad a minúscu- Migrar la configuración de Apache es extrema-


las y mayúsculas se aplica también a las damente simple. Consulte el ejemplo a conti-

126 Capítulo 3
nuación para verificar el cambio que necesita • array_diff-uassocO - Computa la diferencia
realizar: de matrices con un chequeo adicional de
índices, el cual es realizado con una lla-
Migración de archivos de configuración de mada de retorno entregada por el usuario.
Apache para PHP 5
• array_udiffO - Computa la diferencia de
# cambie esta linea: ma trices usando una llamada de retorno
LoadModule php4 module /php/sapi/
php4apache2.dll para la comparación de datos.

# por esta: • array_udiff_assocO - Computa la diferencia


LoadModule php5 module /php/
de matrices con un chequeo adicional de
php5apache2.dll
índices. Los datos son comparados usan-
Si su servidor Web está usando PHP en modo do una llamada de retorno.
CCI, debe notar que la versión CCI ha cambia-
• array_udiff_uassocO - Computa la diferen-
do su nombre de php.exe a php-cgi.exe. En
cia de matrices con un chequeo adicional
Apache, debe hacer algo como lo siguiente:
de índices. Los datos son comparados
usando una llamada de retorno. El che-
Migración de archivos queo de índices es realizado usando una
de configuración de Apache llamada de retorno.
para PHP 5, modo CGI
• array_walkJecursiveO - Aplica una función
# cambie esta linea:
de usuario recursivamente a cada miem-
Action application/x-httpd-php "/php/ bro de una matriz.
php.exe"
• array_uintersect_assocO - Computa la inter-
# por esta:
Action application/x-httpd-php "/php/ sección de matrices con un chequeo adi-
php-cgi.exe" cional de índices. Los datos son compara-
dos usando una llamada de retorno.
En otros servidores Web necesita cambiar ya
sea el nombre de archivo Celo del módulo • array_uintersect_uassocO - Computa la
ISAPI. intersección de matrices con un chequeo
adicional de índices. Tanto los datos como
los índices son comparados usando lla-
Nuevas Funciones madas de retorno.

En PHP 5 aparecen algunas funciones nuevas. • array_uintersectO - Computa la intersección


A continuación se presenta una lista de ellas: de matrices. Los datos son comparados
usando una llamada de retorno.
Matrices:
InterBase:
• array_combineO - Crea una matriz usando
• ibase_affectedJowsO - Devuelve el número
una matriz para las claves y otra para sus
valores. de filas que fueron afectadas por la con-
sulta anterior.

PHP 127
• ibase_backupO - Inicia una labor de respal- • ibase_server _infoO - Solicita estadísticas
do en el administrador de servicios y sobre una base de datos.
retorna inmediatamente.
• ibase_service_attachO - Conectarse al admi-
• ibaseJommitJet() - Aplica una transac- nistrador de servicios.
ción sin cerrada.
• ibase service_detachO - Desconectarse del
• ibase_db _infoO - Solicita estadísticas sobre administrador de servicios.
una base de datos.
• ibase_set_event_handlerO - Registrar una
• ibase_drop_dbO - Elimina una base de llamada de retorno a ser usada cuando se
datos.
publican eventos.

• ibase_errcodeO - Devuelve un código de


• ibase_wait_eventO - Esperar a que un even-
error.
to sea publicado por la base de datos.

• ibaseJree_event_handlerO - Cancela un
iconv:
gestor de eventos registrado.
• lconv_mime_decodeO - Decodifica un cam-
• ibase--$en_idO - Incrementa el generador
po de cabecera MIME.
nombrado y devuelve su nuevo valor.
• iconv_mime_decode_headersO - Decodifica
• ibase_maintain_dbO - Ejecuta un comando
múltiples campos de cabecera MIME de
de mantenimiento en el servidor de bases
una vez.
de datos.
• iconv_mime_encodeO - Compone un campo
• ibase_nameJesult() - Asigna un nombre a de cabecera MIME.
un conjunto de resultados.
• iconv _strlenO - Devuelve el conteo de ca-
• ibase_num-paramsO - Devuelve el número racteres de la cadena.
de parámetros en una consulta preparada .
• iconv _strposO - Encuentra la posición de la
• ibase-param_infoO - Devuelve información
primera ocurrencia de una aguja al inte-
sobre un parámetro en una consulta pre- rior de un pajar.
parada .
• iconv_strrposO - Encuentra la última ocu-
• ibaseJestoreO - Inicia una labor de rescate rrencia de una aguja al interior del rango
en el administrador de servicios y retorna especificado del pajar.
inmediatamente .
• iconv _substrO - Recorta parte de una cade-
• ibase_rollback_retO - Revierte una transac- na.
ción y conserva su contexto.

128 Capítulo 3
Secuencias: Cadenas:

• streamJopy_to_streamO - Copia datos de • str _splitO - Convierte una cadena en una


una secuencia a otra. matriz.

• stream~et_IineO - Obtiene una línea de un • strpbrkO - Busca una cadena por un con-
recurso tipo secuencia hasta cierto límite junto cualquiera de caracteres.
indicado.
• substr _compareO - Comparación segura con
• stream_socket_acceptO - Acepta una co- material binario, opcionalmente
nexión sobre un socket creado por insensitiva a mayúsculas y minúsculas,
stream _sockeCserverO. de dos cadenas a partir de un desplaza-
miento, y hasta un límite da caracteres.
• stream_socketJlientO - Abre una conexión
de socket de Internet Abierto o Dominio Otros:
Unix.
• convert_uudecodeO - decodificar una cade-
• stream_socket~et_nameO - Recupera el na con el algoritmo uuencode.
nombre de sockets locales o remotos.
• convert _uuencodeO - Codificar una cadena
• stream_socketJecvfromO - Recibe datos de con el algoritmo uuencode.
un socket, conectado o no.
• curCcopy_handleO - Copiar un gestor cURL
• stream_socket_sendtoO - Envia un mensaje a junto con todas sus preferencias.
un socket, esté conectado o no.
• dba_key_splitO - Separa una llave repre-
• stream_socket_serverO - Crea un socket de sentada como cadena a una representa-
servidor de Internet o de dominio Unix. ción de matriz.

Fecha y hora: • dbase~et_header _infoO - Obtiene la infor-


mación de cabecera de una base de datos
• idateO - Dar formato de entero a una fe- dBase.
cha/hora local.
• dbxJetchJowO - Recupera filas desde un
• date_sunsetO - Hora de crepúsculo para un resultado de consulta que usó la bandera
día y ubicación determinados. DBX_RE5ULT _UNBUFFERED.

• date_sunriseO - Hora del alba para un día y • fbsqCsetpasswordO - Cambia la contraseña


ubicación determinados.
para un usuario determinado.

• time_nanosleepO - Espera por un número • file-put_contentsO - Escribe una cadena a


de segundos y nanosegundos. un archivo.

PHP 129
• ftp_allocO - Reserva espacio para que el • php_check_syntaxO - Verifica la sintaxis del
archivo sea cargado. archivo especificado.

• get_declared_interfacesO- Devuelve una • php_strip_whitespaceO - Devuelve el código


matriz de todas las interface s declaradas. fuente con los comentarios y espacios
eliminados.
• get_headersO - Recupera todas las cabece-
ras enviadas por el servidor en respuesta • proc_niceO - Cambia la prioridad del pro-
a una petición HTTP. ceso actual.

• headers _listO - Devuelve una lista de cabe- • pspelCconfig_data_dirO - Cambia la ubica-


ceras de respuesta enviadas (o listas para ción de los archivos de datos del lenguaje.
ser enviadas).
• pspell_config_dict_dirO - Cambia la ubica-
• http_build_queryO - Generar una cadena ción de la lista principal de palabras.
query codificada estilo URL.
• setrawcookieO - Envía una cookie sin codifi-
• image_type_to_extensionO - Obtiene la car el valor en estilo url.
extensión de archivo para el tipo de ima-
gen devuelto por getimagesizeO, exiCread • snmpJead_mibO - Lee y realiza análisis
_dataO, exiUhumbnailO, exiUmagetypeO· sintáctico sobre un archivo MIB en el árbol
MIBactivo.
• imagefilterO - Aplica un filtro sobre una
imagen usando un ángulo personalizado. • sqliteJetchJolumn_typesO - Devuelve una
matriz de tipos de columna de una tabla
• imap-$etaclO - Obtiene el valor ACL para la en particular.
casilla de correo dada.
Nuevas Directivas
• ldap_sasCbindO - Enlaza con el directorio
LDAP usando SASL. Algunas directivas de php.ini se han incorpora-
do en PHP 5. Aquí se presenta una lista de ellas:
• mb _lisCencodingsO - Devuelve una matriz
de todas las codificaciones soportadas. • mailforce_extra-parameters - Obliga a que
se agreguen los parámetros especificados
• pcntl-$etpriorityO - Obtiene la prioridad de
como parámetros extra al ejecutable de
cualquier proceso. sendmail. Estos parámetros siempre reem-
plazan el valor del quinto parámetro de
• pcntCwaitO - Espera o devuelve el status
mailO, incluso en modo seguro.
de un hijo bifurcado como se define por la
llamada de sistema waitpidO.
• register _long_arrays - habilita/ deshabilita

• pg_versionO - Devuelve una matriz con el


el registro de las largas variables obsoletas
$HTTP_*_VARS.
cliente, protocolo y versión del servidor
(cuando se encuentra disponible).

130 Capítulo 3
• session.hashJunction - selecciona rma En versiones previas de PHP, los objetos eran
frmción de resumen cripta gráfico (MD5 o manejados como tipos primitivos (por ejemplo,
SHA-l). enteros y cadenas). La desventaja de este méto-
do era que, semánticamente, el objeto completo
• session.hash_bits-per _character - define cuán- era copiado cuando rma variable era asignada,
tos bits deben almacenarse en cada carácter
o pasada como parámetro a rm método. En el
cuando se convierten datos binarios de hash
nuevo enfoque, los objetos son referencia dos
a otro más legible (de 4 a 6). por gestor, y no por valor (puede pensarse en el
gestor como rm identificador de objeto).
• zend.ze1_compatibility_mode - Habilita el
modo de compatibilidad con el Motor Zend Muchos programadores de PHP no son cons-
1 (PHP4). cientes siquiera de los detalles que implican
las copias en el modelo antiguo de objetos y,
Bases de Datos por lo tanto, la mayoría de aplicaciones de
PHP frmcionarán sin problemas, o con muy
Hubo algrmos cambios en PHP 5 relacionados
pocas modificaciones.
con las bases de datos (MySQL y SQLite).
El nuevo Modelo de Objetos es documentado
En PHP 5 las bibliotecas de cliente MySQL no
en la Referencia del Lenguaje.
se incluyen, debido a problemas de licencia,
entre otros. Para más información, lea la
Vea también la directiva zend.ze1_compatibility
entrada del FAQ.
_mode para compatibilidad con PHP 4.

También hay rma nueva extensión, MySQLi


Reporte de Errores
(MySQL Mejorado), la cual está diseñada para
trabajar con MySQL 4.1 y superior. A partir de PHP 5, la nueva constante de
reporte de errores E_STRICT se encuentra
A partir de PHP 5, la extensión SQLite viene disponible con el valor 2048. Ésta habilita
incorporada en PHP. SQLite es rm motor de sugerencias en tiempo de ejecución por parte
bases de datos embebido y no es rma bibliote- de PHP sobre la interoperabilidad de su códi-
ca de cliente usada para conectarse con rm go y compatibilidad hacia adelante, que le
servidor grande de bases de datos (como ayudarán a sincronizarse con los últimos y
MySQL o PostgreSQL). La biblioteca SQLite lee mejores métodos de escritura de código. Por
y escribe directamente hacia y desde los archi- ejemplo, rm mensaje STRICTpuede advertirle
vos de bases de datos en disco. cuando use funciones obsoletas.

gotoAndPlay (" capi tulo_ 4") ;


Nuevo Modelo de Objetos

En PHP 5 existe rm nuevo Modelo de Objetos.


Nota: E_ALL no incluye E_STRICT,
El manejo de objetos en PHP ha sido re-escrito
por completo, permitiendo rma mejora en así que esta constante no está

rendimiento y muchas características nuevas. habilitada por defecto.

PHP 131

You might also like