Diferencia entre revisiones de «PHP Funcións para xerar código. Constantes e variables»
Ir a la navegación
Ir a la búsqueda
| Línea 43: | Línea 43: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
=== Función print === | === Función print === | ||
| Línea 121: | Línea 103: | ||
?> | ?> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| + | |||
| + | |||
| + | == Caracteres especiais dentro das funcións == | ||
| + | |||
| + | * Pode darse o caso que necesitedes poñer dentro dun echo, printf,...caracteres que sexa interpretados pola función e que polo tanto non se visualicen. | ||
| + | |||
| + | * O clásico exemplo será poñer o caracter " dentro dunhas das funcións. | ||
| + | * Cando necesitemos poñer o carácter " dentro dunha función, temos varias opcións (no exemplo está aplicado á función echo pero valería para o resto): | ||
| + | |||
| + | ::<syntaxhighlight lang="php" line enclose="div" highlight="" > | ||
| + | <?php | ||
| + | echo "Esta cadea \" está entrecomillada\" dentro dun echo...<br/>"; | ||
| + | echo 'Outra forma "de entrecomillar" sería utilizando as comillas \'\''; | ||
| + | ?> | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | : Como vemos o carácter escape é o carácter '\'. | ||
| + | : Hai unha diferenza entre utilizar as comillas simples ou as dobres. O veremos claramente cando vexamos as variables. De todas formas un exemplo: | ||
| + | ::<syntaxhighlight lang="php" line enclose="div" highlight="" > | ||
| + | <?php | ||
| + | echo 'Isto non se expandirá: \n unha nova liña'; | ||
| + | echo "Isto se expandirá: \n unha nova liña"; | ||
| + | ?> | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | |||
| + | * O mesmo que o anterior, pero aplicado a outro carácter especial. Esta vez ao carácter % dentro da función printf/sprintf. | ||
| + | |||
| + | : Neste caso en vez de amosar dito carácter a función o vai interpretar como se fose un parámetro. Para 'escapar' dito carácter debemos de escribir dous veces o '%' como se amosa a continuación: | ||
| + | ::<syntaxhighlight lang="php" line enclose="div" highlight="" > | ||
| + | <?php | ||
| + | printf("Quero amosar o %% e ademais paso un parámetro: %s","valor param"); | ||
| + | ?> | ||
| + | </syntaxhighlight> | ||
| + | |||
== Constantes == | == Constantes == | ||
Revisión del 08:56 28 sep 2016
Sumario
Funcións para xerar código
- NOTA: Esta sección está asociada á realización do EXERCICIO 1.
- Como comentamos anteriormente, normalmente imos ter código PHP dentro de código HTML. A execución do código PHP dará como resultado un código HTML que se integrará có resto do código.
- Para que PHP 'envío' cadeas que serán interpretadas polo navegador do cliente necesitamos utilizar as seguintes funcións.
Función echo
- Sintaxe: echo "Cadea a amosar";
- Enlaces de interese: Cadea de caracteres.
- O resultado de poñer esta liña será unha cadea que será visualizada polo navegador do cliente que fixo a petición.
- Exemplos:
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es"> 4 <head> 5 <meta charset="utf-8" /> 6 <title>Exemplos de códigos php</title> 7 </head> 8 <body> 9 <?php 10 echo "Unha cadea"; 11 echo "<br />"; 12 echo "Outra cadea"; 13 14 echo "Podemos poñer todo xunto. <br /> Non temos por que usar echos diferentes...<br/>"; 15 16 echo "Neste caso " . "concatenamos dúas cadeas.<br/>"; 17 echo 'Outra' ,' forma ', 'de concatenar....'; 18 19 echo "<h5> Podemos poñer calqueira código HTML que será visualizado polo navegador</h5>" 20 . "<h3>Asegurarse que se cumpre o estándar correspondente !!!"; 21 22 ?> 23 </body> 24 </html>
Función print
- Ten o mesmo efecto que a función echo pero...
- print imprime unha cadea; echo pode imprimir máis dunha separadas por coma.
- print devolve un valor int que sempre ten valor 1 e polo tanto pode ser empregado dentro dunha expresión.
- echo pode ser un pouco máis rápido que print.
- Exemplos de código:
1 <?php 2 print "Esto é unha cadea impresa con print..."; 3 ?>
Función printf
- Tamén produce unha saída pero permite establecer un formato dentro da cadea que amosa.
- Máis información: http://php.net/manual/es/function.sprintf.php
- Por defecto, se printf non leva argumentos produce a mesma saída que echo e print.
- Así, por exemplo:
1 <?php 2 printf ("Esto é unha cadea impresa con printf..."); 3 ?>
- A principal vantaxe é que podemos engadir parámetros que será substituídos na cadea cun determinado formato.
- Por exemplo:
1 <?php 2 printf ("Isto é un número decimal %d<br/>",3.14); 3 printf ("Isto é un número flotante %f<br/>",3.14); 4 printf ("Isto é unha cadea %s</br>",3.14); 5 6 ?>
- Tamén está moi ben cando temos varias variables e non queremos estar concatenando una detrás doutra, ou que estean en metade da cadea....
1 <?php 2 3 printf("Esta '%s' terá varios parámetros coma este número: %d","cadea",10000); 4 5 ?>
Función sprintf
- Ten a mesma sintaxe que a función printf, pero coa diferenza que o resultado vai ser gardado nunha variable (veremos as variables no seguinte punto).
- Por exemplo:
1 <?php 2 $resultado = sprintf("Esta '%s' terá varios parámetros coma este número: %d","cadea",10000); 3 echo $resultado; 4 ?>
Caracteres especiais dentro das funcións
- Pode darse o caso que necesitedes poñer dentro dun echo, printf,...caracteres que sexa interpretados pola función e que polo tanto non se visualicen.
- O clásico exemplo será poñer o caracter " dentro dunhas das funcións.
- Cando necesitemos poñer o carácter " dentro dunha función, temos varias opcións (no exemplo está aplicado á función echo pero valería para o resto):
1 <?php 2 echo "Esta cadea \" está entrecomillada\" dentro dun echo...<br/>"; 3 echo 'Outra forma "de entrecomillar" sería utilizando as comillas \'\''; 4 ?>
- Como vemos o carácter escape é o carácter '\'.
- Hai unha diferenza entre utilizar as comillas simples ou as dobres. O veremos claramente cando vexamos as variables. De todas formas un exemplo:
1 <?php 2 echo 'Isto non se expandirá: \n unha nova liña'; 3 echo "Isto se expandirá: \n unha nova liña"; 4 ?>
- O mesmo que o anterior, pero aplicado a outro carácter especial. Esta vez ao carácter % dentro da función printf/sprintf.
- Neste caso en vez de amosar dito carácter a función o vai interpretar como se fose un parámetro. Para 'escapar' dito carácter debemos de escribir dous veces o '%' como se amosa a continuación:
1 <?php 2 printf("Quero amosar o %% e ademais paso un parámetro: %s","valor param"); 3 ?>
Constantes
- As constantes son valores que normalmente se definen ao comezo do código e cuxo valor non varía ao longo do programa.
- Soen identificar por medio de letras maiúsculas.
- Os nomes das constantes poden empezar cunha letra ou guión baixo pero non poden empezar cun número.
- Distingue maiúsculas de minúsculas no seu nome.
1 <?php 2 3 define('MEUNOME','Angel Fernández'); 4 echo "<p>Aquí poño o menu " . MEUNOME; 5 6 ?> 7 <p> Outro párrafo....</p> 8 <?php 9 printf("Ola. Sigo sendo %s. Poido seguir referenciando a constante ao longo de toda a páxina.",MEUNOME); 10 ?>
- Nunha constante podemos definir parámetros que despois sexan substituídos polos seus valores coas funcións printf e sprintf:
1 <?php 2 3 define('CADEA_PRESENTACION','Ola usuario %s'); 4 5 printf(CADEA_PRESENTACION,'Angel'); 6 ?>
Variables
- NOTA: Esta sección está asociada á realización do EXERCICIO 2.
- A diferenza das constantes, as variables poden cambiar o seu valor ao longo do programa.
- Non é necesario definilas nin declaralas.
- Distinguen maiúsculas de minúsculas no seu nome. '$var' é unha variable e '$Var' é outra variable diferente.
- A primeira letra do nome dunha variable debe ser un guión baixa ou unha letra. Non pode ser un número.
- Identifícanse por medio do símbolo $.
Nota: A pesares de que non é obrigatorio declaralas, eu aconsello establecer un valor ao comenzo da páxina e comentar o seu propósito, xa que pode suceder que utilicemos unha variable e despois cambiemos algunha letra da mesma, pasando a manexar outra variable diferente. Desta forma podemos ter una referencia ao nome da variable.
- Exemplo de código:
1 <?php 2 $varCadea="Isto é un variable de cadea"; 3 $varNumero=50; 4 5 echo $varCadea . "<br />"; 6 echo $varNumero . "<br />"; 7 8 ?>
- PHP é unha linguaxe debilmente tipada. Quero isto dicir que as variables non se definen de ningún tipo, se non que o tipo vai depender do contido da variable.
- Así, por exemplo, vou asinar a mesma variable diferentes tipos de datos e funcionará igualmente.
1 <?php 2 3 $varTipos=5; 4 echo $varTipos . "<br />"; 5 $varTipos='Cadea'; 6 echo $varTipos . "<br />"; 7 $varTipos=3.15454; 8 echo $varTipos . "<br />"; 9 $varTipos=true; 10 echo $varTipos . "<br />"; 11 ?>
- Dependendo do contido que teñan, as variables poden ser dun destes tipos escalares:
- integer: Os integers, ou enteiros, poden ter distintos valores numéricos enteiros que se expresan con diferentes notacións.
- $variable = 18; // Número entero positivo
- $variable = -18; // Número entero negativo
- $variable = 0x12; // Notación hexadecimal, en principio no la utilizaremos
- float ou double: Este tipo de datos son os números de punto flotante aos que normalmente chamamos números decimais, por exemplo, 9.876. Ambos teñen moita precisión, pero double é o máis preciso (con máis decimais). A sintaxe para utilizalos é bastante simple:
- $variable = 9.876;
- string: O tipo de datos string, tamén coñecido como cadea de caracteres, exprésase coa seguinte sintaxe:
- $variable = "Isto é unha cadea";
- boolean: Trátase dun tipo lóxico. Os seus posibles valores son true (verdadeiro) ou false (falso).
- $variable = true;
- $variable = false;
- Existen máis tipos como podemos ver no seguinte enlace: http://php.net/manual/es/language.types.intro.php
Variables dentro das funcións que xeran código
- Anteriormente contamos que había unha diferenza entre utilizar comillas dobres ou simples na función echo.
- Vexamos agora esta diferenza no uso de variables.
- Se usamos unha variable dentro da función echo:
- Con comillas dobres, a variable será substituída polo seu valor. Se expande.
- Con comillas simples, xerará a cadea $variable.
- Por exemplo:
1 <?php 2 $var = "Isto é unha variable de cadea"; 3 4 echo "A variable var con \" vale: $var<br/>"; 5 echo 'A variable var con \' vale: $var<br />'; 6 ?>
- Dará como resultado:
1 A variable var con " vale: Isto é unha variable de cadea 2 A variable var con ' vale: $var
Funcións
- PHP ten unha multitude de funcións para facernos a vida máis sinxela á hora de programar.
- Aconsello antes de 'programar' algo cos valores das variables (tipo dividir unha frase en palabras, quitar espazo en branco, redondeo, número máis alto de varios,...) consultar as seguintes funcións:
Ámbito
- Máis información no enlace seguinte: http://php.net/manual/es/language.variables.scope.php
- O ámbito é un concepto que fai referencia á 'visibilidade' dunha variable dentro dun programa.
- Normalmente, en outras linguaxes de programación, unha variable definida a nivel de programa é visible para todas as funcións dentro dese programa. En PHP non pasa así.
- Aínda que non vimos como crear funcións en PHP as introduciremos neste punto para explicar os ámbitos.
- Vexamos un exemplo:
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es"> 4 <head> 5 <meta charset="utf-8" /> 6 <title>Exemplos de códigos php</title> 7 </head> 8 <?php 9 function modificarVar(){ 10 11 $var=10; 12 printf('$var--->%d despois de ser modificada. Impreso dentro da función.<br/>',$var); // PREGUNTA: Por que printf leva comillas simples nesta orde ? 13 14 } 15 ?> 16 <body> 17 <?php 18 19 $var = 100; // Isto é unha variable de cadea 20 21 modificarVar(); 22 printf('$var--->%d despois de ser modificada.Impreso fora da función.<br/>',$var); 23 24 ?> 25 </body> 26 </html>
- O resultado será isto:
1 $var--->10 despois de ser modificada. Impreso dentro da función. 2 $var--->100 despois de ser modificada.Impreso fora da función.
- Como vemos, despois de chamar á función, imprimimos o valor da variable $var, e non imprime o valor modificados, se non o valor orixinal.
- En PHP para poder modificar o valor dunha variable a nivel GLOBAL temos dúas formas:
- Definindo novamente a variable dentro da función antepoñendo o prefixo global.
- Acceder a dita variable có array $GLOBALS[nome_variable]. O nome da variable non leva '$' dentro do array.
- Vexamos o mesmo exemplo aplicando as dúas solucións:
1 <?php 2 function modificarVar(){ 3 4 global $var; 5 6 $var=10; 7 printf('$var--->%d despois de ser modificada. Impreso dentro da función.<br/>',$var); 8 9 } 10 ?>
1 <?php 2 function modificarVar(){ 3 4 $GLOBALS['var']=10; 5 printf('$var--->%d despois de ser modificada. Impreso dentro da función.<br/>',$GLOBALS['var']); 6 7 } 8 ?>
- Nota: Fixarse que a variable $var dentro da función non existe. Se intentamos imprimila non terá valor asinado. Poderíamos traballar cunha variable $var dentro da función, pero sería diferente á $GLOBALS['var'].
- Nos dous casos anteriores o resultado será isto:
1 $var--->10 despois de ser modificada. Impreso dentro da función. 2 $var--->10 despois de ser modificada.Impreso fora da función.
Comprobación de definición e asignación
- En PHP temos dúas funcións para saber se unha variable está definida / ten valor asinado.
- Función isset($var): Devolve TRUE se var existe e ten un valor distinto de NULL; FALSE en caso contrario.
- empty($var): Devolve FALSE se var existe e ten un valor no baleiro, distinto de cero. Doutro modo devolve TRUE.
- As seguintes expresións son consideradas como baleiras:
- "" (una cadena vacía)
- 0 (0 como un integer)
- 0.0 (0 como un float)
- "0" (0 como un string)
- NULL
- FALSE
- array() (un array balairo)
- $var; (unha variable declarada, pero sen un valor)
- Vexamos un exemplo:
1 <?php 2 3 $var1 = 100; 4 5 printf("Valor de var1: %s<br/>",$var1); 6 printf("isset: %b<br/>",isset($var1)); 7 printf("empty: %b<br/>",empty($var1)); 8 9 $var1 = null; 10 11 printf("Valor de var1: null<br/>"); 12 printf("isset: %b<br/>",isset($var1)); 13 printf("empty: %b<br/>",empty($var1)); 14 15 $var1 = ''; 16 17 printf("Valor de var1: %s<br/>","''"); 18 printf("isset: %b<br/>",isset($var1)); 19 printf("empty: %b<br/>",empty($var1)); 20 21 22 // Comprobamos agora o que vale unha variable non definida.... 23 printf("Valor de var2: %s<br/>","sen asinar"); 24 printf("isset: %b<br/>",isset($var2)); 25 printf("empty: %b<br/>",empty($var2)); 26 27 ?>
- Da como resultado:
Valor de var1: 100 isset: 1 empty: 0 Valor de var1: null isset: 0 empty: 1 Valor de var1: '' isset: 1 empty: 1 Valor de var2: sen asinar isset: 0 empty: 1
- Nota: Estas funcións serán utilizadas para comprobar se os datos dun formulario están cubertos ou non.
-- Ángel D. Fernández González -- (2016).