php

11 views
Skip to first unread message

Marcos Lorenzo

unread,
May 7, 2011, 2:09:31 PM5/7/11
to programacion_inicios
vamos a empezar desde mañana (Domingo, dia 9 de Mayo de 2011) y desde
las catacumbas para ir viendo la luz poco a poco...

Marcos Lorenzo

unread,
May 8, 2011, 3:00:51 AM5/8/11
to programacion_inicios
<b>Introducción</b>

PHP Hypertext Preprocessor se inicio como unos añadidos de PERL/CGI
para facilitar el trabajo y las capacidades de la webs.

<u>Sus principales objetivos son:</u>

Realización de webs dinámicas e interactivas con el usuario/cliente

Crear código del lado del servidor, necesita un servidor web
preinstalado para funcionar (cargando los módulos para php del
servidor web en cuestión).

Crear codigo cli (en la línea de comandos)

Crear aplicacion gui (apps de escritorio) utilizando su propia
extensión php-gtk.

<u>Ventajas:</u>

Lenguaje de programación de código abierto.

Compatibilidad con diversas plataformas: Unix, Windows, Mac, etc.

Ya poseee gran cantidad de funciones, añadidos y soporte oficial en
php.net

<u>Posibles usos:</u>

Código embebido ("mezclado"·) entre php, html y javascript

Archivos externos incluidos en la cabeceras del archivo html

Utilización de capas como formas de trabajar más fiables y seguras
(frameworks)

Las principales formas de trabajar <u>competidoras</u> de PHP son: ASP
(lenguaje Java), APS.NET (lenguaje C #), JSP (lenguaje java), RUBY ON
RAILS Y PYTHON

administrador

unread,
May 8, 2011, 11:45:07 AM5/8/11
to programacion_inicios
<u> Etiquetas del intérprete de php</u>

Existen varios tipos de etiquetas con las que poder “llamar” al
intérprete de php en un entorno de trabajo IDE. Las recomendable es la
de <?php <i>código de nuestro programa</i> ?> ya que las que se
muestran a continuación pueden presentar problemas de portabilidad
entre servidores con respecto al nuestro programa:

a. Las etiquetas short_tags: <?> <i>código de nuestro programa</
i> ?> | <?= <i>código de nuestro programa</i> ?> son etiquetas que si
no se tiene la directiva de short_open_tag activada o el intérprete
php no es compilado con la opción –enable-short-tags en el archivo de
configuración del servidor web, nuestro programa no será interpretado
por éste.

b. Otras etiquetas problemáticas pueden ser las compatibles con
asp: <% <i>código de nuestro programa</i> %Z |<=% <i>código de nuestro
programa</i> %> ya que tienen que tener la directiva asp_tags activada
y no todos lo servidores de hoy en día la tienen activada.

c. Por último tenemos las etiquetas <script language=”php”></
script> que son también inadecuadas para portabilidad de nuestro
códigos entre diferentes servidores.

Además, comentar que si queremos embeber código php en xml, el método
mejor el que se ha recomendado y ninguno de estos tres últimos. Al
igual que en xml, el código php de nuestro programa se pueden embeber
con código html o javascript, etc. pero estos últimos se enviarán tal
cual al navegador cliente para ser ejecutado allí aunque la parte de
php será procesada en el servidores antes de ser enviada al navegador
del cliente.

En el siguiente ejemplo de código embebido, aprovecharemos para
introducir los comentarios de php, esta parte de texto no será
interpretada y por lo tanto no se mostrará en nuestro programa. Los
comentarios, sirven sobre todo para documentar tanto interna como
externamente nuestro programa y así poder retomar el mismo pasados
unos meses o permitir su manipulación por otros usuarios sin tener que
estudiarse el código por completo para saber como funciona el mismo.

<i>Ejemplo de código php embebido en html</i>

<body>
<p>
<? php //esto es comentario de una línea en php
$nota=6;
if($nota>=5){ ?>
<b> Aprobado </b>
<?php //la parte de <? nunca se puede separar de la palabra “php” por
ningún concepto
//además tendrá que haber un espacio entre el bloque <?php y la
siguiente instrucción
/*esto es un comentario de
varias líneas en php */

/** esto es un comentario
de documentación en php */
}
else{ ?>
<b>Suspenso</b>
<?php }?>
</p>
</body>

administrador

unread,
May 8, 2011, 11:47:47 AM5/8/11
to programacion_inicios
<u>Manejar Errores – Inicio</u>

Por defecto los errores que se puedan producir en nuestro código php
se escribe en un archivo de texto llamado log en el mismo archivo que
el servidor web muestra los suyos cuando no se puede iniciar el mismo
o por otro percance (<i>err.log</i>).

El comportamiento de estos errores php los podemos personalizar en el
archivo de configuración <i>php.ini</i> de la carpeta php y podemos
hacer que:

a. Estos errores se muestren por pantalla en la web poniendo la
directiva de <i>php.ini</i> <i>display_errors</i> a on. Cuando esta
directiva está desactivada no vemos nada en la web ni siquiera esos
errores por pantallla pero aún así podemos acudir a ver el código
fuente de la web en cuestión para saber en que punto se ha parado de
ejecutar el código. No todos lo errores paran la ejecución y no dejan
mostrar nada en pantalla pero eso es tema que discutiremos más
adelante.

b. Que tipo de errores mostrar por pantalla o en el log de errores,
con la directiva <i>error_reporting</i> del archivo <i>php.ini</i>
podemos hacer esto. Por defecto se muestran todos los tipos de
errores, avisos y noticias que no paran la ejecución del programa y si
muestra un resultado por pantalla aunque no sea correcto y lo errores
de sintaxis o los errore en tiempos de ejecución que si paran la
ejecución en un punto y no sacan ningún resultado por pantalla a no
ser los errores cuando <i>display_errors</i> se encuentre activada.

c. También podemos cambiar el archivo de texto o html en el que
queramos mostrar nuestro errores aparte de por pantalla (teniendo
<i>display_errors</i> a on), para hacer esto deberemos cambiar la ruta
de la directiva <i>error_log</i>

d. Por útlimo, también podemos cambiar el aspecto del log html
utilizando las directivas <i>error_prepend_string</i> o
<i>error_prepend_string</i> para añadirle una etiqueta prefijo o
sufijo a la salida del error y así poder destacar unos errores sobre
otros dándoles un diseño muy básico. Ejemplo: Con la primera directiva
puesta con <b style=”color:red;”> y la segunda directiva puesta a </
b>, los errores se mostrarán en negrita y con color rojo si se
muestran a través de una web.

Siempre hay que recordar que la directiva <i>log_errors</i> del
archivo <i>php.ini</i> deberá estar activada para que se escriban los
logs sino no existirán los mismos para los errores.

Siempre hay que reiniciar el servicio apache cuando hagamos algún
cambio en los archivos de configuración tanto de apache como de php y
querramos que se apliquen los mismos, no se aplicarán hasta que no se
reinicie el servicio.

administrador

unread,
May 8, 2011, 4:59:59 PM5/8/11
to programacion_inicios

<u>Tipos de datos primitivos en php </u>

<i>boolean</i>: Los valores bool “originales” son True o false
(mayúsculas o minúsculas).

Otros valores equivalentes a false son: 0, 0.0, cadena vacía, “0”,
Null (mayúsculas o minúsculas)
o un objeto con cero elementos.

Los valores equivalentes a true son los valores contrarios a los
anteriores.

Al hacer un echo de un valor false o equivalente a <i>false</i>, no
se escribe <b>nada</b>. Al
hacer echo de un <i>true</i> o equivalente a true siempre se
escribe <b>1</b> en pantalla.

<i>integer</i>: Normalmente de 32 bits (depende de la plataforma) los
que se pueden representar en base <b>decimal</b>, en base <b>octal</b>
(comenzando con un cero el número) o en base <b>hexadecimal</b>
(comenzando el número por 0x).

El que sean de 32 bits quieren decir que se pueden representar del
rango de -2,147,483,648 a 2,147,483,648 números enteros.

<i>float</i> : Normalmente de 64 bits (depende la plataforma). Podemos
usar funciones de librerias dependiendo del lenguaje que estemos
usando para redondear y truncar este tipo de datos o, incluso, para
evitar esto en número demasiado grandes.

El que sean de 64 bits quieren decir que se pueden representar del
rango de -1,8e308 a 1,8e308 números enteros.

<i>array</i>: Las matrices de php son colecciones, cada elemento con
su nombre (clave) ya sea cadena o número y los cuales son “llamados” a
través del mismo.

<i>object</i>: Es el tipo de objeto base del que derivan los demás de
php. Se utiliza para almacenar cualquier tipo de objeto.

<i>resource</i>: Tipo de dato devuelto por funciones php al trabajar
con bases de datos o con ficheros, “manejador” del flujo de datos
devuleto desde estas fuentes.

<i>string</i>: Pueden indicarse entre comillas dobles o simples. Si
queremos representar comillas literales deberemos empezar la cadena
con el otro tipo de comillas o sino escaparlas para que se escriban
tal cual en la cadena. Ej: echo “Mi perro \”paco\” ” - esto escribe:
Mi perro “paco”
echo 'Mi perro “paco” ' - esto escribe: Mi perro “paco”

<u>Características de las cadenas en php</u>

a. Las variables se ejecutan dentro de cadena iniciadas y
terminadas con comillas dobles tal como los siguientes ejemplos
utilizando una variables llamada $nombre=usuario:

1. echo “Hola $nombre” - escribe Hola usuario
2. echo “Hola a todos los $nombres” - esto falla ya que no existe la
variables nombres
3. echo “Hola a todos los ${nombre}s” - esto escribe Hola a todos los
usuarios
4. <u>Curiosidades</u>: echo Hola a todos – esto escribe Hola a todos
echo “Hola ”, “Adios”, “Otra cadena” - esto escribe Hola
AdiosOtraCadena.

b. La concatenación de cadenas se consigue con el punto y no con el
operador + como sí en otros lenguajes de programación. Si se usa el
operador + entre dos cadenas, se suman las cadenas, si éstas no son
números se suman ceros.

Por otra parte si utilizamos una cadenas dentro de una operación
matemáticas entre datos tipo número, las cadenas se transformarán en
número si sus valores son número hasta llegar al primer carácter no
número donde el parseo se detendrá y se sumará el número resultante de
la cadena hasta ese momento.

Ej: $b=1+2+3+”34tfhyts45565”
echo $b – esto escribirá 40

Una curiosidad de concatenar mediante el punto, es que si
escribimos el punto entre dos cadenas cuyos valores sean números,
deberemos dejar un espacio entre número y número ya que sino en vez de
concatenar cadenas tendremos un número decimal como resultado.

Ej: echo 2 . 2 – esto escribe 22
echo 2.2 – esto escribe 2.2

c. Se pueden acceder a los caracteres dentro de las cadenas como si
fuera ésta un array, accediendo a sus elementos mediante llaves. Ej:
El segundo elemento de la cadena $a=“Hola” se accedería mediante la
expresión $a{1}, el segundo elemento tiene el índice uno ya que todos
los primeros elementos de arrays o cadenas empiezan en cero. Este
acceso también se podría hacer con corchetes pero sus uso ya se
considera obsoleto.

Como los elementos de un array o de una cadena se pueden
considerar como variables, si queremos acceder a éstos desde una
cadena deberemos hacer: echo “{a[0]}” - esto escribe H , es decir,
poner entre llaves la referencia al array o cadena y entre corchetes
la referencia al elemento de ese array o cadena.

d. Existen caracteres de control que se pueden escribir dentro de
una cadena y que solo funciona en cadena que comienzan y finalizan con
comillas dobles al igual que las variables ya que en realidad éstos
son variables constante predefinidas en php. Algunos de estos
caracteres de control pueden ser:

salto de línea: \n
retorno de carro: \r
tabulador: \t
\” : “
\' : '
\\: \
\$: $
Etc...

Al carácter \ se le llama, carácter de escape para estos casos.

La constante PHP_EOL es el salto de línea de php para cualquier
plataforma en la que se esté ejecutando el código php
correspondienbte

Los caracteres anteriores no tienen significado en HTML ya que el
intérprete del navegador para este lenguaje “entiende” otras
etiquetas como equivalente para estos caracteres. Ej: <br/> para un
salto de línea,etc.

Nota: Una forma muy útil de escribir varias líneas de una misma cadena
la cual contenga varios tipos de comillas literales (sin ser
caracteres limitadores), es mediante etiquetas como la siguiente:

Ej1: echo <<<Etiqueta //este nombre puede ser cualquier otro siempre
que se repita al final
Hola a todos los “{$b[1]}” {$nombre}s de este “patio”
Etiqueta; //final de la etiqueta con este nombre

Esto escribe: Hola a todos los “4” usuarios de este “patio”

Ej2: echo <<<Otra
<input type=”text” name=”nombre” value=”Escribe texto”/>
Otra;

Esto muestra en la web una caja de texto con el texto inicial:
Escribe texto

administrador

unread,
May 9, 2011, 2:08:17 AM5/9/11
to programacion_inicios
<u>Variables en php</u>

<i>No hay necesidad de declarar las variables</i> al principio del
todo aunque es recomendables para ir llevando el código controlado por
posibles corrupción o errores en los datos. Ej: El intérprete de php
generará avisos que se escribirán en el log de errores siempre que la
directiva error_reporting las incluya, la directiva log_errors esté
activada y aunque display_errors no esté activada.

Las variables no son <i>débilmente tipadas</i> lo que quiere decir que
cada variables podrá contener cualquier tipo de dato a lo largo de su
vida.

Los nombres de las variables deberán comenzar por letra o guión bajo e
ir precedidos por el símbolo $ y se diferenciarán las mayúsculas de
las minúsculas a la hora de hacer referencia a ellas.

Las variables sólo estarán disponibles para su uso a partir del
momento en que se definan (asignen) y no antes ya que si no existirán
antes de utilizarlas se generarán avisos (<i>warnings</i>) en el log
de errores.

Se podrá utilizar la “anidación” de asignaciones. Ej: $a=
$b=array(56,78,”cadena”,{'clave_objeto':valor_objeto});

Tal como hemos visto anteriormente en el apartado de strings, podemos
“desenvolver” el valor de una variable dentro de una cadena que
empiece y termine con los limitadores comillas dobles.

Ejemplos. Si tenemos una variable $nombre='usuario' entonces:
echo “Hola $nombre” - escribe Hola usuario
echo “Hola a todos los ${nombre}s” - esto escribe Hola a todos
los usuarios
echo Hola a todos los {$nombre}s de esta web - esto escribe
Hola a todos los usuarios de esta web

Por lo que respecta al ámbito de las variables, las variables
declaradas y definidas dentro de funciones o procedimiento pueden ser
variables <i>locales</i> o <i>estáticas</i> a esa función o
procedimiento y las variables externas a éstas son <i>globales</i>
pero estas últimas no se podrán utilizar dentro de las funciones o
procedimiento a no ser que se declaren con la palabra reservada
<i>global</i>.

Ej. $cadena=” ”;
function nom_funcion(){ //en php no hay funciones anónimas, deberá
tener nombre.
global $cadena;
return “El resultado de la funcion es la misma cadena cuyo valor
es: $cadena”
//la podemos utilizar en la función con la declaración global
};

Otra opción es utilizar la colección GLOBALS dentro de la función o
procedimiento correspondiente en la que se encuentra todas las
variables globales.

Ej: $cadena=” ”;
function nom_funcion(){
return “El resultado es: GLOBALS{“cadena”};
};


Las variables <i>estáticas</i> dentro de una función o procedimiento
no destruirán su valor cada vez que esta función termine su ejecución
sino que tan sólo quedarán destruidas al finalizar la ejecución del
script principal. Por lo tanto podremos utilizar los valores
acumulados de esta variables por cada vez que se utiliza la función o
procedimiento en la que está contenida.

Ej: function segunda(){
static $a=0;
echo $a;
$a=$a+1;
};
//La variable $a irá valiendo 1, 2, 3, etc. cada vez que se
llame a la función y su valor no quedará destruido por cada vez que
la función se ejecute sino tan sólo al finalizar el script principal
desde el cual esta función es llamada de cade vez.

Podemos utilizar el valor de una variables para crear de ese valor
otra variables que también pueda tener asignado su propio valor en
memoria. Ej: $a=”_”; $$a=”-”; echo $_; -> esto escribe -

Del mismo modo que dimos a entender que los nombres de las variables
no pueden comenzar por números, con esta creación de variables
mediante referencias de sus respectivos valores, podremos hacer cosas
como evitar las normas para la creación de variables que no empiecen
por número pero esta práctica no suele ser muy recomendable debido a
incompatibilidades de portabilidad de nuestro código entre servidores
o en la utilización del mismo en conjunción con otros códigos externos
que puedan complementar al nuestro. Ej: $a=”10”; $$a=”pepe”; echo $
{“10”}; → Esto escribe pepe

Por último, podemos asignar las mismas referencias de valor de una
primera variable en una segunda por lo que el valor que hubiera
contenido esta segunda variable queda “pisada” por la primera
referencia pasada. Ej: $a=0; $b=1; $b=&$a; echo $b; → esto escribe 0

<i>Funciones relacionadas con las variables</i>

<u>isset(variable)</u> → Devuelve true si el valor de la variable
existe o false si no. Se utiliza sobre todo para comprobar variables
que nos lleguen desde la web para conocer si se han cubierto los datos
que se piden en ellas.

<u>unset(variable)</u> → Sirver para liberar la memoria destruyendo la
variables en el caso de que la misma no sea utilizada otra vez y no
tener que espera a finalizar la ejecución del script de una función o
del principal (pasada del destructor) en caso de que necesitemos la
memoria para otras operaciones.

<u>empty(variable)</u> → Devuelve true si la el valor de la variable
no existe y false si existe la misma.

Nota: Ya que estas tre últimas son funciones de comprobación no
generará ninguna error o aviso si no existe el valor de la variables
ya que para eso se han construido éstas

<i>Constantes</i>: Son un tipo de variables especial cuyo valor nunca
cambiará en la ejecución de nuestro script.

Se declara y definen de la siguiente forma:
define(“CONSTANTE_EN_MAYUSCULAS”,valor);
No se pueden utilzar dentro de cadenas de comillas dobles ya que no se
desenvolverá su valor dentro de ellas, en esto son distintas de las
demás variable pero en el resto de características y limitaciones de
nombre es idéntico su comportamiento con repecto a las demás
variables.
> ...
>
> leer más »
Reply all
Reply to author
Forward
0 new messages