NF1 - Llenguatge PHP (35h)

De wikiserver
Dreceres ràpides: navegació, cerca

Introducció llenguatges de programació del costat Servidor

Existeix una multitud de llenguatges concebuts o no per a Internet. Cadascun d'ells explota més a fons certes característiques que ho fan més o menys útils per desenvolupar diferents aplicacions. Un llenguatge del costat del servidor és aquell que s'executa en el servidor web, just abans que s'enviï la pàgina a través d'Internet al client. Les pàgines que s'executen en el servidor poden realitzar accessos a bases de dades, connexions en xarxa, i altres tasques per crear la pàgina final que veurà el client. D'altra banda, els llenguatges de costat client (entre els quals no només es troba l'HTML sinó també el Java i el Javascript els quals són simplement inclosos en el codi HTML) són aquells que poden ser directament executats pel navegador i no necessiten un pretractament.

Serverside.jpg

Els llenguatges de costat servidor més àmpliament utilitzats per al desenvolupament de pàgines dinàmiques són l'ASP, JSP, PERL i PHP.

ASP.NET

Llenguatge comercialitzat per Microsoft, i usat per programadors per desenvolupar entre altres funcions, llocs web. ASP.NET és el successor de la tecnologia ASP, va ser llançada al mercat mitjançant una estratègia de mercat denominada .NET. Es desenvolupat per resoldre les limitants que brindava el teu antecessor ASP. Per al desenvolupament d'ASP.NET es pot utilitzar C#, VB.NET o J#. Els arxius compten amb l'extensió (aspx). Per al seu funcionament de les pàgines es necessita tenir instal·lat IIS amb el Framework .Net. Microsft Windows 2003 inclou aquest framework, solament es necessitarà instal·lar-ho en versions anteriors. El llenguatge ASP consisteix en una sèrie de classes .NET utilitzades per crear aplicacions Web, tant del costat client (Web Form) com del costat servidor (Web Service). La integració de nadiva .NET Framework amb el sistema operatiu Windows Server 2003 fa que la seva execució sigui més estable i ràpida que altres llenguatges de programació.

Avantatges:

  • Completament orientat a objectes.
  • Controls d'usuari i personalitzats.
  • Divisió entre la capa d'aplicació o disseny i el codi.
  • Facilita el manteniment de grans aplicacions.
  • Increment de velocitat de resposta del servidor.
  • Major velocitat.
  • Major seguretat.

Desavantatges:

  • Major consum de recursos.
  • Tecnologia propietària.
  • Hostalatge de llocs web costosos.

JSP: Java Server Pages

És un llenguatge per a la creació de llocs web dinàmics, acrònim de Java Server Pages. Està orientat a desenvolupar pàgines web en Java. JSP és un llenguatge multiplataforma. JSP va ser desenvolupat per Sun Microsystems. Comparteix avantatges similars a les d'ASP.NET, desenvolupat per a la creació d'aplicacions web potents. Posseeix un motor de pàgines basat en els servlets de Java. Per al seu funcionament es necessita tenir instal·lat un servidor Tomcat.

Característiques

  • Codi separat de la lògica del programa.
  • Les pàgines són compilades en la primera petició.
  • Permet separar la part dinàmica de l'estàtica a les pàgines web.
  • Els arxius es troben amb l'extensió (jsp).
  • El codi JSP pot ser incrustat en codi HTML.

Avantatges:

  • Execució ràpida del servlets.
  • Crear pàgines del costat del servidor.
  • Multiplataforma.
  • Codi ben estructurat.
  • Integritat amb els mòduls de Java.
  • La part dinàmica està escrita en Java.

PERL (Practical Extraction and Report Language)

És un llenguatge de programació desenvolupat per Larry Wall (lwall at netlabs.com) inspirat en altres eines d'UNIX com són: sigueu, grep, awk, c-shell, per a l'administració de tasques pròpies de sistemes UNIX. No estableix cap filosofia de programació concreta. No es pot dir que sigui orientat a objectes, modular o estructurat encara que suporta directament tots aquests paradigmes; el seu punt fort són les labors de processament de textos i arxius. Llenguatge de programació basat en scripts portable a gairebé qualsevol plataforma. És molt utilitzat per escriure CGIs. Un dels seus elements més potents són les expressions regulars, que a partir de la seva versió en Perl han estat adoptades per altres llenguatges i plataformes com .NET o Javascript.

Avantatges

  • Es poden ajuntar diversos programes d'una forma senzilla per aconseguir una meta determinada. Els usuaris de Windows agrairan aquesta propietat ja que normalment emmalalteixen d'un bon llenguatge tipus “script”.
  • És relativament ràpid per a un llenguatge tipus “script”.
  • Està disponible en múltiples plataformes i sistemes operatius (UNIX, Linux i Windows). Un programa que s'escrigui tenint en compte la compatibilitat pot ser escrit en una plataforma i executat en una altra.
  • Hi ha una col·lecció enorme de mòduls que poden ser incorporats a qualsevol “script” de Perl. Estan disponibles en el CPAN (“Comprehensive Perl Arxivi Network”). En particular existeix una extensió per a càlcul numèric denominada PDL.
  • Perl és gratuït. Molt més que això, és “Programari Lliure”. Això vol dir que el codi font està disponible perquè qualsevol el pugui veure o modificar, i el que és més important, sempre ho estarà. Encara que mai pretenguis canviar el codi, és important disposar de la possibilitat de fer-ho, ja que sempre es podrà contractar a una tercera persona perquè ho modifiqui en el cas que hi hagi un error, i hauria de ser possible solucionar-ho.
  • Li atorga al programador molta llibertat perquè faci el programa com vulgui. Tal com diu l'eslògan de Perl “Hi ha més d'una forma de fer-ho”

PHP

PHP és l'acrònim de Hipertext Preprocesor. És un llenguatge de programació del costat del servidor gratuït i independent de plataforma, ràpid, amb una gran llibreria de funcions i molta documentació. Va ser creat originalment en 1994 per Rasmus Lerdorf, però com PHP està desenvolupat en política de codi obert, al llarg de la seva història ha tingut moltes contribucions d'altres desenvolupadors. El client solament rep una pàgina amb el codi HTML resultant de l'execució de la PHP. Com la pàgina resultant conté únicament codi HTML, és compatible amb tots els navegadors.

Avantatges

  • Molt fàcil d'aprendre.
  • Es caracteritza per ser un llenguatge molt ràpid.
  • Suporta en certa mesura l'orientació a objecte. Classes i herència.
  • És un llenguatge multiplataforma: Linux, Windows, entre uns altres.
  • Capacitat de connexió amb la majoria dels manejadores de base de dades: MysSQL, PostgreSQL, Oracle, MS SQL Server, entre unes altres.
  • Capacitat d'expandir el seu potencial utilitzant mòduls.
  • Posseeix documentació a la seva pàgina oficial la qual inclou descripció i exemples de cadascuna de les seves funcions.
  • És lliure, per la qual cosa es presenta com una alternativa de fàcil accés per a tots.
  • Inclou gran quantitat de funcions.
  • No requereix definició de tipus de variables ni maneig detallat del baix nivell.

Preparació de l'entorn

Instal·lació de servidors d'aplicacions Web

Internet s’ha convertit en la principal eina d’intercanvi d’informació a la societat actual. La connexió dels ordinadors a les xarxes locals i aquestes xarxes a d’altres de grans dimensions ha possibilitat la comunicació global d’informació entre els ordinadors arreu del món. Per poder oferir serveis web, els servidors han de tenir instal·lats una sèrie de serveis. El servidor web permet l’enviament de continguts a altres ordinadors a través de la xarxa. Els preprocessadors d’hipertext (com PHP) permeten crear continguts web de forma dinàmica. Els servidors de bases de dades permeten emmagatzemar informació de forma estructurada que es pot fer servir per generar contingut web. Aquests serveis han de ser instal·lats i configurats correctament abans de començar a crear el contingut web dinàmic del nostre web.

Un servidor web és una peça de programari que respon a les peticions dels navegadors i lliura la pàgina per al navegador a través d’Internet. Quan es crida a una pàgina web per l’adreça –l’URL (uniform resource locator), per exemple, www.infomerce.es/index.html-, la comunicació entre el navegador i el servidor és possible gràcies a tres protocols:

  • TCP(Transmission Control Protocol, protocol de control de transmissió): és el responsable de fer que el missatge arribi a la destinació sense errors.
  • IP(Internet Protocol): és el responsable de fer que el missatge trobi el camí fins al servidor.
  • HTTP(Hypertext Transfer Protocol, protocol de transferència d’hipertext): és el protocol que ha indicat l’usuari a l’hora de demanar el recurs al servidor. La primera part d’un recurs URL correspon al protocol que utilitzaran client i servidor per intercanviar dades.

HTTP: comunicació entre servidor i client

Un cop establerta la connexió entra en joc el protocol HTTP: el navegador envia una petició al servidor en què sol·licita el recurs index.html. El servidor processa aquesta petició i retorna la pàgina sol·licitada al navegador, que interpreta les etiquetes HTML i la presenta a l’usuari.

Peticiohttp.jpg

La informació que el client envia al servidor en la petició és la següent:

  • El mètode HTTP: l’acció que s’ha de fer.
  • El recurs a què s’ha d’accedir (una part de l’URL).
  • La informació que l’usuari envia al servidor.

La informació que el servidor envia en la resposta té dues parts ben diferenciades:

  • La capçalera: conté el codi que indica si la petició s’ha complert. També conté el tipus de contingut que enviarà al client.
  • El contingut: (text, codi HTML, imatges, etc.) del recurs demanat.

Exercici: Preparació M.V. amb Ubuntu i PHP

Es tracta d'importar una M.V. amb Ubuntu Server. Aquesta màquina virtual la utilitzarem al llarg del curs per desenvolupar programes amb el llenguatge PHP. LA M.V. ha de tenir les següents característiques:

  • 512 MB de Ram
  • Targeta mode Pont (Has de reinicialitzar la @MAC i esborrar el fitxer: /etc/udev/rules.d/70-persistent-net.rules)
  • Configura la @IP.

Instal·la el següent programari:

  • openssh-server (per permetre comunicacions remotes)
  • Servidor Web apache2
  • Servidor PHP

Exercici: Primer projecte amb NetBeans

Crea un projecte PHP amb NetBeans. Fes que automàticament guardi tots els fitxers a la màquina virtual creada al apartat anterior. Crea una pàgina d'exemple i comprova que funciona. La pàgina d'exemple pot ser la següent:

<!DOCTYPE html>
<html>
     	<head>
	</head>
	<body>
        <p>
          <?php
            echo "Primera Pàgina amb PHP"; 
          ?>
        </p>
	</body>
</html>

El Llenguatge PHP

Introducció

PHP és un llenguatge de programació obert que s’integra directament en pàgines HTML. El seu ús ha esdevingut gairebé imprescindible en les pàgines que han d’utilitzar bases de dades o formularis. Rasmus Lerdorf és el creador del llenguatge PHP. El 1995 presenta la primera edició d’aquest llenguatge amb el nom de Personal Home Page tools amb llicència pública GNU. Per crear el PHP, Rasmus utilitza el codi de programació C.

El codi PHP que escriviu, l’haureu d’incrustar dins de codi HTML, concretament dins les etiquetes \<body\> del document. Mitjançant unes marques l’HTML no interpretarà el codi PHP, el qual, i mitjançant les mateixes marques, s’executarà en el servidor.

El codi PHP s’executa en un servidor i mostra el resultat en un client. Visualitzareu els resultats amb un navegador web.

Quan arrenca el PHP es fa la lectura del fitxer php.ini. Aquest fitxer conté la configuració del PHP i es crea durant la instal·lació del PHP. És possible que necessiteu fer canvis en el fitxer de configuració, preneu la precaució de fer-ne una còpia de seguretat abans de fer aquestes modificacions. Una inspecció visual del fitxer php.ini us servirà per comprendre’n el funcionament. Depenent del valor de les variables que conté aquest fitxer, el comportament del PHP variarà en la vostra màquina. Podeu comprovar que cada variable que forma part del fitxer està àmpliament comentada, amb comentaris que es marquen amb un punt i coma.

Sintaxi

Generalitats

La sintaxi d'un llenguatge de programació es defineix com el conjunt de regles que han de seguir-se en escriure el codi font dels programes per considerar-se com a correctes per a aquest llenguatge de programació. Les normes bàsiques que defineixen la sintaxi de PHP són les següents:

  • Si voleu que s’interpreti el vostre codi és imprescindible que encabiu el codi escrit en PHP entre dos delimitadors. Aquestes marques són <?php , que la fareu servir per indicar l’inici de codi en llenguatge PHP, i ?> , que utilitzareu per marcar el final del vostre codi PHP.
  • Indicareu el final d’una instrucció amb punt i coma. Cada vegada que es detecti un punt i coma s’interpretarà el codi inserit fins a aquell punt.
  • Els comentaris en PHP els podreu incloure mitjançant:
    • Dues barres (//) o un coixinet (#) si voleu comentar una línia
    • Una barra i un asterisc (/*) per indicar l’inici de comentari, i un asterisc i una barra per indicar el final de comentari si voleu comentar més d’una línia(/*).
  • No es defineix el tipus de les variables: PHP és un llenguatge de programació que no obliga a declarar prèviament el nom de les variables que s’utilitzaran ni el seu tipus (és diu que és un llenguatge sense tipus o no tipat). Ara bé, tot i que existeixen els tipus de dades en PHP aquests no es comproven.
  • No es distingeixen les majúscules i minúscules.

Exemples:

<?php
echo "Aquí teniu una instrucció.";
echo "<br>i aquí una altra instrucció.";

//Si voleu comentar una línia ho podeu fer d’aquesta manera...
#...o bé d’aquesta altra.
/* Però si necessiteu comentar
més línies aquesta és la millor
manera de fer − ho! */
?>

Variables

Per representar una variable caldrà escriure el símbol del dòlar seguit pel nom que vulgueu posar. En el moment de donar nom a una variable heu de tenir en compte que es diferencien majúscules i minúscules i que haurà de començar amb una lletra o caràcter de subratllat. En PHP, a diferència de molts altres llenguatges, no cal declarar una variable abans d’utilitzar-la. El símbol del dòlar és el que marca que es tracta d’una variable.

<?php
$Nom='whovian';
$Familia='Informàtica';
$Cicle="CFGS Desenvolupament d'aplicacions Web";
$Modul = "DAW en entorn servidor";
$Durada= 165;
echo "Hola $nom!<br>
Benvingut als estudis d’$Familia!!!<br>
Cicle: $Cicle<br>
Mòdul: $Modul<br>
Durada: $Durada hores";
?>

Com podeu veure, les variables poden adquirir qualsevol dels tipus suportats, i la variable $Durada emmagatzema l’enter 180, mentre que la resta de variables emmagatzemaran cadenes. Les variables s’assignen per valor per defecte, però si voleu assignar un valor per referència ho haureu d’indicar fent servir el símbol & tot just davant de la variable

Operadors

Permetran fer accions dins el codi. Podreu canviar i assignar valors, canviar l’adreça del codi, condicionar l’execució de blocs de codi i, en definitiva, dotar de la complexitat necessària els vostres programes per aconseguir un objectiu. Els operadors es poden agrupar en tres blocs segons el nombre de valors sobre els quals s’actua.

  • L’operador unari opera sobre un valor i el que pot fer en aquest valor és negar-lo, incrementar-lo o decrementar-lo, entre altres coses.
  • L’operador binari opera sobre dos valors i permet sumar-los, restar-los o comparar-los.
  • L’operador ternari permet escollir entre dues expressions en funció d’una altra.

Operadors Aritmètics Teniu en compte que la divisió retornarà un valor en coma flotant si el resultat de la divisió no és exacte.

Operador Nom Acció
$valor + $valorB Addició Suma de $valor i $valorB
$valor - $valorB Subtracció Diferència entre $valor i $valorB
$valor * $valorB Multiplicació Producte de $valor i $valorB
$valor / $ valorB Divisió Quocient de $valor i $valorB
$valor % $valorB Mòdul Resta de $valor dividit per $valorB

Operadors d'assignació L’operador bàsic d’assignació és l’igual. Amb l’operador igual la variable de l’esquerra rep el valor de l’expressió de la dreta.

Operador Nom Acció
-$valor = $valorB Assignació Assignar el contingut de $valorB a $valor
$valor += $valorB Addició i Assignació Suma de $valor i $valorB i ho emmagatzemar a $valor
$valor - $valorB Subtracció Diferència entre $valor i $valorB
$valor.= “text” Concatenació i Assignació Concatenar la cadena de la dreta a la de l’esquerra

Operadors de bit

Operador Nom Acció
$valor & $valorB i Assignar el contingut de $valorB a $valor
$valorB o i Assignació Suma de $valor i $valorB i ho emmagatzemar a $valor
$valor ˆ $valorB xor Diferència entre $valor i $valorB
̃ $valor Negació Concatenar la cadena de la dreta a la de l’esquerra
$valor <<$valorB Desplaçament a l’esquerra Concatenar la cadena de la dreta a la de l’esquerra
$valor >>$valorB Desplaçament a la dreta Concatenar la cadena de la dreta a la de l’esquerra

Operadors de comparació

Operador Nom Acció
$valor == $valorB Igual TRUE si $valor és igual a $valorB.
$valor === $valorB Idèntic TRUE si $valor és igual a $valorB i són del mateix tipus.
$valor != $valorB Diferent TRUE si $valor no és igual a $valorB.
$valor <> $ valorB Diferent TRUE si $valor no és igual a $valorB.
$valor !== $valorB No idèntic TRUE si $valor no és igual a $valorB o no són del mateix tipus
$valor < $valorB Més petit que TRUE si $valor és més petit que $valorB.
$valor > $valorB Més gran que TRUE si $valor és més gran que $valorB.
$valor <= $valorB Més petit o igual que TRUE si $valor és més petit o igual que $valorB.
$valor >= $valorB Més gran o igual que TRUE si $valor és més gran o igual que $valorB.


Operadors d’increment i decrement

Operador Nom Acció
++$valor Preincrement Incrementa $valor una unitat, i després retorna $valor.
$valor++ Postincrement Retorna $valor i incrementa $valor una unitat.
–$valor Predecrement Decrementa $valor una unitat i retorna $valor
$valor– Postdecrement Retorna $valor i decrementa $valor una unitat.

Operadors de lògica

Operador Nom Acció
$valor and valorB i TRUE si $valor i $valorB són TRUE
$valor or $valorB o TRUE si $valor o $valorB són TRUE.
$valor xor $valorB xor TRUE si $valor o $valorB són TRUE, però no tots dos alhora.
 !$valor No Inverteix el contingut de $valor
$valor && $valorB i TRUE si $valor i $valorB són TRUE.
$valor II $valorB o TRUE si $valor o $valorB són TRUE.

Els Vectors i les Matrius (Arrays)

Les matrius i els vectors són conjunts de dades que poden estar definides en un Guió de PHP. Les matrius poden contenir altres matrius dintre d'ells sense restricció (multidimensionals).

Els vectors es poden crear de dues maneres. La primera consisteix en l'ús de la funció array(). La segona implica l'ús de claudàtors. Exemple de declaracions d'arrays:

$elmeuarray = array($valor1, $valor2);
//Aquesta declaració genera un array a la variable '$elmeuarray' que te la següent informació:
$elmeuarray[0] = $valor1;
$elmeuarray[1] = $valor2;

//També es pot declarar de la següent manera:
$elmeuarray = array('mes1' => $valor1, 'mes2' => $valor2);
//Aquesta declaració genera un array a la variable '$elmeuarray' que te la següent informació:
$elmeuarray['mes1'] = $valor1;
$elmeuarray['mes2'] = $valor2;

//Però tambés es pot declarar directament amb claudàtors:
$elmeuarray[0] = $valor1;
//o amb la següent notació
$elmeuarray['mes1'] = $valor1;

Exemples d'arrays:

$array = array("name"=>"Toyota","type"=>"Celica","colour"=>"black","manufactured"=>"1991");
$array2 = array("Toyota","Celica","black","1991");
$array3 = array("name"=>"Toyota","Celica","colour"=>"black","1991");
print_r($array);
print_r($array2);
print_r($array3);
$array['name']="Toyota";
$array['type']="Celica";
$array['colour']="black";
$array['manufactured']="1991";

$array2[]="Toyota";
$array2[]="Celica";
$array2[]="black";
$array2[]="1991";

$array3['name']="Toyota";
$array3[]="Celica";
$array3['colour']="black";
$array3[]="1991";

print_r($array);
print_r($array2);
print_r($array3);

Les matrius son vectors multidimensionals. Els elements d'un vector a la seva vegada poden ser un altre vector. Un exemple és el següent:

<?php
$cars = array(
   "car1" => array("make" => "Toyota","colour" => "Green","year" => 1999,"engine_cc" => 1998),
   "car2" => array("make" => "BMW","colour" => "RED","year" => 2005,"engine_cc" => 2400),
   "car3" => array("make" => "Renault","colour" => "White","year" => 1993,"engine_cc" => 1395),
);
?>

<?php
echo "$cars['car1']['make']<br>";
echo "$cars['car3']['engine_cc']";

/* El resultat de l'execució de les intruccions anteriors és:
Toyota
1395
*/
?>

Més informació sobre arrays aquí. Existeixen MOLTES funcions per manipular els arrays. Dona una ullada a aquesta pàgina abans que comencis a implementar funcions que ja existeixen a la llibreria de php.

Estructures de control

La sentència IF i l'Operador Ternari

Les estructures condicionals s'utilitzen per controlar quines instruccions s'executen. Els condicionals en PHP estan estructurats de manera similar als trobats en C ++ i Java . Exemple d'estructures condicionals:

<?php
//Exemple 1
$foo = 1;
$bar = 2;
if($foo == $bar) {
    echo "$foo is equal to $bar.";
} elseif ($foo > $bar) {
    echo "$foo is greater than $bar.";
} else {
    echo "$foo is less than $bar.";
}

//Exemple 2
$lower = 10;
$upper = 100;
$needle = 25;
if(($needle >= $lower) && ($needle <= $upper)) {
    echo "The needle is in the haystack.";
} elseif (($needle <= $lower) || ($needle >= $upper)) {
    echo "The needle is outside of the haystack.";
}

//Exemple Operador Ternari

$missatge =  (date('G') < 12) ? 'Buenos días' : 'Buenas tardes';

//equival a la següent estructura:
if (date('G') < 12) {
$missatge = 'Buenos días';
} else {
$missatge = 'Buenas tardes';
}
?>

La sentència SWITCH

Quan es necessita utilitzar un IF amb molts Else pot resultar que es vegi un codi molt redundant. Exemple:

if($user_command == "n")
{
  go_north();
}
else if($user_command == "e")
{
  go_east();
}
else if($user_command == "s")
{
  go_south();
}
else if($user_command == "w")
{
  go_west();
}
else
{
  do_something_else();
}

Per millorar la llegibilitat del codi utilitzarem l'estructura 'Switch' de la següent manera:

switch($user_command)
 {
   case 'n':
     go_north();
     break;
   case 'e':
     go_east();
     break;
   case 's':
     go_south();
     break;
   case 'w':
     go_west();
     break;
   default:
     do_something_else();
     break;
 }

Un altre exemple

if($firstvariable == 'comparison1' 
         || $firstvariable == 'comparison2')
 {
      doSomething();
      doSomethingElse();
 }
 else if ($firstvariable == 'comparison3')
 {
      doAThirdThing();
 }
 else
 {
      launchMissiles();
 }

//amb l'estructura switch :
 switch($firstvariable)
 {
  case 'comparison1':
  case 'comparison2':
      doSomething();
      doSomethingElse();
      break;
 
  case 'comparison3':
      doAThirdThing();
      break;
 
  default: 
      launchMissiles();
      break;
 }

La sentència WHILE

Aquesta sentència s'utilitzarà per repetir una serie d'instruccions tantes vegades com el condicional sigui evaluat a True. Exemple:

<?php
$c = 0;
while ($c < 5) {
   echo $c++;
} ?>

Mira el següent codi i enraona si serà un bucle infinit o no:

$c = 1;
$myName="Fred";
while ($myName != "Rumplestilskin") 
{
   if ($myName=="Fred") 
   {
      $myName="Leslie";
   }
   else 
   {
      $myName="Marc";
   }
 
   $c++;
 
   if ($c==3) 
   {
      break;
   }
};
echo "You lose and I get your baby!\n";

La sentència do ... WHILE

És semblan al bucle anterior però les intruccions sempre s'execulten almenys 1 vegada. Exemple:

$c = 6;
  do {
    echo 'Hi';
  } while ($c < 5);

La sentència FOR

La sintaxi bàsica d'aquesta sentencia és la següent:

 for([initialization]; [condition]; [step])

Exemple d'ús:

for($i = 0; $i < 5; $i++)
 {
  echo($i . "<br />");
 }

Exemple d'utilització amb arrays:

$menu = array("Toast and Jam", "Bacon and Eggs", "Homefries", "Skillet", "Milk and Cereal");
 // note to self: get breakfast after writing this article
 $count = count($menu);
 for($i = 0; $i < $count; $i++)
 {
  echo($i + 1 . ". " . $menu[$i] . "<br />");
 }

La sentència FOREACH

Aquesta sentència és molt utilitzada per recòrrer arrays. Com el parell array[key]=value pot ser string en ambdós casos, aquesta estructura ens permet obternir-los: Exemple:

foreach ($array as $someVar) {
  echo ($someVar . "<br />");
}

//un altre exemple:
foreach ($array as $key => $value) {
  echo ($key."holds the value ".$value."<br />");
}


La sentència break

La sentència break provoca la sortida de qualsevol estructura de control, trencant així un bucle. Penseu per exemple un bucle que cerca un element d’un array. Una vegada trobat, és ineficient acabar de recórrer la resta de l’array. Podeu indicar a aquesta sentència quantes estructures de control voleu saltar. En l’exemple següent el break provoca la sortida de dos blocs de codi:

<?php
while($edat<20)
{
	for( ; ; $edat=$edat+1)
	{
		if($edat==18)
		{
			echo "Ara ja tens $edat anys!<br>";
			break 2;
		}
		echo "Encara ets menor d’edat, ja que tens $edat anys!<br>";
	}
	echo "Aquesta línia no sortirà per pantalla!";

}
echo "Ja no ets menor d’edat! Tens $edat anys!";
?>

Exercicis

Exercici: Recòrrer array

Donat el següent array:

$eu = array( "Italy"=>"Rome", "Luxembourg"=>"Luxembourg", "Belgium"=> "Brussels", 
"Denmark"=>"Copenhagen", "Finland"=>"Helsinki", "France" => "Paris", "Slovakia"=>"Bratislava", 
"Slovenia"=>"Ljubljana", "Germany" => "Berlin", "Greece" => "Athens", "Ireland"=>"Dublin", 
"Netherlands"=>"Amsterdam", "Portugal"=>"Lisbon", "Spain"=>"Madrid", "Sweden"=>"Stockholm",
 "United Kingdom"=>"London", "Cyprus"=>"Nicosia", "Lithuania"=>"Vilnius", 
"Czech Republic"=>"Prague", "Estonia"=>"Tallin", "Hungary"=>"Budapest", "Latvia"=>"Riga", 
"Malta"=>"Valetta", "Austria" => "Vienna", "Poland"=>"Warsaw") ;

Crea un script amb PHP que mostri un llistat amb el noms de les capitals i els seus corresponents països. El llistat ha de ser semblant a:

La capital de Netherlands és Amsterdam
La capital de Greece és Athens
La capital de Germany és Berlin
....

Exercici: Afegir un element a un array

Escriu un programa que afegeixi un nou element a un array en una posició determinada. Exemple:

//abans:
12345

//després d'afegir $ l'array és:
123$45

Exercici: Curta i llarga

Escriu un programa en PHP que retorni la longitud màxima i mínima dels strings que conté un array. Exemple:

array: ("abcd","abc","de","hjjj","g","wer")

La longitud més curta és 1 i la més llarga és 4.

Exercici: Dibuixa asteriscs =

Dibuixa amb PHP utilitzant asteriscs el següent dibuix:

* 
* * 
* * * 
* * * * 
* * * * * 
* * * * * 
* * * * 
* * * 
* * 
* 

Exercici: Escacs

Dibuixa una taula d'escacs com la que pots veure a continuació. Table width="270px" i cada cel·la ocupa 30px d'amplada i d'altura. Escacs.png

Funcions

Les funcions son grup d'instruccions que poden ser cridades en qualsevol moment. Les funcions són útils per re-utilitzar codi de manera sencilla dintre de la nostra aplicació.

Funcions definides per l’usuari

L’usuari pot definir totes les funcions que necessiti. És imprescindible que el nom donat a la funció no estigui prohibit, és a dir, no es poden fer servir:

  • paraules reservades (per exemple, echo),
  • començar amb un nombre o un caràcter especial
  • repetir el nom d’una funció dins un mateix àmbit.

Tot i que el PHP no farà cap distinció entre majúscules i minúscules, es recomana utilitzar el nom de la funció idèntic a l’utilitzat en la declaració. Les funcions poden rebre paràmetres. El pas de paràmetres d’entrada es fa escrivint entre parèntesis i a continuació del nom de la funció. En l’exemple següent podeu veure com es declara la funció missatge i com, posteriorment, es crida passant-hi un paràmetre.

<?php
function missatge($argument)
{
	echo "$argument<br>";
}
missatge("Aquest és l’argument que es passa en aquest exemple.");
?>

Les funcions també podran retornar valors. Per fer-ho caldrà utilitzar la sentència return. En l’exemple següent comprovareu com la funció suma, la qual rep dos paràmetres, retorna el resultat de sumar dos nombres:

<?php
function suma ($valor1,$valor2)
{
	return($valor1+$valor2);
}
echo suma(4,6);
?>
</php>

Funcions Internes

El llenguatge PHP té funcions definides internament. Aquestes funcions són de gran utilitat per al programador i resulta imprescindible estudiarles i conèixer-ne les més importants.

És possible que diverses funcions no es reconeguin en el vostre entorn de treball del PHP; el motiu d’això és que algunes funcions internes no s’han inclòs en la compilació, la qual cosa ha fet necessària una compilació dels mòduls que les contenen. Amb phpinfo() es poden veure les extensions carregades en la vostra configuració del PHP.

Són funcions internes molt usuals echo, fprintf, print, printf i sprintf, en què queda demostrat que el llenguatge PHP ja té definides funcions específiques que poden ser de gran utilitat per a l’usuari.

Podeu mirar l’ajuda de PHP a la pàgina oficial.

En l’exemple següent es mostra com es pot codificar amb codificació md5 el contingut d’una variable:

<?php
$nom = 'Blanca';
echo("La codificació md5 de $nom és:<br>");
echo md5($nom);
?>

Integració PHP

Normalment trobareu el llenguatge de programació PHP dins d’altres llenguatges. El més usual és escriure codi en PHP dins de codi HTML.

Heu de recordar que el codi PHP és interpretat pel servidor, i els resultats es mostren en el navegador que utilitzeu. La simbiosi que es crea entre el PHP i l’HTML permet al PHP generar HTML i a l’HTML passar dades al PHP.

PHP dintre de PHP

Include vs Require

És possible inserir el contingut d'un fitxer PHP en un altre arxiu PHP (abans que el servidor l'executi), amb la declaració d'incloure o requerir. Les sentències d'inclusió i requereixen són idèntics , excepte en cas de fallada :

  • requerir (require) produirà un error fatal ( E_COMPILE_ERROR ) i aturar la seqüència de comandaments
  • inclou (include) només produirà una advertència ( E_WARNING ) i el guió seguirà

Per tant, si voleu que l'execució continuï mostrant als usuaris la sortida, fins i tot si el fitxer d'inclusió falta, utilitzeu la instrucció d'inclusió. Altrament, en cas de FrameWork, CMS, o amb aplicacions PHP complexes, sempre utilitzeu la instrucció que requereix el fitxer per a poder continuar l'execució. Això ajudarà a evitar posar en perill la seguretat i la integritat de l'aplicació, per si de cas un arxiu clau falta accidentalment.

Inclusió d'arxius estalvia molta feina. Això significa que pots crear una capçalera, peu de pàgina o arxiu de menú estàndard per a totes les pàgines web. Llavors, quan la capçalera ha de ser actualitzada, només s'ha d'actualitzar la capçalera inclouen l'arxiu.

Sintaxi

include 'filename.php';

//or

require 'Otherfilename.php';

Include_once vs Require_once

Require_once() es pot utilitzar per incloure un arxiu PHP en un altre, quan potser s'hagi de incloure el fitxer anomenat més d'una vegada. Si es comprova que l'arxiu ja ha estat inclòs, ignorarà altres inclusions. El seu funcionament és identic a require.

<?php  
require_once('x.php');  
require_once('x.php');  
?>

Include_once() es pot utilitzar per incloure un arxiu PHP en un altre, quan potser s'hagi de incloure el fitxer anomenat més d'una vegada. Si es comprova que l'arxiu ja ha estat inclòs, ignorarà altres inclusions. El seu funcionament és identic a include.

<?php  
include_once('x.php');  
include_once('x.php');  
?>

Bibliografia / Webgrafia